通常の win32 API を使用して、名前付きイベントを作成します (つまり、CreateEvent() に名前を指定します)。これは、カーネル/ユーザー空間の境界を越えてなど、プロセスの境界を越えて使用できます。次に、WaitForSingleObject() および関連する関数を使用して、イベントの状態を確認します。
ストリーム ドライバーがある場合は、アプリケーションから ReadFile() を呼び出して、ドライバーの対応するハンドラー関数内で単にストールすることもできます。これにより、イベントへのデータの追加も非常に簡単になります。さらに、ドライバーにアクセスする異なるプロセス間、または同じプロセス内の異なるインスタンス間を分離します。これを上記のイベントと比較してください。これは事実上システム全体で表示され、さまざまなプロセスによって設定することもできますが、これをある程度制限することはできます。
もう 1 つの方法は、プロセスの境界を越えて機能するウィンドウ メッセージ (PostMessage()、SendMessage() など) を使用することです。ただし、これがカーネルから機能するかどうかはわかりません。これらは、アプリケーションのメイン ウィンドウや以前にドライバに通知した他のウィンドウなどの「通常の」メッセージ キューに格納されます。他の 2 つのアプローチと比較して、ターゲットとしてウィンドウが必要なため、一方向にしか機能せず、メッセージがどこから来たのかわかりません。