2012-05-10 21 views
0

ノートパソコンのバッテリー残量が少ないときに通知して通知するコードをCで記述する必要があります。Windowsカーネルからバッテリーの電力レベルを通知するにはどうすればよいですか?

しかし、電源が切れたときに私に通知する機能をオペレーティングシステムに送信したいと考えています。

私のコードに「空」のループを入れたいのですが、電池残量が少なくなると、コードから通知が届きます(printfまたはtrace)。

は、私は、カーネル関数を使用すべきだと思いますが、私はこれらのAPIを使用したことがない彼ら

+1

Windowsはいつカーネルプログラミングを許可しますか? – Shahbaz

+3

@Shahbaz Windowsでは、「カーネルプログラミング」は基本的に「ドライバを書く」ことです。しかし、おそらく混乱しているのは、カーネルモードとカーネルモードの違いです(http://blogs.msdn.com/b/oldnewthing/archive/2012/04/17/10294294.aspx)。 Windowsは、カーネルモードで実行することとは関係のない「カーネル」関数をエクスポートします。 –

+1

これはカーネル*何か*を必要とするという考えをどこから得ていますか? 'GetSystemPowerStatus'を呼び出す際に何が問題になっていますか?特定の定義済みのポイントにパワーレベルが達したときに、オペレーティングシステムでコードをコールバック*することを効果的に望むことを意味しますか? –

答えて

4

を見つけることができませんが、何あなたが探していることはWM_POWERBROADCASTのようです。

wParamには、PBT_APMBATTERYLOWなどのメッセージの受信時に確認できるさまざまな値があります。適切なwParam値を持つWM_POWERBROADCASTメッセージを受信した場合は、GetSystemPowerStatus()を呼び出します。

+0

ありがとうございますが、このAPIがデスクトップアプリケーションでのみ動作しているという問題があります。 – user1386966

+2

@ user1386966はい?あなたの質問にどこか他に何か言及していますか?あなたは私たちに話していない、静かで秘密の要求をいくつか持っていますか? – Lundin

1

カーネルには、電源状態の更新を処理するための別の方法論があります。情報については、hereを参照してください。

あなたは電源状態 変化によって影響を受ける可能性があるドライバを書いている場合は、あなたがあなたのドライバコードに 以下のタイプの情報を処理できなければなりません:

など

関連する問題