KdRefreshDebuggerNotPresent 函数 (wdm.h)
KdRefreshDebuggerNotPresent 宏刷新 KD_DEBUGGER_NOT_PRESENT 全局内核变量的值。
语法
BOOLEAN KdRefreshDebuggerNotPresent();
返回值
KdRefreshDebuggerNotPresent 返回KD_DEBUGGER_NOT_PRESENT的值。
言论
调用 KdRefreshDebuggerNotPresent 时,它会强制更新KD_DEBUGGER_NOT_PRESENT的值以反映内核调试器当前是否已附加。 此更新的值也用作此例程的返回值。
如果最近附加或删除了内核调试器,则KD_DEBUGGER_NOT_PRESENT的值可能不会反映新状态。 如果怀疑发生这种情况,则应调用 KdRefreshDebuggerNotPresent 以刷新此变量的值。 此调用后,可以使用KD_DEBUGGER_NOT_PRESENT的值或 KdRefreshDebuggerNotPresent 的返回值 来确定内核调试器是否存在。
KD_DEBUGGER_NOT_PRESENT可由 Windows 或任何其他内核模式二进制文件修改。 因此,KdRefreshDebuggerNotPresent 的最新返回值可能与KD_DEBUGGER_NOT_PRESENT的当前值不匹配。
以下示例演示如何使用 KdRefreshDebuggerNotPresent:
if (KdRefreshDebuggerNotPresent() == FALSE)
{
// A kernel debugger is active.
DbgPrint("A problem occurred\n");
DbgBreakPoint();
}
else
{
// No kernel debugger attached, or kernel debugging not enabled.
KeBugCheckEx(...);
}
要求
要求 | 价值 |
---|---|
目标平台 | 普遍 |
标头 | wdm.h (包括 Wdm.h、Ntddk.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |