VhdiQueryVolumeVhdFilePath
WCHAR *__stdcall VhdiQueryVolumeVhdFilePath(VOID *VolumeHandle){
_HANDLE v1;
ULONG OutputBufferLength;
VOID **OutputBuffer;
VOID **v5;
NTSTATUS v6;
_IO_STATUS_BLOCK IoStatusBlock;
v1 = (int)VolumeHandle;
IoStatusBlock = 0i64;
if( !VolumeHandle )
return 0i64;
for( OutputBufferLength = 520; ; OutputBufferLength *= 2 )
{
OutputBuffer = ExAllocatePoolWithTag(0x200ui64, OutputBufferLength, 1113876566i64);
v5 = OutputBuffer;
if( !OutputBuffer )
break;
v6 = ZwDeviceIoControlFile(v1, 0, 0i64, 0i64, &IoStatusBlock, 0x2D5928u, 0i64, 0, OutputBuffer, OutputBufferLength);
if( v6 != -1073741789 )
goto LABEL_8;
ExFreeHeapPool(v5);
}
v6 = -1073741801;
LABEL_8:
if( v6 < 0 )
{
if( v5 )
{
ExFreeHeapPool(v5);
return 0i64;
}
}
return(WCHAR *)v5;
}Referenced by:
VhdiInitializeBootDisk