2012-01-03 49 views
2

我們最近爲我們的驅動程序添加了Windows過濾平臺功能。在內核驅動程序中使用Windows過濾平臺

我們設法從wfp中獲得了我們所需的信息,沒有問題,但問題在於引導過程中 - 因爲我們添加了wfp功能,使用驅動程序的計算機無法啓動 - 它們發生死鎖(計算機的「卡在啓動畫面中)。

我們認爲它可能是因爲我們的驅動程序僅依賴於FltMgr,並且可能在加載wfp框架之前加載(TcpStack?)。

我的問題是 - 有沒有辦法問服務經理或任何其他權威是否加載了wfp框架?甚至更遠 - 什麼驅動程序wfp是依賴於? (所以我可以檢查它們是否在開始使用前加載)

回答

2

這是我在DriverEntry中所做的。

// 
// Wait for the WFP engine to be ready. 
// 

FWPM_SERVICE_STATE bfeState; 

bfeState = FwpmBfeStateGet0(); 
if (bfeState != FWPM_SERVICE_RUNNING) 
{ 
    WaitTime.QuadPart = (-5000000); // wait 500000us (500ms) relative 
    do { 
     KeDelayExecutionThread (KernelMode, FALSE, &WaitTime); 
     bfeState = FwpmBfeStateGet0(); 
     WaitCycles--; 
    } while (bfeState != FWPM_SERVICE_RUNNING && WaitCycles > 0); 
} 

if (bfeState != FWPM_SERVICE_RUNNING) 
{ 
    // log and error handling 
} 
+0

感謝彼得,使用的碼位在你所發佈我發現下面的回調:http://msdn.microsoft.com/en-us/library/windows/hardware/ff550062(v=VS。 85).aspx,並做到了這一點。謝謝! – sternr 2012-01-14 17:16:33

+0

啊,是的。您發現的回調方法應該更好。謝謝! – Peter 2012-01-16 06:56:53

相關問題