PfCreateInterface возвращает ошибку 120 (не реализовано) - PullRequest
1 голос
/ 25 октября 2019

Мне нужно создать простую программу IP-фильтрации для Windows;Однако у меня проблемы с получением соответствующего вызова 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?

1 Ответ

2 голосов
/ 25 октября 2019

Документация Microsoft довольно ясна:

PfCreateInterface доступен для использования в операционных системах, перечисленных в разделе «Требования».

Windowsверсии, перечисленные в разделе «Требования», - это Windows Server 2003 или Windows 2000 Server.

Так что этот вызов API по сути устарел. В документации рекомендуется использовать вместо функций управления платформой фильтрации Windows .

...