2012-09-17 35 views
0

當進程停止時,我需要在KMDF驅動程序中獲取通知。我不想使用PsSetCreateProcessNotifyRoutine,因爲這會爲我創建或銷燬的每個進程提供通知。只有當我感興趣的特定進程ID被銷燬/退出/刪除時,我纔想知道/得到通知。 (我不關心過程創作)。KMDF驅動程序中的進程退出/刪除通知

我認爲這樣做的一種方式是與驅動程序共享應用程序創建的事件。我將在驅動程序中創建一個工作線程並使其等待用戶創建的事件,並且當應用程序終止時,等待將中止。這是一個很好的方式來知道什麼時候該流程被終止/關閉或者是否有更多的標準方法來做到這一點?我在一些論壇上看到,分享活動不是一個好主意,我應該使用重疊的ioctls,但是這顯然不會在這裏工作。

回答

1

解決:這是我做過什麼:(我的司機是一個頂級單片驅動程序)

  1. 使用ZwOpenProcess進程ID,以得到一個處理的過程。

  2. 使用ObReferenceObjectByHandle和進程句柄來獲取調度器對象。

  3. 使用PsCreateSystemThread創建一個系統線程,並傳遞給派發的對象。

  4. 在上面的步驟中創建的系統線程使用KeWaitForSingleObject等待調度的對象。

  5. 以編程方式終止進程或導致異常,並使用X gui按鈕簡單地關閉它。他們都喚醒了創建的系統線程。

當感興趣的過程終止時,這本質上給了我通知。

0

只需使用PsSetCreateProcessNotifyRoutine並檢查ProcessId。

+0

謝謝greenboxal。我正在尋找替代方法來做到這一點,我不想使用PsSetCreateProcessNotifyRoutine,除非絕對沒有其他方式這樣做。 – Raghu

相關問題