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

另请参阅

确定是否已附加调试器

KD_DEBUGGER_ENABLED

KD_DEBUGGER_NOT_PRESENT