Festlegen und Abbrechen der Akkubenachrichtigung
Ein Miniklassentreiber stellt eine BatteryMiniSetStatusNotify-Routine bereit, sodass der Klassentreiber eine Benachrichtigung über bestimmte Bedingungen anfordern kann. Die Routine wird wie folgt deklariert:
typedef
NTSTATUS
(*BCLASS_SET_STATUS_NOTIFY)(
IN PVOID Context,
IN ULONG BatteryTag,
IN PBATTERY_NOTIFY BatteryNotify
);
Der Context-Parameter ist ein Zeiger auf den Kontextbereich, der vom Miniklassentreiber zugeordnet und bei der Geräteinitialisierung an den Klassentreiber in der BATTERY_MINIPORT_INFO-Struktur übergeben wird. Der BatteryTag-Parameter ist ein Wert, der zuvor von BatteryMiniQueryTag zurückgegeben wurde.
Der BatteryNotify-Parameter enthält eine Reihe von Flags, die die Batterieleistungsbedingung angeben, und ein Paar ULONG-Werte, die einen Bereich akzeptabler Akkukapazitäten definieren. Wenn der Akku die angegebenen Leistungsbedingungen nicht mehr erfüllt oder seine Kapazität den angegebenen Bereich über- oder unterschreitet, sollte der Miniklassentreiber BatteryClassStatusNotify aufrufen.
BatteryMiniSetStatusNotify sollte STATUS_NOT_SUPPORTED für alle Bedingungen oder Triggerwerte zurückgeben, die für diesen Akku nicht bestimmt werden können.
Der Klassentreiber ruft die BatteryMiniDisableStatusNotify-Routine auf, um die Benachrichtigung über Status Änderungen des Akkus abzubrechen, die zuvor von BatteryMiniSetStatusNotify angefordert wurden. Diese Routine wird wie folgt deklariert:
typedef
NTSTATUS
(*BCLASS_DISABLE_STATUS_NOTIFY)(
IN PVOID Context
);
Der Context-Parameter ist ein Zeiger auf den Kontextbereich, der vom Miniklassentreiber zugeordnet und bei der Geräteinitialisierung an den Klassentreiber in der BATTERY_MINIPORT_INFO-Struktur übergeben wird.
Miniklassentreiber können funktionen für routinen weglassen und STATUS_NOT_SUPPORTED zurückgeben. Ein Miniklassentreiber, der eine BatteryMiniSetStatusNotify-Routine bereitstellt, muss jedoch eine entsprechende BatteryMiniDisableStatusNotify-Routine bereitstellen und umgekehrt.