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

另请参阅

确定调试器是否已附加

KD_DEBUGGER_ENABLED

KD_DEBUGGER_NOT_PRESENT