IopReferenceDriverObjectByName

_DRIVER_OBJECT *__stdcall IopReferenceDriverObjectByName(_UNICODE_STRING *DriverName){
  NTSTATUS v2; 
  UINT64 DesiredAccess; 
  _OBJECT_ATTRIBUTES ObjectAttributes; 
  VOID *Handle; 
  PVOID Object; 

  *(&ObjectAttributes.Length + 1) = 0;
  *(&ObjectAttributes.Attributes + 1) = 0;
  Handle = 0i64;
  if( !DriverName->Length )
    return 0i64;
  ObjectAttributes.ObjectName = DriverName;
  LODWORD(DesiredAccess) = 128;
  ObjectAttributes.Length = 48;
  ObjectAttributes.RootDirectory = 0i64;
  ObjectAttributes.Attributes = 576;
  *(_OWORD *)&ObjectAttributes.SecurityDescriptor = 0i64;
  if( ObOpenObjectByName(&ObjectAttributes, IoDriverObjectType, 0, 0i64, DesiredAccess, 0i64, &Handle) < 0 )
    return 0i64;
  Object = 0i64;
  v2 = ObReferenceObjectByHandle(Handle, 0i64, IoDriverObjectType, 0, &Object, 0i64);
  ZwClose((_HANDLE)Handle);
  if( v2 >= 0 )
    return(_DRIVER_OBJECT *)Object;
  else
    return 0i64;
}

Referenced by:

IopInitializeSystemDrivers
PiGetDefaultMessageString
PipCallDriverAddDeviceQueryRoutine