バッテリ通知の設定とキャンセル
ミニクラス ドライバーは、クラス ドライバーが特定の条件の通知を要求できるように、BatteryMiniSetStatusNotifyルーチンを提供します。 ルーチンは次のように宣言されます:
typedef
NTSTATUS
(*BCLASS_SET_STATUS_NOTIFY)(
IN PVOID Context,
IN ULONG BatteryTag,
IN PBATTERY_NOTIFY BatteryNotify
);
コンテクストパラメーターは、ミニクラス ドライバーによって割り当てられ、デバイスの初期化時に BATTERY_MINIPORT_INFO 構造体でクラス ドライバーに渡されるコンテキスト領域へのポインターです。 BatteryTag パラメーターは、以前に BatteryMiniQueryTagによって返された値です。
BatteryNotifyパラメーターには、バッテリの電源状態を示す一連のフラグと、許容可能なバッテリ容量の範囲を定義する ULONG 値のペアが含まれています。 バッテリが指定された電源条件を満たさなくなった場合、またはその容量が指定された範囲を上回ったり下回ったりした場合、ミニクラス ドライバーは BatteryClassStatusNotifyを呼び出す必要があります。
BatteryMiniSetStatusNotifyは、このバッテリに対して決定できない条件またはトリガー値に対してSTATUS_NOT_SUPPORTEDを返す必要があります。
クラス ドライバーは、BatteryMiniDisableStatusNotifyルーチンを呼び出して、以前に BatteryMiniSetStatusNotify によって要求されたバッテリ状態の変更の通知を取り消します。 このルーチンは次のように宣言されます:
typedef
NTSTATUS
(*BCLASS_DISABLE_STATUS_NOTIFY)(
IN PVOID Context
);
コンテクスト パラメーターは、ミニクラス ドライバーによって割り当てられ、デバイスの初期化時に BATTERY_MINIPORT_INFO 構造体のクラス ドライバーに渡されるコンテキスト領域へのポインターです。
ミニクラス ドライバーは両方のルーチンの機能を省略し、STATUS_NOT_SUPPORTED を返すことができます。 ただし、BatteryMiniSetStatusNotify ルーチンを提供するミニクラス ドライバーは、対応する BatteryMiniDisableStatusNotify ルーチンを提供する必要があり、その逆も同様です。