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 |