VC中真实MAC地址的获取方法
答案:2 悬赏:80 手机版
解决时间 2021-02-01 09:49
- 提问者网友:刺鸟
- 2021-01-31 20:27
VC中真实MAC地址的获取方法
最佳答案
- 五星知识达人网友:胯下狙击手
- 2021-01-31 22:02
#include "stdafx.h"
#include
//#include
#include
#include
#pragma comment ( lib, "iphlpapi.lib" )
BOOL WINAPI GetPhyMacAddress(char* strServiceName)
{
BOOL bRet = FALSE;
char pstrBuf[512];
sprintf(pstrBuf, "//./%s", strServiceName);
HANDLE
hDev = CreateFile(pstrBuf, GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, 0);
if ( hDev != INVALID_HANDLE_VALUE )
{
int inBuf;
BYTE outBuf[256] = { 0 };
DWORD BytesReturned;
inBuf = OID_802_3_PERMANENT_ADDRESS;
if ( DeviceIoControl(hDev, IOCTL_NDIS_QUERY_GLOBAL_STATS, (LPVOID)&inBuf, 4, outBuf, 256, &BytesReturned, NULL) )
{
sprintf(pstrBuf, "物理mac:%02X-%02X-%02X-%02X-%02X-%02X
",
outBuf[0], outBuf[1], outBuf[2], outBuf[3], outBuf[4], outBuf[5]);
printf(pstrBuf);
bRet = TRUE;
}
inBuf = OID_802_3_CURRENT_ADDRESS;
if ( DeviceIoControl(hDev, IOCTL_NDIS_QUERY_GLOBAL_STATS, (LPVOID)&inBuf, 4, outBuf, 256, &BytesReturned, NULL) )
{
sprintf(pstrBuf, "当前mac:%02X-%02X-%02X-%02X-%02X-%02X
",
outBuf[0], outBuf[1], outBuf[2], outBuf[3], outBuf[4], outBuf[5]);
printf(pstrBuf);
bRet = TRUE;
}
CloseHandle(hDev);
}
return bRet;
}
// 网卡 MAC 地址
BOOL GetMacAddress()
{
UINT uErrorCode = 0;
IP_ADAPTER_INFO iai;
ULONG uSize = 0;
DWORD dwResult = GetAdaptersInfo(&iai, &uSize);
if ( dwResult == ERROR_BUFFER_OVERFLOW )
{
PIP_ADAPTER_INFO piai = (PIP_ADAPTER_INFO)new BYTE[uSize];
dwResult = GetAdaptersInfo(piai, &uSize);
if ( ERROR_SUCCESS == dwResult )
{
while ( piai )
{
printf("名称:%s
", piai->AdapterName);
printf("描述:%s
", piai->Description);
printf("类型:%d
", piai->Type);
GetPhyMacAddress(piai->AdapterName);
printf("
");
piai = piai->Next;
}
}
delete[] piai;
}
return TRUE;
}
#include
//#include
#include
#include
#pragma comment ( lib, "iphlpapi.lib" )
BOOL WINAPI GetPhyMacAddress(char* strServiceName)
{
BOOL bRet = FALSE;
char pstrBuf[512];
sprintf(pstrBuf, "//./%s", strServiceName);
HANDLE
hDev = CreateFile(pstrBuf, GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, 0);
if ( hDev != INVALID_HANDLE_VALUE )
{
int inBuf;
BYTE outBuf[256] = { 0 };
DWORD BytesReturned;
inBuf = OID_802_3_PERMANENT_ADDRESS;
if ( DeviceIoControl(hDev, IOCTL_NDIS_QUERY_GLOBAL_STATS, (LPVOID)&inBuf, 4, outBuf, 256, &BytesReturned, NULL) )
{
sprintf(pstrBuf, "物理mac:%02X-%02X-%02X-%02X-%02X-%02X
",
outBuf[0], outBuf[1], outBuf[2], outBuf[3], outBuf[4], outBuf[5]);
printf(pstrBuf);
bRet = TRUE;
}
inBuf = OID_802_3_CURRENT_ADDRESS;
if ( DeviceIoControl(hDev, IOCTL_NDIS_QUERY_GLOBAL_STATS, (LPVOID)&inBuf, 4, outBuf, 256, &BytesReturned, NULL) )
{
sprintf(pstrBuf, "当前mac:%02X-%02X-%02X-%02X-%02X-%02X
",
outBuf[0], outBuf[1], outBuf[2], outBuf[3], outBuf[4], outBuf[5]);
printf(pstrBuf);
bRet = TRUE;
}
CloseHandle(hDev);
}
return bRet;
}
// 网卡 MAC 地址
BOOL GetMacAddress()
{
UINT uErrorCode = 0;
IP_ADAPTER_INFO iai;
ULONG uSize = 0;
DWORD dwResult = GetAdaptersInfo(&iai, &uSize);
if ( dwResult == ERROR_BUFFER_OVERFLOW )
{
PIP_ADAPTER_INFO piai = (PIP_ADAPTER_INFO)new BYTE[uSize];
dwResult = GetAdaptersInfo(piai, &uSize);
if ( ERROR_SUCCESS == dwResult )
{
while ( piai )
{
printf("名称:%s
", piai->AdapterName);
printf("描述:%s
", piai->Description);
printf("类型:%d
", piai->Type);
GetPhyMacAddress(piai->AdapterName);
printf("
");
piai = piai->Next;
}
}
delete[] piai;
}
return TRUE;
}
全部回答
- 1楼网友:大漠
- 2021-01-31 23:19
开始”→“运行”→输入“CMD”→回车→输入“ipconfig /all”→回车。即可看到MAC地址。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯