Как использовать GetIpInterfaceEntry на win7 + vs2013

Я пытаюсь добавить правило в таблицу маршрутов с CreateIpForwardEntry, необходимо позвонить GetIpInterfaceEntry сначала на win7 (см. этот). Вот часть моего кода:

#pragma warning(disable: 4996)
#define WIN32_LEAN_AND_MEAN

#define _WIN32_WINNT 0x601

//#define _WS2IPDEF_
//#define __IPHLPAPI_H__

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#include <netioapi.h>
#include <iphlpapi.h>

#include <iostream>
#include <vector>
#include <string>
using namespace std;

#pragma comment(lib, "iphlpapi.lib")

int main() {
typedef DWORD(__stdcall *IPINTENTRY)(PMIB_IPINTERFACE_ROW);// undeclared identifier
MIB_IPINTERFACE_ROW info;
info.InterfaceIndex = 1;
memset(&(info.InterfaceLuid),0,sizeof(info.InterfaceLuid));
info.Family = AF_INET;
HINSTANCE hInst = ::LoadLibrary("Iphlpapi.dll");
IPINTENTRY pFunGetInfEntry = (IPINTENTRY)GetProcAddress(hInst,"GetIpInterfaceEntry");
DWORD dwRet = pFunGetInfEntry(&info);
}

код не компилируется, PMIB_IPINTERFACE_ROW это необъявленный идентификатор, я заглянул в заголовки окон, это WS2IPDEF который контролирует поток. Я определил это, но все еще работаю. Кто-нибудь использовал эту функцию? Благодарю.

1

Решение

Разве это не компилируется, или компилируется и не работает? Чтобы получить код для компиляции, мне пришлось изменить include: я удалил

#include <netioapi.h>
#include <iphlpapi.h>

и заменил его

#include <ws2def.h>
#include <ws2ipdef.h>
#include <iphlpapi.h>

следуя комментариям вверху «netioapi.h».

3

Другие решения

Включите следующие заголовки в этом порядке:

#include <winsock2.h>
#include <windows.h>
#include <ws2def.h>
#include <ws2ipdef.h>
#include <iphlpapi.h>
#include <netioapi.h>
0

По вопросам рекламы [email protected]