VhdiGetVolumeNumber

NTSTATUS __stdcall VhdiGetVolumeNumber(
        PVOID DiskHandle,
        UINT64 DiskNumber,
        UINT64 PartitionNumber,
        UINT64 *VolumeNumber){
  void *v4; 
  NTSTATUS inited; 
  void *FileHandle; 
  struct _UNICODE_STRING DestinationString; 
  struct _IO_STATUS_BLOCK IoStatusBlock; 
  struct _OBJECT_ATTRIBUTES ObjectAttributes; 
  __int128 OutputBuffer; 
  int v13; 
  wchar_t pszDest[56]; 
  v4 = 0i64;
  v13 = 0;
  FileHandle = 0i64;
  IoStatusBlock = 0i64;
  memset(&ObjectAttributes, 0, sizeof(ObjectAttributes));
  OutputBuffer = 0i64;
  DestinationString = 0i64;
  if( DiskHandle && VolumeNumber )
  {
    inited = RtlStringCbPrintfW(pszDest, 0x64ui64, (WCHAR *)L"\\Device\\Harddisk%d\\Partition%d");
    if( inited >= 0 )
    {
      inited = RtlInitUnicodeStringEx(&DestinationString, pszDest);
      if( inited >= 0 )
      {
        ObjectAttributes.RootDirectory = 0i64;
        ObjectAttributes.ObjectName = &DestinationString;
        ObjectAttributes.Length = 48;
        ObjectAttributes.Attributes = 576;
        *(_OWORD *)&ObjectAttributes.SecurityDescriptor = 0i64;
        inited = ZwOpenFile((UNICODE_STRING *)&FileHandle, (PWCHAR)0xC0100000i64);
        if( inited >= 0 )
        {
          inited = ZwDeviceIoControlFile(
                     FileHandle,
                     0i64,
                     0i64,
                     0i64,
                     &IoStatusBlock,
                     0x56001Cu,
                     0i64,
                     0,
                     &OutputBuffer,
                     0x14u);
          if( inited >= 0 )
            *(_DWORD *)VolumeNumber = OutputBuffer;
        }
      }
    }
    v4 = FileHandle;
  }
  else
  {
    inited = -1073741811;
  }
  if( v4 )
    ZwClose(v4);
  return inited;
}

Referenced by:

VhdiInitializeBootDisk