RawPerformDevIoCtrl
INT64 __stdcall RawPerformDevIoCtrl(DEVICE_OBJECT *Device, PVOID OutputBuffer){
PIRP v3;
INT64 result;
struct _IO_STATUS_BLOCK IoStatusBlock;
struct _KEVENT Event;
PVOID v7;
IoStatusBlock.Pointer = 0i64;
IoStatusBlock.Information = 0i64;
memset(&Event, 0, sizeof(Event));
KeInitializeEvent(&Event, NotificationEvent, 0);
v3 = IoBuildDeviceIoControlRequest(
0x70000u,
(PDEVICE_OBJECT)OutputBuffer,
0i64,
0,
v7,
0x18u,
0,
&Event,
&IoStatusBlock);
if( !v3 )
return 3221225626i64;
*(_BYTE *)(*((_QWORD *)v3 + 23) - 70i64) |= 2u;
LODWORD(result) = IofCallDriver((PDEVICE_OBJECT)OutputBuffer, v3);
if( (_DWORD)result == 259 )
{
KeWaitForSingleObject(&Event, Executive, 0, 0, 0i64);
return(unsigned int)IoStatusBlock.Status;
}
return result;
}Referenced by:
RawQueryFileSystemInformation