IoGetDeviceObjectPointer

NTSTATUS __stdcall IoGetDeviceObjectPointer(
        UNICODE_STRING *ObjectName,
        UINT64 DesiredAccess,
        FILE_OBJECT **FileObject,
        DEVICE_OBJECT **DeviceObject){
  _ETHREAD *CurrentThread; 
  int v7; 
  _FILE_OBJECT *v8; 
  PVOID Object; 
  struct _IO_STATUS_BLOCK IoStatusBlock; 
  struct _OBJECT_ATTRIBUTES ObjectAttributes; 
  UNICODE_STRING FileHandle; 
  *(&ObjectAttributes.Length + 1) = 0;
  memset(&ObjectAttributes.Attributes + 1, 0, 20);
  *(_QWORD *)&FileHandle.Length = 0i64;
  ObjectAttributes.RootDirectory = 0i64;
  ObjectAttributes.Length = 48;
  IoStatusBlock = 0i64;
  ObjectAttributes.ObjectName = ObjectName;
  ObjectAttributes.Attributes = IopCaseInsensitive != 0 ? 576 : 512;
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --*((_WORD *)CurrentThread + 242);
  v7 = ZwOpenFile(&FileHandle, (PWCHAR)DesiredAccess);
  if( v7 >= 0 )
  {
    Object = 0i64;
    v7 = ObReferenceObjectByHandle(*(HANDLE *)&FileHandle.Length, 0, (POBJECT_TYPE)IoFileObjectType, 0, &Object, 0i64);
    if( v7 >= 0 )
    {
      v8 = (_FILE_OBJECT *)Object;
      *FileObject = (FILE_OBJECT *)Object;
      *DeviceObject = IoGetRelatedDeviceObject(v8);
    }
    ZwClose(*(HANDLE *)&FileHandle.Length);
  }
  KeLeaveCriticalRegion();
  return v7;
}

Referenced by:

HalpDynamicDeviceInterfaceNotification
IoVolumeDeviceNameToGuidPath
IoVolumeDeviceToDosName
IopAssignBootDriveLetter
IopCreateArcNamesCd
IopCreateArcNamesDisk
IopGetBootDiskInformation
IopOpenSystemVariableDevice
NtApphelpCacheControl
PopRegisterCoolingExtensionProtection
SbpAddTransportToInstance
SbpStartLanman
VhdiMountVhdFile