하드웨어 알림 클라이언트 드라이버 만들기
이 섹션에서는 Microsoft에서 제공하는 KMDF 클래스 확장을 활용하는 하드웨어 알림 클라이언트 드라이버의 개발에 대한 일반적인 지침을 제공합니다.
Mshwnclxstub.lib에 연결하고 hwn.h 및 hwnclx.h 헤더를 포함하는 클라이언트 드라이버 구현용 파일을 만듭니다.
필요한 KMDF 및 하드웨어 알림 클래스 확장 콜백 함수의 인스턴스를 정의합니다. 특히 다음 예제 코드와 같이 이러한 콜백 함수를 구현하고 등록해야 합니다.
DRIVER_INITIALIZE DriverEntry; EVT_WDF_DRIVER_DEVICE_ADD HwnClientEvtDeviceAdd; HWN_CLIENT_INITIALIZE_DEVICE HwnClientInitializeDevice; HWN_CLIENT_UNINITIALIZE_DEVICE HwnClientUnInitializeDevice; HWN_CLIENT_QUERY_DEVICE_INFORMATION HwnClientQueryDeviceInformation; HWN_CLIENT_START_DEVICE HwnClientStartDevice; HWN_CLIENT_STOP_DEVICE HwnClientStopDevice; HWN_CLIENT_SET_STATE HwnClientSetState; HWN_CLIENT_GET_STATE HwnClientGetState;
클라이언트 드라이버 진입점이며 초기화를 담당하는 DriverEntry 루틴을 구현합니다. 하드웨어 알림 클라이언트 드라이버의 경우 이 함수는 다음을 처리해야 합니다.
WDF_DRIVER_CONFIG_INIT 호출하여 드라이버의 WDF_DRIVER_CONFIG 구조를 초기화합니다.
WdfDriverCreate를 호출하여 클라이언트 드라이버에 대한 프레임워크 드라이버 개체를 만듭니다.
클래스 확장에서 사용할 콜백 함수 포인터를 포함하여 HWN_CLIENT_REGISTRATION_PACKET 내용을 정의합니다. 필요한 콜백 함수에 대한 자세한 내용은 하드웨어 알림 참조를 참조하세요.
HwNRegisterClient를 호출하여 클래스 확장에 클라이언트 드라이버를 등록합니다.
PnP 관리자가 디바이스 의 존재를 보고할 때 디바이스 초기화 작업을 수행하는 EVT_WDF_DRIVER_DEVICE_ADD 함수를 구현합니다. 하드웨어 알림 클라이언트 드라이버의 경우 이 함수는 다음을 처리해야 합니다.
HwNProcessAddDevicePreDeviceCreate를 호출하면 KMDF에서 디바이스를 다른 상태로 전환하는 데 필요한 디바이스 준비/해제 및 진입/종료 콜백을 제공합니다.
WdfDeviceCreate를 호출하여 프레임워크 디바이스 개체를 만듭니다.
HwNProcessAddDevicePostDeviceCreate를 호출하여 I/O 큐를 만듭니다.
클래스 확장에서 호출하여 사용할 하드웨어 알림 컨트롤러를 준비하는 정의된 HWN_CLIENT_INITIALIZE_DEVICE 함수를 구현합니다.
정의된 HWN_CLIENT_UNINITIALIZE_DEVICE 함수를 구현합니다. 이 함수는 클래스 확장에서 호출하여 하드웨어 알림 컨트롤러를 초기화하지 않습니다.
클래스 확장에서 호출되는 정의된 HWN_CLIENT_QUERY_DEVICE_INFORMATION 함수를 구현합니다. 이 함수는 하드웨어 알림 구성 요소의 특성을 검색합니다.
클래스 확장에서 호출되는 정의된 HWN_CLIENT_START_DEVICE 함수를 구현합니다. 이 함수는 하드웨어 알림 컨트롤러를 시작하고 클라이언트 드라이버에 대한 ACPI 리소스를 할당하는 작업을 담당합니다.
클래스 확장에서 호출되는 정의된 HWN_CLIENT_STOP_DEVICE 함수를 구현합니다. 이 함수는 하드웨어 알림 컨트롤러를 중지하고 클라이언트 드라이버에서 사용하는 ACPI 리소스를 해제하는 작업을 담당합니다.
클래스 확장에서 호출되는 정의된 HWN_CLIENT_SET_STATE 구현합니다. 이 함수는 하드웨어 알림 구성 요소 상태를 설정하는 작업을 담당합니다.
클래스 확장에서 호출되는 정의된 HWN_CLIENT_GET_STATE 구현합니다. 이 함수는 하드웨어 알림 구성 요소의 현재 값을 가져옵니다. 입력 버퍼가 NULL이면 사용자가 특정 하드웨어 알림 상태를 지정하지 않았으므로 이 함수는 모든 하드웨어 알림 구성 요소에 대한 상태 정보를 반환해야 합니다.