10
タイトルが言うように、私はその日のより良いところでこれを達成しようとしてきました。どんな援助も感謝します。ネットワークアダプタを列挙し、Win32 API C++でMACアドレスを取得するにはどうすればよいですか?
タイトルが言うように、私はその日のより良いところでこれを達成しようとしてきました。どんな援助も感謝します。ネットワークアダプタを列挙し、Win32 API C++でMACアドレスを取得するにはどうすればよいですか?
このコードは動作するはずです:あなたが唯一のIPhelperのAPIを習得する必要が
{
ULONG outBufLen = 0;
DWORD dwRetVal = 0;
IP_ADAPTER_INFO* pAdapterInfos = (IP_ADAPTER_INFO*) malloc(sizeof(IP_ADAPTER_INFO));
// retry up to 5 times, to get the adapter infos needed
for(int i = 0; i < 5 && (dwRetVal == ERROR_BUFFER_OVERFLOW || dwRetVal == NO_ERROR); ++i)
{
dwRetVal = GetAdaptersInfo(pAdapterInfos, &outBufLen);
if(dwRetVal == NO_ERROR)
{
break;
}
else if(dwRetVal == ERROR_BUFFER_OVERFLOW)
{
free(pAdapterInfos);
pAdapterInfos = (IP_ADAPTER_INFO*) malloc(outBufLen);
}
else
{
pAdapterInfos = 0;
break;
}
}
if(dwRetVal == NO_ERROR)
{
IP_ADAPTER_INFO* pAdapterInfo = pAdapterInfos;
while(pAdapterInfo)
{
IP_ADDR_STRING* pIpAddress = &(pAdapterInfo->IpAddressList);
while(pIpAddress != 0)
{
//
// <<<<
// here pAdapterInfo->Address should contain the MAC address
// >>>>
//
pIpAddress = pIpAddress->Next;
}
pAdapterInfo = pAdapterInfo->Next;
}
}
free(pAdapterInfos);
return false;
}
...これは例では、あなたが必要なものだけやっとget you startedへのリンクは、あります。
スタックの代わりにmallockを使用してpAdapterInfosを割り当てるのはなぜですか? – user626528
バッファが大きいので、その1つの構造体だけです。ループは、sizeパラメータを更新します。 – Christopher
(はい、この回答は古いと思います)ビットとピースを説明するいくつかのコメントを書くのではなく、このコードが散文でどのように機能するか説明できますか? –