111 if (
Address >= FxDriverGlobals->ImageAddress &&
113 FxDriverGlobals->ImageSize)) {
129 ULONG modulesSize = 0;
133 ULONG numberOfModules;
177 if (
NULL == modules) {
199 for (
i=0;
i < numberOfModules;
i++) {
201 if (addressInImage >=
module->BasicInfo.ImageBase &&
205 *ImageBase =
module->BasicInfo.ImageBase;
206 *ImageSize =
module->ImageSize;
218 if (modules !=
NULL) {
253 if (FxDriverGlobals->FxForceLogsInMiniDump) {
269 case KERNEL_APC_PENDING_DURING_EXIT:
274 case KMODE_EXCEPTION_NOT_HANDLED:
275 case SYSTEM_THREAD_EXCEPTION_NOT_HANDLED:
276 case KERNEL_MODE_EXCEPTION_NOT_HANDLED:
281 case PAGE_FAULT_IN_NONPAGED_AREA:
286 case IRQL_NOT_LESS_OR_EQUAL:
287 case DRIVER_IRQL_NOT_LESS_OR_EQUAL:
299 FxDriverGlobals->FxForceLogsInMiniDump =
TRUE;
365 BugCheckCallbackRecord);
423 dumpData->
Guid = WdfDumpGuid;
441 enableDriverTracking = FxDriverGlobals->FxTrackDriverForMiniDumpLog;
442 FxDriverGlobals->FxTrackDriverForMiniDumpLog =
FALSE;
447 callbackRecord = &FxDriverGlobals->BugCheckCallbackRecord;
456 FxDriverGlobals->ImageAddress =
NULL;
457 FxDriverGlobals->ImageSize = 0;
460 &FxDriverGlobals->ImageAddress,
461 &FxDriverGlobals->ImageSize))) {
483 if (
NULL == funcPtr) {
490 if (enableDriverTracking) {
493 FxDriverGlobals->FxTrackDriverForMiniDumpLog =
TRUE;
505 funcPtr(callbackRecord,
507 KbCallbackSecondaryDumpData,
508 (
PUCHAR)FxDriverGlobals->Public.DriverName);
524 callbackRecord = &FxDriverGlobals->BugCheckCallbackRecord;
538 if (
NULL == funcPtr) {
542 funcPtr(callbackRecord);
548 if (FxDriverGlobals->FxTrackDriverForMiniDumpLog) {
621 dumpData->
Guid = WdfDumpGuid2;
662 if (
NULL == funcPtr) {
709 funcPtr(callbackRecord,
711 KbCallbackSecondaryDumpData,
750 if (
NULL == funcPtr) {
754 funcPtr(callbackRecord);
793 FxDriverGlobals->BugCheckDriverInfoIndex = 0;
827 if (
NULL == driverInfo) {
850 oldDriverInfo =
NULL;
864 driverInfo->
Version = FxDriverGlobals->WdfBindInfo->Version;
867 sizeof(FxDriverGlobals->Public.DriverName));
869 FxDriverGlobals->Public.DriverName,
876 FxDriverGlobals->BugCheckDriverInfoIndex =
896 ULONG driverIndex = 0;
897 ULONG shiftCount = 0;
905 driverIndex = FxDriverGlobals->BugCheckDriverInfoIndex;
906 if (0 == driverIndex) {
947 if (shiftCount > 0) {
960 BugCheckDriverInfoIndex--;
1013 ULONG paddedSize = 0;
1040 if (funcPtr !=
NULL) {
1050 if (funcPtr !=
NULL) {
1092 if (funcPtr !=
NULL) {
1097 ASSERT ((paddedSize & (paddedSize - 1)) == 0);
1141 paddedSize *
m_Number + paddedSize,
NTSTATUS NTAPI AuxKlibQueryModuleInformation(_In_ PULONG InformationLength, _In_ ULONG SizePerModule, _Inout_ PAUX_MODULE_EXTENDED_INFO ModuleInfo)
NTSTATUS NTAPI AuxKlibInitialize(VOID)
struct _KBUGCHECK_DATA KBUGCHECK_DATA
struct _AUX_MODULE_EXTENDED_INFO AUX_MODULE_EXTENDED_INFO
NTSTATUS AuxKlibGetBugCheckData(_Inout_ PKBUGCHECK_DATA BugCheckData)
static __inline VOID MxFreePool(__in PVOID Ptr)
static __inline PVOID MxAllocatePoolWithTag(__in POOL_TYPE PoolType, __in SIZE_T NumberOfBytes, __in ULONG Tag)
#define STATUS_NOT_SUPPORTED
#define NT_SUCCESS(StatCode)
#define ExAllocatePoolWithTag(hernya, size, tag)
struct _FX_DUMP_DRIVER_INFO_ENTRY * PFX_DUMP_DRIVER_INFO_ENTRY
#define EXP_ALIGN_UP_PTR_ON_BOUNDARY(_length, _alignment)
#define EXP_ALIGN_DOWN_ON_BOUNDARY(_size, _alignment)
#define FX_DUMP_DRIVER_INFO_INCREMENT
#define FX_MAX_DUMP_DRIVER_INFO_COUNT
struct _FX_DUMP_DRIVER_INFO_ENTRY FX_DUMP_DRIVER_INFO_ENTRY
#define FX_DRIVER_TRACKER_MAX_CPUS
#define EXP_IS_PTR_ALIGNED_ON_BOUNDARY(_pointer, _alignment)
VOID FxUnregisterBugCheckCallback(__inout PFX_DRIVER_GLOBALS FxDriverGlobals)
VOID FxCacheBugCheckDriverInfo(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
_Must_inspect_result_ NTSTATUS FxpGetImageBase(__in PDRIVER_OBJECT DriverObject, __out PVOID *ImageBase, __out PULONG ImageSize)
KBUGCHECK_REASON_CALLBACK_ROUTINE FxpLibraryBugCheckCallback
KBUGCHECK_REASON_CALLBACK_ROUTINE FxpBugCheckCallback
VOID FxPurgeBugCheckDriverInfo(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
_Must_inspect_result_ BOOLEAN FxpBugCheckCallbackFilter(__inout PFX_DRIVER_GLOBALS FxDriverGlobals)
_Must_inspect_result_ BOOLEAN FxpIsAddressKnownToWdf(__in PVOID Address, __in PFX_DRIVER_GLOBALS FxDriverGlobals)
VOID FxUninitializeBugCheckDriverInfo()
VOID FxRegisterBugCheckCallback(__inout PFX_DRIVER_GLOBALS FxDriverGlobals, __in PDRIVER_OBJECT DriverObject)
VOID FxInitializeBugCheckDriverInfo()
PFX_DRIVER_GLOBALS fxDriverGlobals
BOOLEAN(STDCALL * PFN_KE_DEREGISTER_BUGCHECK_REASON_CALLBACK)(__in PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecords)
ULONG(STDCALL * PFN_KE_GET_RECOMMENDED_SHARED_DATA_ALIGNMENT)(VOID)
BOOLEAN(STDCALL * PFN_KE_REGISTER_BUGCHECK_REASON_CALLBACK)(__in PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord, __in PKBUGCHECK_REASON_CALLBACK_ROUTINE CallbackRoutine, __in KBUGCHECK_CALLBACK_REASON Reason, __in PUCHAR Component)
ULONG(STDCALL * PFN_KE_QUERY_MAXIMUM_PROCESSOR_COUNT_EX)(__in USHORT GroupNumber)
ULONG(STDCALL * PFN_KE_QUERY_MAXIMUM_PROCESSOR_COUNT)(VOID)
struct _WDF_IFR_HEADER * PWDF_IFR_HEADER
struct _WDF_IFR_HEADER WDF_IFR_HEADER
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
PVOID PVOID PWCHAR PVOID USHORT PULONG Reason
#define _Must_inspect_result_
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define UNREFERENCED_PARAMETER(P)
#define ALL_PROCESSOR_GROUPS
NTSTRSAFEAPI RtlStringCbCopyA(_Out_writes_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PSTR pszDest, _In_ size_t cbDest, _In_ NTSTRSAFE_PCSTR pszSrc)
FxLibraryGlobalsType FxLibraryGlobals
FX_DRIVER_TRACKER_CACHE_AWARE DriverTracker
PFX_DUMP_DRIVER_INFO_ENTRY BugCheckDriverInfo
RTL_OSVERSIONINFOEXW OsVersionInfo
KBUGCHECK_REASON_CALLBACK_RECORD BugCheckCallbackRecord
ULONG BugCheckDriverInfoCount
PFX_DRIVER_GLOBALS BestDriverForDumpLog
ULONG BugCheckDriverInfoIndex
MxLockNoDynam FxDriverGlobalsListLock
BOOLEAN FxTrackDriverForMiniDumpLog
volatile PFX_DRIVER_GLOBALS FxDriverGlobals
_Must_inspect_result_ NTSTATUS Initialize()
PFX_DRIVER_TRACKER_ENTRY m_DriverUsage
_Must_inspect_result_ __inline PFX_DRIVER_GLOBALS GetCurrentTrackedDriver()
_Must_inspect_result_ NTSTATUS Register(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
struct _FX_DRIVER_TRACKER_CACHE_AWARE::_FX_DRIVER_TRACKER_ENTRY * PFX_DRIVER_TRACKER_ENTRY
__inline PFX_DRIVER_TRACKER_ENTRY GetProcessorDriverEntryRef(__in ULONG Index)
struct _FX_DRIVER_TRACKER_CACHE_AWARE::_FX_DRIVER_TRACKER_ENTRY FX_DRIVER_TRACKER_ENTRY
VOID Deregister(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
PFX_DRIVER_GLOBALS FxDriverGlobals
CHAR DriverName[WDF_DRIVER_GLOBALS_NAME_LEN]
PKBUGCHECK_REASON_CALLBACK_ROUTINE CallbackRoutine
_In_ ULONG MaximumAllowed
_Out_ ULONG OutBufferLength
PVOID NTAPI MmGetSystemRoutineAddress(IN PUNICODE_STRING SystemRoutineName)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define RtlMoveMemory(Destination, Source, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_INVALID_PARAMETER
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
#define WDF_PTR_ADD_OFFSET(_ptr, _offset)
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
#define KeInitializeCallbackRecord(CallbackRecord)
_In_ struct _KBUGCHECK_REASON_CALLBACK_RECORD _Inout_ PVOID ReasonSpecificData
_In_ struct _KBUGCHECK_REASON_CALLBACK_RECORD * Record
KBUGCHECK_CALLBACK_REASON
struct _KBUGCHECK_SECONDARY_DUMP_DATA * PKBUGCHECK_SECONDARY_DUMP_DATA