IoCancelIrp
VOID __stdcall IoCancelIrp(_KDPC *Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2){
UINT8 v5;
_DEVICE_OBJECT *v6;
void *v7;
UINT8 v8;
bool v9;
_IRP *v10;
if( ViVerifierEnabled
&& ((*(&stru_140CF2E80 + 1826) & 0xFFAFFFFF) != 0
|| (*(&stru_140CF2E80 + 7308) & 2) != 0
|| (*(&stru_140CF2E80 + 7308) & 4) != 0) )
{
IovCancelIrp((_IRP *)Dpc);
}
v5 = KeAcquireQueuedSpinLock(7i64, (INT64)DeferredContext, (INT64)SystemArgument1);
*((_BYTE *)&Dpc[1].0 + 4) = 1;
v7 = (void *)_InterlockedExchange64((volatile __int64 *)&Dpc[1].SystemArgument1, 0i64);
v8 = v5;
if( v7 )
{
if( SHIBYTE(Dpc[1].Number) > (char)(LOBYTE(Dpc[1].Number) + 1) )
KeBugCheckEx(0x48u, Dpc, v7, 0i64, 0i64);
v9 = ViVerifierEnabled == 0;
*((_BYTE *)&Dpc[1].0 + 5) = v5;
if( !v9
&& ((*(&stru_140CF2E80 + 1826) & 0xFFAFFFFF) != 0
|| (*(&stru_140CF2E80 + 7308) & 2) != 0
|| (*(&stru_140CF2E80 + 7308) & 4) != 0) )
{
IovpCancelRoutine(*((_DEVICE_OBJECT **)Dpc[2].DpcData + 5), (_IRP *)Dpc, v7, v6, v10);
}
else
{
((void(__fastcall *)(_QWORD, _KDPC *))v7)(*((_QWORD *)Dpc[2].DpcData + 5), Dpc);
}
if( KeGetCurrentIrql() == 2 && v8 != 2 )
KeBugCheckEx(0x11Bu, Dpc, v7, 0i64, 0i64);
}
else
{
KeReleaseQueuedSpinLock(LockQueueIoCancelLock, v5);
}
}Referenced by:
FsRtlKernelFsControlFile
FsRtlQueryInformationFile
FsRtlQueryKernelEaFile
FsRtlSetKernelEaFile
FsRtlpWaitOnIrp
IoCancelThreadIo
IopCancelAlertedRequest
IopCancelIrpsInCurrentThreadList
IopCancelIrpsInFileObjectList
IopCancelPendingEject
NtCancelIoFile
PopBatteryRemove
PopBatteryWorker
PopFanRemove
PopThermalPollingPowerSettingCallback
PopThermalReadCounters
PopThermalZoneDpc
PopThermalZoneRemove
PopThermalZoneTimerCallback
PopThermalZoneUpdateCoolingPolicy