ExpGetDriveGeometry

NTSTATUS __stdcall ExpGetDriveGeometry(UINT64 DiskNumber, _DISK_GEOMETRY *DiskGeometry){
  unsigned int v3; 
  VOID **PoolWithTag; 
  wchar_t *v5; 
  int v6; 
  UINT64 ShareAccess; 
  UINT64 OpenOptions; 
  _UNICODE_STRING DestinationString; 
  _IO_STATUS_BLOCK IoStatusBlock; 
  _OBJECT_ATTRIBUTES ObjectAttributes; 
  VOID *FileHandle; 

  *(&ObjectAttributes.Length + 1) = 0;
  *(&ObjectAttributes.Attributes + 1) = 0;
  v3 = DiskNumber;
  FileHandle = 0i64;
  DestinationString = 0i64;
  PoolWithTag = ExAllocatePoolWithTag(0x200ui64, 0x4Cui64, 1920364101i64);
  v5 = (wchar_t *)PoolWithTag;
  if( !PoolWithTag )
    return -1073741670;
  swprintf_s((WCHAR *)PoolWithTag, 0x26ui64, (WCHAR *)L"\\Device\\Harddisk%lu\\Partition0", v3);
  RtlInitUnicodeString(&DestinationString, v5);
  ObjectAttributes.RootDirectory = 0i64;
  LODWORD(OpenOptions) = 96;
  ObjectAttributes.ObjectName = &DestinationString;
  ObjectAttributes.Length = 48;
  ObjectAttributes.Attributes = 576;
  LODWORD(ShareAccess) = 3;
  *(_OWORD *)&ObjectAttributes.SecurityDescriptor = 0i64;
  IoStatusBlock = 0i64;
  v6 = ZwOpenFile(&FileHandle, 0x100080ui64, &ObjectAttributes, &IoStatusBlock, ShareAccess, OpenOptions);
  if( v6 >= 0 )
  {
    v6 = ZwDeviceIoControlFile(
           (_HANDLE)FileHandle,
           0,
           0i64,
           0i64,
           &IoStatusBlock,
           0x70000u,
           0i64,
           0,
           DiskGeometry,
           0x18u);
    ZwClose((_HANDLE)FileHandle);
    if( v6 >= 0 && DiskGeometry->BytesPerSector < 0x200 )
      v6 = -1073741823;
  }
  ExFreePoolWithTag(v5, 0);
  return v6;
}

Referenced by:

ExpCreateOutputEFI
ExpTranslateEfiPath