IoGetDeviceObjectPointer

NTSTATUS __stdcall IoGetDeviceObjectPointer(
        _UNICODE_STRING *ObjectName,
        UINT64 DesiredAccess,
        _FILE_OBJECT **FileObject,
        _DEVICE_OBJECT **DeviceObject){
  _ETHREAD *CurrentThread; 
  int v7; 
  PVOID v8; 
  _DEVICE_OBJECT *v9; 
  UINT64 ShareAccess; 
  UINT64 OpenOptions; 
  PVOID Object; 
  _IO_STATUS_BLOCK IoStatusBlock; 
  _OBJECT_ATTRIBUTES ObjectAttributes; 
  VOID *FileHandle; 

  *(&ObjectAttributes.Length + 1) = 0;
  memset(&ObjectAttributes.Attributes + 1, 0, 20);
  FileHandle = 0i64;
  ObjectAttributes.RootDirectory = 0i64;
  ObjectAttributes.Length = 48;
  IoStatusBlock = 0i64;
  ObjectAttributes.ObjectName = ObjectName;
  ObjectAttributes.Attributes = IopCaseInsensitive != 0 ? 576 : 512;
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --CurrentThread->Tcb.KernelApcDisable;
  LODWORD(OpenOptions) = 64;
  LODWORD(ShareAccess) = 3;
  v7 = ZwOpenFile(&FileHandle, DesiredAccess, &ObjectAttributes, &IoStatusBlock, ShareAccess, OpenOptions);
  if( v7 >= 0 )
  {
    Object = 0i64;
    v7 = ObReferenceObjectByHandle(FileHandle, 0i64, (_OBJECT_TYPE *)IoFileObjectType, 0, &Object, 0i64);
    if( v7 >= 0 )
    {
      v8 = Object;
      *FileObject = (_FILE_OBJECT *)Object;
      LODWORD(v9) = IoGetRelatedDeviceObject((INT64)v8);
      *DeviceObject = v9;
    }
    ZwClose((_HANDLE)FileHandle);
  }
  KeLeaveCriticalRegion();
  return v7;
}

Referenced by:

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