我正在学习如何开发 WFP 驱动程序,我构建了一个简单的 WFP 驱动程序并测试了它。
在win8、win10和win server 2016、2019上可以运行,但是在Win7上安装时,服务无法启动。
从调试日志中,FwpmProviderAdd() 在 win7 上返回“STATUS_FWP_DYNAMIC_SESSION_IN_PROGRESS”。
我检查了MS文档,但没有明白如何修复它。
以下是我的代码的一部分...
status = FwpmProviderGetByKey(g_EngineHandle, &providerGuid, &pExistingProvider);
if (!NT_SUCCESS(status) || !pExistingProvider) {
RtlZeroMemory(&provider, sizeof(provider));
provider.providerKey = providerGuid;
provider.displayData.name = L"Testing Provider";
provider.displayData.description = L"This is for testing";
//provider.flags = FWPM_PROVIDER_FLAG_PERSISTENT;
provider.serviceName = L"wfptest";
status = FwpmProviderAdd(g_EngineHandle, &provider, NULL);
if (!NT_SUCCESS(status)) {
TB_TRACE(TS_CRIT, TA_PACKET, ("ProviderAdd Fail = %#08x!!!!", status));
goto _Exit;
}
有人可以帮忙吗?
谢谢
我发现这是因为打开FwpmEngineOpen时的会话设置。
在win 7中,不可以将session设置为FWPM_SESSION_FLAG_DYNAMIC