Windows 드라이버 키트의 헤더 파일
Header files in the Windows Driver Kit(원본 Microsoft Learn 링크)
아래는 위 문서의 번역이다.
Windows 드라이버 키트(WDK)의 API 참조 문서에는 커널 모드 및 유저 모드 드라이버를 빌드하는 데 필요한 모든 헤더 파일(.h 파일)이 포함되어 있다. 헤더 파일은 WDK 설치 폴더의 Include 폴더에 있다. 예: C:\Program Files (x86)\Windows Kits\10\Include.
헤더 파일에는 버전 정보가 포함되어 있어, 드라이버가 실행될 Windows 버전과 관계없이 동일한 헤더 파일 집합을 사용할 수 있다.
Windows 버전을 나타내는 상수
WDK의 헤더 파일에는 특정 Windows 운영체제 버전에서만 사용 가능한 프로그래밍 요소를 지정하는 조건문이 포함되어 있다. 버전이 지정된 요소에는 함수, 열거형, 구조체, 구조체 멤버 등이 있다.
각 운영체제 버전에서 사용 가능한 프로그래밍 요소를 지정하기 위해, 헤더 파일에는 NTDDI_VERSION 값을 Sdkddkver.h에 정의된 사전 정의 상수 값들과 비교하는 전처리기 조건문이 포함되어 있다.
다음은 Microsoft Windows 운영체제 버전을 나타내는 사전 정의 상수 값들이다.
| 상수 | 운영체제 버전 |
|---|---|
| NTDDI_WIN10 | Windows 10 |
| NTDDI_WINBLUE | Windows 8.1 |
| NTDDI_WIN8 | Windows 8 |
| NTDDI_WIN7 | Windows 7 |
| NTDDI_WS08SP4 | Windows Server 2008 with SP4 |
| NTDDI_WS08SP3 | Windows Server 2008 with SP3 |
| NTDDI_WS08SP2 | Windows Server 2008 with SP2 |
| NTDDI_WS08 | Windows Server 2008 |
WDK 헤더 파일에서 버전별 DDI 요소의 다양한 예시를 볼 수 있다. 다음 조건부 선언은 커널 모드 드라이버에 포함될 수 있는 헤더 파일인 Wdm.h에 나타난다.
1
2
3
4
5
6
7
8
9
#if (NTDDI_VERSION >= NTDDI_WIN7)
_Must_inspect_result_
NTKERNELAPI
NTSTATUS
KeSetTargetProcessorDpcEx (
_Inout_ PKDPC Dpc,
_In_ PPROCESSOR_NUMBER ProcNumber
);
#endif
위 예시에서 KeSetTargetProcessorDpcEx 함수는 Windows 7 및 이후 버전에서만 사용 가능함을 알 수 있다.
다음 조건부 선언은 유저 모드 드라이버에 포함될 수 있는 헤더 파일인 Winspool.h에 나타난다.
1
2
3
4
5
6
7
8
9
#if (NTDDI_VERSION >= NTDDI_WIN7)
...
BOOL
WINAPI
GetPrintExecutionData(
_Out_ PRINT_EXECUTION_DATA *pData
);
#endif // (NTDDI_VERSION >= NTDDI_WIN7)
위 예시에서 GetPrintExecutionData 함수는 Windows 7 및 이후 버전에서만 사용 가능함을 알 수 있다.
커널 모드 드라이버 프레임워크의 헤더 파일
WDK는 여러 Windows 버전을 지원하며, 또한 여러 버전의 커널 모드 드라이버 프레임워크(KMDF) 및 유저 모드 드라이버 프레임워크(UMDF)도 지원한다. WDK 헤더 파일의 버전 정보는 Windows 버전에 관한 것이며, KMDF 또는 UMDF 버전에 관한 것은 아니다. KMDF와 UMDF의 서로 다른 버전을 위한 헤더 파일은 별도의 디렉터리에 배치된다.