KeRegisterBugCheckCallback 함수(wdm.h)
KeRegisterBugCheckCallback 루틴은 운영 체제에서 버그 검사 발급할 때 실행되는 BugCheckCallback 루틴을 등록합니다.
구문
BOOLEAN KeRegisterBugCheckCallback(
[out] PKBUGCHECK_CALLBACK_RECORD CallbackRecord,
[in] PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine,
[in, optional] PVOID Buffer,
[in] ULONG Length,
[in] PUCHAR Component
);
매개 변수
[out] CallbackRecord
이전에 KeInitializeCallbackRecord에서 초기화한 콜백 레코드에 대한 포인터로, 호출자가 페이지가 없는 스토리지를 제공합니다.
[in] CallbackRoutine
드라이버 제공 KBUGCHECK_CALLBACK_ROUTINE 콜백 함수에 대한 포인터입니다.
[in, optional] Buffer
비페이지 풀과 같이 상주 메모리에 있어야 하는 호출자 제공 버퍼에 대한 포인터입니다.
[in] Length
호출자가 할당한 버퍼의 크기(바이트)를 지정합니다.
[in] Component
호출자를 식별하는 null로 종료된 ANSI 문자열에 대한 포인터입니다. 이 문자열은 일반적으로 디바이스 드라이버의 이름 또는 해당 디바이스의 이름을 포함합니다.
반환 값
KeRegisterBugCheckCallback은 호출자가 제공한 루틴이 등록된 버그 검사 콜백 집합에 성공적으로 추가되면 TRUE를 반환하고, 그렇지 않으면 FALSE를 반환합니다.
설명
KeRegisterBugCheckCallback 루틴은 가장 간단한 종류의 버그 검사 콜백 루틴인 BugCheckCallback 루틴을 등록합니다.
KbCallbackDumpIo 및 KbCallbackAddPages 루틴과 같은 다른 종류의 버그 검사 콜백을 등록하려면 대신 KeRegisterBugCheckReasonCallback 루틴을 사용합니다.
BugCheckCallback 루틴은 시스템에서 버그 검사 발급할 때 실행됩니다. 드라이버는 루틴을 사용하여 디바이스를 알려진 상태로 다시 설정할 수 있습니다. 자세한 내용은 BugCheckCallback을 참조하세요.
드라이버는 KeDeregisterBugCheckCallback 루틴을 사용하여 콜백을 제거할 수 있습니다. 언로드할 수 있는 모든 드라이버는 언로드 루틴에서 모든 콜백을 제거해야 합니다.
구성 요소 문자열은 크래시 덤프 디버깅 중에 드라이버를 식별하는 데 사용됩니다. 지정된 구성 요소 문자열에 해당하는 크래시 덤프 데이터를 표시하려면 !bugdump 디버거 확장을 사용할 수 있습니다. 콜백 루틴 자체에 검사 버그를 디버그할 수도 있습니다. 디버거 및 디버거 확장에 대한 자세한 내용은 Windows 디버깅을 참조하세요.
구현
BugCheckCallback 콜백 루틴을 정의하려면 먼저 정의 중인 콜백 루틴의 유형을 식별하는 함수 선언을 제공해야 합니다. Windows는 드라이버에 대한 콜백 함수 형식 집합을 제공합니다. 콜백 함수 형식을 사용하여 함수를 선언하면 드라이버에 대한 코드 분석, SDV(정적 드라이버 검증 도구) 및 기타 확인 도구에서 오류를 찾는 데 도움이 됩니다.
예를 들어 MyBugCheckCallback이라는 BugCheckCallback 콜백 루틴을 정의하려면 다음 코드 예제와 같이 KBUGCHECK_CALLBACK_ROUTINE 형식을 사용합니다.
KBUGCHECK_CALLBACK_ROUTINE MyBugCheckCallback;
그런 다음 다음과 같이 콜백 루틴을 구현합니다.
_Use_decl_annotations_
VOID
MyBugCheckCallback(
PVOID Buffer,
ULONG Length
)
{
// Function body
}
KBUGCHECK_CALLBACK_ROUTINE 함수 형식은 Wdm.h 헤더 파일에 정의되어 있습니다.
코드 분석 도구를 실행할 때 오류를 보다 정확하게 식별하려면 함수 정의에 을 _Use_decl_annotations_ annotation
추가해야 합니다. Use_decl_annotations 주석은 헤더 파일의 KBUGCHECK_CALLBACK_ROUTINE 함수 형식에 적용되는 주석이 사용되도록 합니다. 함수 선언에 대한 요구 사항에 대한 자세한 내용은 WDM 드라이버에 함수 역할 형식을 사용하여 함수 선언을 참조하세요. Use_decl_annotations 대한 자세한 내용은 함수 동작에 주석을 추가를 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000부터 사용할 수 있습니다. |
대상 플랫폼 | 유니버설 |
헤더 | wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | 모든 수준 |