使用Windows API回调来检索网络适配器状态

时间:2014-08-25 14:51:59

标签: c winapi callback

我使用下面的代码行(对我的问题不重要)来检索现有网络适配器的当前状态。请参阅标记为“HERE”的评论。 这工作正常,它打印此文本: enter image description 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;
}

0 个答案:

没有答案