DispatchDeviceControl-Routine des Akku-Miniklassen-Fahrers
Der Energie-Manager sendet Gerätesteuerungs-IRPs (IRP_MJ_DEVICE_CONTROL) über den Zusammengesetztbatterietreiber an Miniklassentreiber. Die DispatchDeviceControl-Routine des Akku-Miniklassen-Treibers verarbeitet IRPs, die Akku-IOCTLs enthalten.
In der DispatchDeviceControl-Routine kann der Miniklassentreiber die BatteryClassIoctl-Routine des Klassentreibers aufrufen, um systemdefinierte Gerätesteuerungsaufgaben auszuführen. BatteryClassIoctl verarbeitet GERÄTESTEUERUNGS-IOCTLs für Batterien.
Die DispatchDeviceControl-Routine sollte Folgendes ausführen:
Ermitteln Sie, ob es sich bei der aktuellen IOCTL um eine private IOCTL handelt, die vom Miniklassentreiber definiert wird. Wenn ja, führen Sie den angeforderten Vorgang aus, schließen Sie den IRP mit IO_NO_INCREMENT ab, und fahren Sie mit Schritt 4 fort.
Wenn es sich bei der IOCTL nicht um eine private IOCTL handelt, rufen Sie BatteryClassIoctl mit dem IRP und dem von BatteryClassInitializeDevice zurückgegebenen Klassenhandle auf. Beispiel:
Status = BatteryClassIoctl (NewBattNP->ClassHandle, Irp);
Die BatteryClassIoctl-Routine des Klassentreibers überprüft, ob die IOCTL für den angegebenen Akku vorgesehen ist. Wenn ja, ruft sie die entsprechende BatteryMiniXxx-Routine auf, um die Anforderung zu erfüllen, und schließt die IRP mit STATUS_SUCCESS ab. Andernfalls wird STATUS_NOT_SUPPORTED zurückgegeben.
Wenn BatteryClassIoctl STATUS_NOT_SUPPORTED zurückgibt und angibt, dass es sich nicht um eine Akku-IRP handelt, übergeben Sie den IRP an den nächstniedrigen Treiber.
Gibt den status als Rückgabewert der Funktion zurück.