次の方法で共有


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(...);
}

要件

要件
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe

こちらもご覧ください

デバッガーがアタッチされているかどうかの判別

KD_DEBUGGER_ENABLED

KD_DEBUGGER_NOT_PRESENT