VerifierBugCheckIfAppropriate
VOID __stdcall VerifierBugCheckIfAppropriate(
UINT64 Code,
ULONG_PTR Param1,
ULONG_PTR Param2,
ULONG_PTR Param3,
ULONG_PTR Param4,
UINT64 a6){
void *v6;
void *v7;
void *v8;
UINT32 v9;
unsigned __int8 CurrentIrql;
unsigned int v11;
__int64 *v12;
__int64 v13;
v6 = *(void **)&Param3;
v7 = *(void **)&Param2;
v8 = *(void **)&Param1;
v9 = Code;
CurrentIrql = KeGetCurrentIrql();
v11 = 0;
if( (MmVerifierData & 0x400000) != 0 )
{
if( CurrentIrql > 2u )
return;
if( ViXdvTipUtils )
{
if( (VfFlightOptions & 1) == 0 || !(*(unsigned int(__fastcall **)(_QWORD))(ViXdvTipUtils + 16))(v9) )
{
(*(void(__fastcall **)(_QWORD, void *, void *, void *, _QWORD))(ViXdvTipUtils + 8))(
v9,
v8,
v7,
v6,
*(_QWORD *)&Param4);
return;
}
}
else if( (VfFlightOptions & 1) == 0 )
{
return;
}
}
v12 = ViVerifierBugcheckAttributes;
while( *(_DWORD *)v12 != v9 || (void *)*((unsigned int *)v12 + 1) != v8 )
{
++v11;
v12 = (__int64 *)((char *)v12 + 12);
if( v11 >= 0xD )
goto LABEL_13;
}
if( VfVerifyMode >= *((_DWORD *)v12 + 2) )
LABEL_13:
KeBugCheckEx(v9, v8, v7, v6, *(PVOID *)&Param4);
v13 = 5i64 * (((unsigned __int8)_InterlockedExchangeAdd(&ViBugcheckLogIndex, 1u) + 1) & 0xF);
*((_QWORD *)&ViBugcheckLog + v13 + 4) = *(_QWORD *)&Param4;
*((_DWORD *)&ViBugcheckLog + 2 * v13) = v9;
*((_QWORD *)&ViBugcheckLog + v13 + 1) = v8;
*((_QWORD *)&ViBugcheckLog + v13 + 2) = v7;
*((_QWORD *)&ViBugcheckLog + v13 + 3) = v6;
}Referenced by:
ExAllocatePoolSanityChecks
ExFreePoolSanityChecks
IovCompleteRequest
IovFreeIrpPrivate
IovInitializeTimer
MdlInvariantPostProcessing1
MdlInvariantPreProcessing1
MmCheckMapIoSpace
MmCheckMdlPages
VeAllocatePoolWithTagPriority
VerifierExAllocatePoolWithQuota
VerifierExAllocatePoolWithQuotaTag
VerifierExDeleteResourceLite
VerifierExInitializeLookasideListEx
VerifierExInitializeNPagedLookasideList
VerifierExInitializePagedLookasideList
VerifierExInitializeResourceLite
VerifierFreeTrackedPool
VerifierIoAllocateIrp
VerifierIoFreeMdl
VerifierIoInitializeRemoveLockEx
VerifierIoInitializeWorkItem
VerifierIoVolumeDeviceToDosName
VerifierKeAcquireInStackQueuedSpinLockAtDpcLevelCommon
VerifierKeEnterCriticalRegion
VerifierKeLeaveCriticalRegion
VerifierKeReleaseInStackQueuedSpinLockCommon
VerifierKeReleaseInStackQueuedSpinLockForDpcCommon
VerifierKeReleaseInStackQueuedSpinLockFromDpcLevelCommon
VerifierKeReleaseQueuedSpinLock
VerifierKeReleaseSpinLockFromDpcLevel
VerifierKeReleaseSpinLockFromDpcLevelNoReboot
VerifierKeSetEvent
VerifierMmAllocateContiguousMemory
VerifierMmAllocateContiguousMemorySpecifyCache
VerifierMmAllocateContiguousMemorySpecifyCacheNode
VerifierMmAllocateContiguousNodeMemory
VerifierMmAllocateNodePagesForMdlEx
VerifierMmAllocatePagesForMdl
VerifierMmAllocatePagesForMdlEx
VerifierMmBuildMdlForNonPagedPool
VerifierMmMapIoSpace
VerifierMmMapLockedPages
VerifierMmMapLockedPagesSpecifyCache
VerifierMmProbeAndLockPages
VerifierMmProbeAndLockProcessPages
VerifierMmUnlockPages
VerifierMmUnmapIoSpace
VerifierMmUnmapLockedPages
VerifierObReferenceObjectByHandle
VerifierObReferenceObjectByPointer
VerifierObfReferenceObject
VerifierPortExAllocatePoolWithQuotaTag
VerifierPortIoAllocateIrp
VfAllocateCommonBufferEx
VfAllocateCommonBufferWithBounds
VfCheckForLookaside
VfCheckForResource
VfCheckUserHandle
VfFailDeviceNode
VfFailDriver
VfFailSystemBIOS
VfFastIoCheckState
VfFastIoSnapState
VfIoCompletionCheckState
VfIrpDatabaseCheckExFreePool
VfPoolCheckForLeaks
VfRemLockReportBadReleaseAndWaitTag
VfRemLockReportBadReleaseTag
VfReportIssueWithOptions
VfTargetEtwUnregister
VfUtilCheckKernelAddress
VfUtilSynchronizationObjectSanityChecks
VfZwNotifyChangeKey
ViDevObjRemove
ViErrorFinishReport
ViExCheckAPCLevelOrBelow
ViExCheckAPCsDisabled
ViFreeTrackedPool
ViIrpCheckKernelAddressForIrp
ViKeAcquireSpinLockAtDpcLevelCommon
ViKeLowerIrqlSanityChecks
ViKeRaiseIrqlSanityChecks
ViKeReleaseSpinLockCommon
ViKeTryToAcquireSpinLockAtDpcLevelCommon
ViKeWaitSanityChecks
ViLookasideAdd
ViLookasideDelete
ViMmMapLockedPagesSanityChecks
ViMmValidateIrql
ViResourceAcquireSanityChecks
ViResourceReleaseSanityChecks
ViShutdownWatchdogExecuteDpc
ViTargetRemovingCheckContiguousMemory
ViTargetRemovingCheckEtwWmi
ViWdIrpTimedOut
ViZwCheckApcRequirement
ViZwCheckUnicodeString
ViZwCheckVirtualAddress