Функция 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 (include Wdm.h, Ntddk.h) |
библиотеки | NtosKrnl.lib |
DLL | NtosKrnl.exe |