2012-01-03 56 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

相关问题