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