2

Windows Embedded Compact 7書き込まれたアプリケーションが実行される OSを備えたデバイスのドライバーを作成してい.NET 3.5ます。私の要件は、イベントが呼び出されたときにアプリケーションで記述された対応するイベント ハンドラーが実行されるように、カスタム定義のシステム イベント (ドライバーで発生したいくつかの条件) をこれらのアプリケーションに送信する必要があることです。

そう、

このようなイベントを呼び出す/発生させるにはどうすればよいですか?

どの機能を使用しますか?

システム イベントとメッセージの違いは何ですか?

.NETアプリケーションにイベント ハンドラーを追加する方法は?

ティア。

4

1 に答える 1

0

通常の win32 API を使用して、名前付きイベントを作成します (つまり、CreateEvent() に名前を指定します)。これは、カーネル/ユーザー空間の境界を越えてなど、プロセスの境界を越えて使用できます。次に、WaitForSingleObject() および関連する関数を使用して、イベントの状態を確認します。

ストリーム ドライバーがある場合は、アプリケーションから ReadFile() を呼び出して、ドライバーの対応するハンドラー関数内で単にストールすることもできます。これにより、イベントへのデータの追加も非常に簡単になります。さらに、ドライバーにアクセスする異なるプロセス間、または同じプロセス内の異なるインスタンス間を分離します。これを上記のイベントと比較してください。これは事実上システム全体で表示され、さまざまなプロセスによって設定することもできますが、これをある程度制限することはできます。

もう 1 つの方法は、プロセスの境界を越えて機能するウィンドウ メッセージ (PostMessage()、SendMessage() など) を使用することです。ただし、これがカーネルから機能するかどうかはわかりません。これらは、アプリケーションのメイン ウィンドウや以前にドライバに通知した他のウィンドウなどの「通常の」メッセージ キューに格納されます。他の 2 つのアプローチと比較して、ターゲットとしてウィンドウが必要なため、一方向にしか機能せず、メッセージがどこから来たのかわかりません。

于 2013-06-20T16:09:54.253 に答える