在内核驱动程序中使用Windows过滤平台

我们最近添加了Windows Filtering Platformfunction给我们的驱动程序

我们设法从wfp中获得了所需的信息,没有问题,但问题是在启动过程中 – 因为我们添加了wfpfunction,使用驱动程序的机器无法启动 – 它们遇到了死锁(计算机“卡住”闪屏)。

我们认为它可能是因为我们的驱动程序只依赖于FltMgr,并且可能在加载wfp框架之前加载(TcpStack?)。

我的问题是 – 有没有办法要求服务经理或任何其他权威是否加载wfp框架? 甚至更进一步 – wpp所依赖的驱动程序是什么? (所以我可以检查,如果他们在开始使用之前加载)

Solutions Collecting From Web of "在内核驱动程序中使用Windows过滤平台"

这是我在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 (coreelMode, FALSE, &WaitTime); bfeState = FwpmBfeStateGet0(); WaitCycles--; } while (bfeState != FWPM_SERVICE_RUNNING && WaitCycles > 0); } if (bfeState != FWPM_SERVICE_RUNNING) { // log and error handling }