SmKmSendDeviceControl
NTSTATUS __stdcall SmKmSendDeviceControl(
_DEVICE_OBJECT *DeviceObject,
VOID *OutputBuffer,
UINT64 OutputBufferSize,
INT64 a4,
PVOID OutputBuffera,
ULONG OutputBufferLength){
PIRP *v7;
NTSTATUS result;
_IO_STATUS_BLOCK IoStatusBlock;
char Object[40];
IoStatusBlock = 0i64;
KeInitializeEvent((INT64)Object, 0, 0);
v7 = IoBuildDeviceIoControlRequest(
0x4D0000u,
(PDEVICE_OBJECT)OutputBuffer,
0i64,
0,
OutputBuffera,
OutputBufferLength,
0,
(PKEVENT)Object,
&IoStatusBlock);
if( !v7 )
return -1073741670;
result = IofCallDriver((UINT64)OutputBuffer, (UINT64)v7);
if( result == 259 )
{
KeWaitForSingleObject((UINT64)Object, 0, 0, 0, 0i64);
return IoStatusBlock.Status;
}
return result;
}Referenced by:
SmKmVolumeQueryUniqueId