我使用下面的代码行(对我的问题不重要)来检索现有网络适配器的当前状态。请参阅标记为“HERE”的评论。 这工作正常,它打印此文本:
但我喜欢在C中使用Callback或类似代码而不是我当前的代码。我想知道如果我的某个网络适配器的OperationStatus发生了变化,Windows 7是否可以让我报警?我的问题是我不知道如何开始。
#include <stdafx.h>
#include <winsock2.h>
#include <iptypes.h>
#include <iphlpapi.h>
#include <windows.h>
#include <iostream>
const ULONG MAX_BUFFER_SIZE = 15000;
#define MALLOC(x) HeapAlloc(GetProcessHeap(), 0, (x))
#define FREE(x) HeapFree(GetProcessHeap(), 0, (x))
int _tmain(int argc, _TCHAR* argv[])
{
PIP_ADAPTER_ADDRESSES pAdapterAddresses = NULL;
ULONG bufferSize = MAX_BUFFER_SIZE;
pAdapterAddresses = (IP_ADAPTER_ADDRESSES *) MALLOC(bufferSize);
GetAdaptersAddresses(AF_INET, 0, NULL, pAdapterAddresses, & bufferSize);
do{
std::wcout<<"Name:\t\t\t "<<pAdapterAddresses->Description<<std::endl;
std::cout<<"OperationStatus:\t "<<pAdapterAddresses->OperStatus<<std::endl;
//HERE: prints network adapter status
if(pAdapterAddresses->Next != 0){
pAdapterAddresses = pAdapterAddresses->Next;
std::cout<<"\n";}
} while(pAdapterAddresses->Next != 0);
std::cin.get();
return 0;
}