IoSynchronousCallDriver
NTSTATUS __stdcall IoSynchronousCallDriver(PDEVICE_OBJECT DeviceObject, PIRP Irp){
_IO_STACK_LOCATION *CurrentStackLocation;
NTSTATUS result;
int Object[2];
_QWORD v6[4];
Object[1] = 0;
Object[0] = 393216;
v6[1] = v6;
v6[0] = v6;
CurrentStackLocation = Irp->Tail.CurrentStackLocation;
CurrentStackLocation[-1].CompletionRoutine = (int(__fastcall *)(_DEVICE_OBJECT *, _IRP *, void *))SmKmGenericCompletion;
CurrentStackLocation[-1].Context = Object;
CurrentStackLocation[-1].Control = -32;
result = IofCallDriver((UINT64)DeviceObject, (UINT64)Irp);
if( result == 259 )
{
KeWaitForSingleObject((UINT64)Object, 5, 0, 0, 0i64);
return Irp->IoStatus.Status;
}
return result;
}Referenced by:
FsRtlGetFileExtents
FsRtlMdlReadEx
FsRtlPrepareMdlWriteEx
IoForwardIrpSynchronously
NT_DISK::Read
NT_DISK::Write
PopAcquireCoolingInterface
PopBatteryInitialize
PopBatteryQueryEstimatedTime
PopBatteryQueryStatus
PopBatteryReadTag
WmipGetFilePDO