c++ - PfCreateInterface 返回错误 120(未实现)
问题描述
我需要为 Windows 创建一个简单的 IP 过滤程序;但是,我无法让相关的 API 调用正常工作。下面是一个小例子,展示了如何PfCreateInterface
失败。它返回120
的是系统错误代码ERROR_CALL_NOT_IMPLEMENTED
。我在 Windows 10 上运行该程序。
#include <windows.h>
#include <Iphlpapi.h>
#include <Fltdefs.h>
#include <iostream>
#pragma comment(lib, "Iphlpapi.lib")
int main()
{
INTERFACE_HANDLE hInterface;
PFFORWARD_ACTION action = PF_ACTION_FORWARD;
DWORD errorCode = PfCreateInterface(0,
action,
action,
FALSE,
TRUE,
&hInterface);
std::cout << "errorCode = " << errorCode << std::endl;
}
有人可以解释为什么它失败了吗?如果我不能在 Windows 10 上使用它,你知道替代 API 是什么吗?
解决方案
微软的文档很清楚:
PfCreateInterface 可用于“要求”部分中列出的操作系统。
“要求”部分中列出的 Windows 版本是 Windows Server 2003 或 Windows 2000 Server。
所以这个 API 调用基本上已经过时了。文档建议改用Windows 过滤平台管理功能。
推荐阅读
- javascript - 特定文本后的javascript正则表达式
- r - JAGS/BUGS 错误 - 可能涉及以下部分或全部节点的定向循环
- python - Python 函数 - 如果输入变量不存在,则使用默认值
- sql - SQL Server 初始备份恢复有效,其余无效
- python-3.x - 如何在 Windows 中通过 LDAP 将 Python 3.x cx_Oracle 连接到 Oracle DB?
- laravel - 在 apache 服务器上为 laravel 配置 https
- sql - 通过 vba 在 ms 访问中填充报告
- node.js - 如何在事件处理程序中实现异步/等待?
- java - java.lang.NoSuchFieldError: ACCEPT_CASE_INSENSITIVE_VALUES
- powershell - hashtable.ContainsKey 永远不会评估为真?