Windows客户端开发--获取系统mac地址(使用GetAdaptersInfo和GetAdaptersAddresses)

本文介绍了在Windows客户端开发中获取MAC地址的两种方法:GetAdaptersInfo和GetAdaptersAddresses。GetAdaptersInfo用于获取本地计算机的适配器信息,其结构体包含Type、AddressLength和Address等关键字段。虽然在Windows XP及以后版本建议使用GetAdaptersAddresses,该函数能够获取本地计算机上的所有适配器地址。GetAdaptersAddresses重点关注PhysicalAddressLength和PhysicalAddress字段。
摘要由CSDN通过智能技术生成

使用WMI可以获取本地计算机的mac信息,现在就用另外两种方法获取mac地址:
GetAdaptersInfo 和 GetAdaptersAddresses

GetAdaptersInfo
功能:
The GetAdaptersInfo function retrieves adapter information for the local computer.
原型:

DWORD GetAdaptersInfo(
  _Out_   PIP_ADAPTER_INFO pAdapterInfo,
  _Inout_ PULONG           pOutBufLen
);

其中参数有PIP_ADAPTER_INFO:

typedef struct _IP_ADAPTER_INFO {
    struct _IP_ADAPTER_INFO* Next;
    DWORD ComboIndex;
    char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];
    char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
    UINT AddressLength;
    BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
    DWORD Index;
    UINT Type;
    UINT DhcpEnabled;
    PIP_ADDR_STRING CurrentIpAddress;
    IP_ADDR_STRING IpAddressList;
    IP_ADDR_STRING GatewayList;
    IP_ADDR_STRING DhcpServer;
    BOOL HaveWins;
    IP_ADDR_STRING PrimaryWinsServer;
    IP_ADDR_STRING SecondaryWinsServer;
    time_t LeaseObtained;
    time_t LeaseExpires;
} IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;

上面的结构体中,我们注意关注TypeAddressLengthAddress

Type:

#define MIB_IF_TYPE_OTHER               1
#define MIB_IF_TYPE_ETHERNET            6
#define MIB_IF_TYPE_TOKENRING           9
#define MIB_IF_TYPE_FDDI                15
#define MIB_IF_TYPE_PPP                 23
#define MIB_IF_TYPE_LOOPBACK            24
#define MIB_IF_TYPE_SLIP                28

上代码:

bool GetMacAddressByAdaptersInfo(std::string &mac_address)
{
  bool ret = false</
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一苇渡江694

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值