Battery miniclass 驅動程式的 DispatchDeviceControl 例程
電源管理員會透過複合電池驅動程式,將裝置控制 IRP (IRP_MJ_DEVICE_CONTROL) 傳送至迷你類別驅動程式。 電池迷你類別驅動程式的 DispatchDeviceControl 例程會處理包含電池 IOCTL 的 IRP。
在 DispatchDeviceControl 例程中,迷你類別驅動程式可以呼叫類別驅動程式的 BatteryClassIoctl 例程來執行系統定義的裝置控制工作。 BatteryClassIoctl 會處理電池的裝置控制 IOCTL。
DispatchDeviceControl 例程應該:
判斷目前的 IOCTL 是否為迷你類別驅動程式所定義的私人 IOCTL。 若是如此,請執行要求的作業、使用 IO_NO_INCREMENT 完成 IRP,然後繼續進行步驟 4。
如果 IOCTL 不是私人 IOCTL,請使用 IRP 呼叫 BatteryClassIoctl ,並使用 BatteryClassInitializeDevice 所傳回的類別句柄呼叫 BatteryClassIoctl。 例如:
Status = BatteryClassIoctl (NewBattNP->ClassHandle, Irp);
類別驅動程式的 BatteryClassIoctl 例程會檢查 IOCTL 是否適用於指定的電池。 如果是,它會呼叫對應的 BatteryMiniXxx 例程來滿足要求,並使用 STATUS_SUCCESS完成 IRP。 否則,它會傳回STATUS_NOT_SUPPORTED。
如果 BatteryClassIoctl 傳回STATUS_NOT_SUPPORTED,表示這不是電池 IRP,請將 IRP 傳遞至下一個較低的驅動程式。
傳回狀態做為函式的傳回值。