0

プロセスがダウンしたときにKMDFドライバーで通知を受け取る必要があります。PsSetCreateProcessNotifyRoutine作成または破棄されたすべてのプロセスについて通知が表示されるため、使用したくありません。興味のある特定のプロセスIDが破棄/終了/削除された場合にのみ通知を受け取りたいです。(私はプロセスの作成を気にしません)。

これを行うことを考えた1つの方法は、アプリケーションで作成されたイベントをドライバーと共有することです。ドライバーにワーカースレッドを作成し、ユーザーが作成したイベントを待機させます。アプリケーションが終了すると、待機は中止されます。これは、プロセスがいつ終了/終了したかを知るための良い方法ですか、それともこれを行うためのより標準的な方法がありますか?いくつかのフォーラムで、イベントを共有することは良い考えではなく、重複したioctlを使用する必要があることを読みましたが、ここでは明らかに機能しません。

4

2 に答える 2

1

解決済み:これは私がしたことです:(私のドライバーはトップレベルのモノリシックドライバーです)

  1. プロセスIDを持つZwOpenProcessを使用して、プロセスへのハンドルを取得しました。

  2. プロセスハンドルとともにObReferenceObjectByHandleを使用して、ディスパッチャオブジェクトを取得しました。

  3. PsCreateSystemThreadを使用してシステムスレッドを作成し、ディスパッチされたオブジェクトに渡しました。

  4. 上記の手順で作成したシステムスレッドを作成し、KeWaitForSingleObjectを使用してディスパッチされたオブジェクトを待機します。

  5. プログラムでプロセスを終了するか、例外を発生させ、XGUIボタンを使用してプロセスを閉じました。それらはすべて、作成されたシステムスレッドを目覚めさせました。

これにより、基本的に、対象のプロセスが終了したときに通知が届きます。

于 2012-09-18T21:42:04.580 に答える
0

PsSetCreateProcessNotifyRoutineを使用して、ProcessIdを確認するだけです。

于 2012-09-18T00:25:51.057 に答える