使用windows API获取本地主机的MAC地址
来源:互联网 发布:windows 10 mobile qq 编辑:程序博客网 时间:2024/05/17 00:55
本地网卡的MAC地址可以通过ARP协议获得,也可以通过API查询获得,IP Helper API中还有一组管理网络适配器的API,其中有一个可以获得网卡相关信息。
DWOED GetAdaptersInfo(
PIP_ADAPTER_INFO pAdapterInfo;
PULONG pOutBufLen;
);
两个参数分别是:存储网卡信息的缓冲区指针和缓冲区大小。
// GetAdapterInfo.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<Winsock2.h>
#include <Windows.h>
#include<Iphlpapi.h>
#include<iostream>
#include<tchar.h>
#include<conio.h>
#pragma comment (lib, "Iphlpapi.lib")
#pragma comment (lib, "Ws2_32")
int _tmain(int argc, _TCHAR* argv[])
{
PIP_ADAPTER_INFO ipAdapterInfo;
PIP_ADAPTER_INFO ipAdapter = NULL;
DWORD dwRetval = 0;
ULONG ulOutBuffer = sizeof(IP_ADAPTER_INFO);
ipAdapterInfo = (IP_ADAPTER_INFO*)malloc(sizeof(IP_ADAPTER_INFO));
dwRetval = GetAdaptersInfo(ipAdapterInfo, &ulOutBuffer);
if (dwRetval == ERROR_BUFFER_OVERFLOW)
{
free(ipAdapterInfo);
ipAdapterInfo = (IP_ADAPTER_INFO*)malloc(ulOutBuffer);
dwRetval = GetAdaptersInfo(ipAdapterInfo, &ulOutBuffer);
}
if (dwRetval == NO_ERROR)
{
ipAdapter = ipAdapterInfo;
while (ipAdapter)
{
printf("Adapter_name: %s\n", ipAdapter->AdapterName);
printf("Adapter_desc: %s\n", ipAdapter->Description);
printf("Adapter_macAddress: %02X %02X %02X %02X %02X %02X %02X %02X\n",
ipAdapter->Address[0], ipAdapter->Address[1],
ipAdapter->Address[2], ipAdapter->Address[3],
ipAdapter->Address[4], ipAdapter->Address[5]);
printf("IP_Address: %s\n", ipAdapter->IpAddressList.IpAddress.String);
printf("IP Mask: %s\n", ipAdapter->IpAddressList.IpMask.String);
printf("Getway: %s\n", ipAdapter->GatewayList.IpAddress.String);
if (ipAdapter->DhcpEnabled)
{
printf("DHCP_Enable: yes\n");
printf("DHCP_Server: %s\n", ipAdapter->DhcpServer);
printf("Lease obtained: %d\n", ipAdapter->LeaseObtained);
}
if (ipAdapter->HaveWins)
{
printf("Have_Wins: yes\n");
printf("Primery_Wins: %s\n", ipAdapter->PrimaryWinsServer);
printf("Seconde_Wins: %s\n", ipAdapter->SecondaryWinsServer);
}
else
{
printf("Have Wins: No!");
}
ipAdapter = ipAdapter->Next;
}
}
getch();
}
//一些相关的知识:
IP_ADAPTER_INFO结构体:
typedef struct _IP_ADAPTER_INFO {
struct _IP_ADAPTER_INFO* Next; //指向链表中下一个PIP_ADAPTER_INFO信息
DWORD ComboIndex; //预留值
char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];//用ANSI字符表达的适配器名称
char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4]; //用ANSI字符表达的适配器描述
UINT AddressLength;//适配器硬件地址以字节计算的长度
BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH]; //硬件地址以BYTE数组表示
DWORD Index; //适配器索引
UINT Type; //适配器类型
UINT DhcpEnabled;//适配器是否开DHCP
PIP_ADDR_STRING CurrentIpAddress;//预留值
IP_ADDR_STRING IpAddressList;//该适配器的IPV4地址列表
IP_ADDR_STRING GatewayList;//该适配器的IPV4网关地址列表
IP_ADDR_STRING DhcpServer;//该适配器的DHCP服务器的IPV4列表
BOOL HaveWins; //是否有WINS服务器
IP_ADDR_STRING PrimaryWinsServer;//主WINS服务器
IP_ADDR_STRING SecondaryWinsServer;//第二WINS服务器
time_t LeaseObtained;//服务器规定IP地址使用期限,此为地址租用开始时间
time_t LeaseExpires; //地址租约到期时间
} IP_ADAPTER_INFO, *PIP_ADAPTER_INFO
- 使用windows API获取本地主机的MAC地址
- C++编码获取本地主机的MAC地址
- 获取主机MAC地址
- C#编程之 如何获取本地和远程主机的IP及MAC地址
- 如何获取本地和远程主机的IP及MAC地址
- C#编程之 如何获取本地和远程主机的IP及MAC地址
- C#编程之 如何获取本地和远程主机的IP及MAC地址
- 获取远程主机MAC地址的方法
- 用SendARP API函数获取远程主机MAC地址学习心得
- 获取本地主机IP地址
- Java获取主机Mac地址
- 修改主机MAC地址[windows]
- Windows下Java如何调用本地获取mac地址
- 使用ACE获取主机的IP地址
- 如何使用Windows API获取IP、MAC
- python获取本地的IP地址及mac地址
- c#获取远程主机的MAC地址(转贴)
- Linux LAN 通过IP获取目标主机的MAC地址
- MySQL之——MySQL使用中遇到的有关问题
- Springmvc学习总结
- 03-Windows Server 2012 R2 会话远程桌面-标准部署(RemoteApp)
- 司法考试培训哪家强?
- eclipse安装maven插件
- 使用windows API获取本地主机的MAC地址
- Formats of Printf
- 分析 java 内存机制
- Golang import 下划线
- 爱贝云计费服务端接入
- Android 九宫格解锁框架
- 05-Windows Server 2012 R2 会话远程桌面-标准部署-RD连接代理高可用性(RemoteApp)
- noip2005谁拿最多奖学金(模拟)题解
- session,cookie讲的很好