📄 getmac.c
字号:
#include <windows.h>
#include <wincon.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
typedef struct _ASTAT_
{
ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff [30];
}ASTAT, * PASTAT;
//得到LANA编号
//lana返回的的LANA数组
//返回LANA数量
int __stdcall __declspec(dllexport) GetLanaID(int *lana)
{
NCB Ncb;
UCHAR uRetCode;
LANA_ENUM lenum;
int i;
memset( &Ncb, 0, sizeof(Ncb) );
Ncb.ncb_command = NCBENUM;
Ncb.ncb_buffer = (UCHAR *)&lenum;
Ncb.ncb_length = sizeof(lenum);
uRetCode = Netbios( &Ncb );
if (uRetCode==NRC_GOODRET)
{
for (i=0; i < lenum.length ;i++)
lana[i] = lenum.lana[i];
}
return lenum.length;
}
/*得到MAC地址*/
//LANAID:LANA编号,输入参数
//addr:返回的MAC地址
//返回0表示成功,反之,失败
int __stdcall __declspec(dllexport) GetMACAddress(int LANAID,int *addr)
{
NCB Ncb;
UCHAR uRetCode;
char NetName[50];
ASTAT Adapter;
memset( &Ncb, 0, sizeof(Ncb) );
Ncb.ncb_command = NCBRESET;
Ncb.ncb_lana_num = LANAID;
uRetCode = Netbios( &Ncb );
memset( &Ncb, 0, sizeof (Ncb) );
Ncb.ncb_command = NCBASTAT;
Ncb.ncb_lana_num = LANAID;
strcpy( Ncb.ncb_callname, "* " );
Ncb.ncb_buffer = (char *) &Adapter;
Ncb.ncb_length = sizeof(Adapter);
uRetCode = Netbios( &Ncb );
if ( uRetCode == 0 )
{
addr[0]= Adapter.adapt.adapter_address[0];
addr[1]= Adapter.adapt.adapter_address[1];
addr[2]= Adapter.adapt.adapter_address[2];
addr[3]= Adapter.adapt.adapter_address[3];
addr[4]= Adapter.adapt.adapter_address[4];
addr[5]= Adapter.adapt.adapter_address[5];
}
return uRetCode;
}
#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -