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) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |