배터리 미니클래스 드라이버의 DispatchDeviceControl 루틴
전원 관리자는 복합 배터리 드라이버를 통해 디바이스 제어 IRP(IRP_MJ_DEVICE_CONTROL)를 미니클래스 드라이버로 보냅니다. 배터리 미니클래스 드라이버의 DispatchDeviceControl 루틴은 배터리 IOCTL을 포함하는 IRP를 처리합니다.
DispatchDeviceControl 루틴에서 미니클래스 드라이버는 클래스 드라이버의 BatteryClassIoctl 루틴을 호출하여 시스템 정의 디바이스 제어 작업을 수행할 수 있습니다. BatteryClassIoctl 은 배터리에 대한 디바이스 제어 IOCTL을 처리합니다.
DispatchDeviceControl 루틴은 다음을 수행해야 합니다.
현재 IOCTL이 미니클래스 드라이버에서 정의한 개인 IOCTL인지 확인합니다. 이 경우 요청된 작업을 수행하고, IO_NO_INCREMENT 사용하여 IRP를 완료하고, 4단계로 진행합니다.
IOCTL이 프라이빗 IOCTL이 아닌 경우 IRP 및 BatteryClassInitializeDevice에서 반환된 클래스 핸들을 사용하여 BatteryClassIoctl을 호출합니다. 예를 들면 다음과 같습니다.
Status = BatteryClassIoctl (NewBattNP->ClassHandle, Irp);
클래스 드라이버의 BatteryClassIoctl 루틴은 IOCTL이 지정된 배터리용인지 확인합니다. 이 경우 해당 BatteryMiniXxx 루틴을 호출하여 요청을 충족하고 STATUS_SUCCESS IRP를 완료합니다. 그렇지 않으면 STATUS_NOT_SUPPORTED 반환합니다.
BatteryClassIoctl이 배터리 IRP가 아님을 나타내는 STATUS_NOT_SUPPORTED 반환하는 경우 IRP를 다음 하위 드라이버에 전달합니다.
상태 함수의 반환 값으로 반환합니다.