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