컴퓨터 공학/C++
[C/C++] 윈도우즈 운영체제에서 맥 주소 가져오기
혼새미로
2018. 9. 18. 15:33
반응형
아래의 코드는 윈도우즈 환경에서 "Windows.h" 헤더파일에 포함된 API를 사용하여 장치의 맥 주소를 출력하는 과정을 나타냅니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 |
#include <stdio.h>
#include <Windows.h>
#include <assert.h>
#include <IPHlpApi.h>
#pragma comment(lib, "iphlpapi.lib")
IP_ADAPTER_INFO* GetNetworkAdaptersInfo()
{
DWORD dwBufLen = 0;
DWORD dwStatus = GetAdaptersInfo(NULL, &dwBufLen);
assert(dwStatus == ERROR_BUFFER_OVERFLOW);
IP_ADAPTER_INFO* pAdapterInfo = (IP_ADAPTER_INFO*)malloc(dwBufLen);
dwStatus = GetAdaptersInfo(pAdapterInfo, &dwBufLen);
assert(dwStatus == ERROR_SUCCESS);
if (dwStatus == ERROR_SUCCESS)
return pAdapterInfo;
else
{
free(pAdapterInfo);
return NULL;
}
}
void DisplayAllMacAddress(IP_ADAPTER_INFO* pAdapterInfo)
{
const int MAC_ADDRESS_LENGTH = 6;
while (pAdapterInfo != NULL)
{
if (pAdapterInfo->Type == MIB_IF_TYPE_ETHERNET)
{
printf("어댑터 이름:%s\n", pAdapterInfo->AdapterName);
printf("맥 주소: ");
for (int i = 0; i < MAC_ADDRESS_LENGTH; i++)
{
printf("%x ", pAdapterInfo->Address[i]);
}
printf("\n");
}
pAdapterInfo = pAdapterInfo->Next;
}
}
void main()
{
IP_ADAPTER_INFO* pAdaptersInfoList = GetNetworkAdaptersInfo();
DisplayAllMacAddress(pAdaptersInfoList);
free(pAdaptersInfoList);
} |
cs |
반응형