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