vDbgPrintEx 함수(wdm.h)
vDbgPrintEx 루틴은 특정 조건이 충족되는 경우 커널 디버거에 문자열을 보냅니다.
구문
NTSYSAPI ULONG vDbgPrintEx(
[in] ULONG ComponentId,
[in] ULONG Level,
[in] PCCH Format,
[in] va_list arglist
);
매개 변수
[in] ComponentId
이 루틴을 호출하는 구성 요소입니다. 이 매개 변수는 Dpfilter.h에 정의된 구성 요소 이름 필터 ID 중 하나여야 합니다. 드라이버의 출력을 Windows 구성 요소의 출력과 혼합하지 않도록 하려면 ComponentId에 다음 값만 사용해야 합니다.
- DPFLTR_IHVVIDEO_ID
- DPFLTR_IHVAUDIO_ID
- DPFLTR_IHVNETWORK_ID
- DPFLTR_IHVSTREAMING_ID
- DPFLTR_IHVBUS_ID
- DPFLTR_IHVDRIVER_ID
[in] Level
전송되는 메시지의 심각도입니다. 이 매개 변수는 32비트 정수일 수 있습니다. 0에서 31 사이의 값(포함)은 32와 0xFFFFFFFF 사이의 값과 다르게 처리됩니다. 값을 처리하는 방법에 대한 자세한 내용은 디 버깅 메시지 읽기 및 필터링을 참조하세요.
[in] Format
인쇄할 서식 문자열에 대한 포인터입니다. Format 문자열은 대부분의 printf 스타일 서식 코드를 지원합니다. 그러나 IRQL = PASSIVE_LEVEL 유니코드 형식 코드(%C, %S, %lc, %ls, %wc, %ws 및 %wZ)만 사용할 수 있습니다. vDbgPrintEx 루틴은 부동 소수점 형식(%f, %e, %E, %g, %G, %a 또는 %A)을 지원하지 않습니다.
[in] arglist
형식 문자열에 대한 인수 목록입니다. vDbgPrintEx 루틴은 vprintf와 동일한 방식으로 이 목록을 사용합니다.
반환 값
vDbgPrintEx는 작업이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 이 루틴은 적절한 오류 코드를 반환합니다.
설명
커널 모드 드라이버만 vDbgPrintEx 루틴을 호출할 수 있습니다.
vDbgPrintEx는 IRQL = DIRQL <에서 호출할 수 있습니다. 그러나 IRQL = PASSIVE_LEVEL 유니코드 형식 코드(%wc 및 %ws)만 사용할 수 있습니다. 또한 디버거는 IPI(Interprocess 인터럽트)를 사용하여 다른 프로세서와 통신하기 때문에 IRQL DIRQL > 에서 vDbgPrintEx를 호출하면 교착 상태가 발생할 수 있습니다.
vDbgPrintEx 는 만든 문자열을 커널 디버거에 전달하거나 ComponentId, Level 및 해당 구성 요소 필터 마스크의 값에 따라 아무 작업도 수행하지 않습니다. vDbgPrintEx가 수행하는 작업에 대한 자세한 내용은 디버깅 메시지 읽기 및 필터링을 참조하세요.
반드시 필요한 경우가 아니면 사용자 입력 또는 다른 프로세스에서 문자열을 가져와 서 vDbgPrintEx에 전달해서는 안 됩니다. 만들지 않은 문자열을 사용하는 경우 이 문자열이 유효한 형식 문자열이고 형식 코드가 형식 및 수량의 인수 목록과 일치하는지 확인해야 합니다. 가장 좋은 코딩 방법은 모든 형식 문자열이 정적이고 컴파일 시간에 정의되는 것입니다.
형식 문자열의 크기 또는 arglist 목록의 인수 수에 대한 상한은 없습니다. 그러나 vDbgPrintEx 에 대한 단일 호출은 512바이트의 정보만 전송합니다.
디버거에서 사용하는 버퍼의 크기도 제한됩니다. 이 제한에 대한 자세한 내용은 DbgPrint 버퍼 및 디버거를 참조하세요.
이 루틴은 Wdm.h에 정의되어 있습니다. 구성 요소 필터 ID는 Dpfilter.h에 정의되어 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Microsoft Windows XP 이상 운영 체제 버전에서 사용할 수 있습니다. |
대상 플랫폼 | 유니버설 |
헤더 | wdm.h(Dpfilter.h, Wdm.h, Ntddk.h, Ndis.h 포함) |
라이브러리 | NtDll.lib(사용자 모드); NtosKrnl.lib(커널 모드) |
DLL | NtDll.dll(사용자 모드); NtosKrnl.exe(커널 모드) |
IRQL | <= DIRQL(주석 섹션 참조) |