?? iic.cpp
字號(hào):
#include "stdafx.h"
#include "iic.h"
#include "datasvr.h"
#include <Nb30.h>
void MakeSMsg(SENDMSG &smsg,char msg_type[4])
{
memset(&smsg,' ',512);
memcpy(smsg.begin_code,"SSSS",4);
memcpy(smsg.end_code,"ZZZZ",4);
memcpy(smsg.msg_type,msg_type,4);
}
void MakeRMsg(RECHIEVEMSG &rmsg,char msg_type[4])
{
memset(&rmsg,' ',512);
memcpy(rmsg.begin_code,"RRRR",4);
memcpy(rmsg.end_code,"ZZZZ",4);
memcpy(rmsg.msg_type,msg_type,4);
rmsg.msg_type[0]='R';
}
typedef struct _ASTAT_ {
ADAPTER_STATUS adapt; /* LAN adapter status */
NAME_BUFFER NameBuff[30]; /* LAN adapter name buffer */
}ASTAT, *PASTAT;
bool get_lan_adpt_addr(UCHAR w_adpt_num,char * w_adpt_addr)
{
/***** Static variables definition *****/
NCB w_ncb; /* Network control block */
UCHAR w_rtncd; /* Netbios return code */
ASTAT w_adapter; /* LAN adapter information */
unsigned int i; /* Loop counter */
/***** Initialize Ncb *****/
memset(&w_ncb, 0x00, sizeof(w_ncb));
/***** Reset a LAN adapter *****/
w_ncb.ncb_command = NCBRESET;
w_ncb.ncb_lana_num = w_adpt_num;
w_rtncd = Netbios(&w_ncb);
// printf("\nLAN adapter %d, The NCBRESET command return code is: 0x%x\n",
// w_adpt_num, w_rtncd);
if ( 0 != w_rtncd ) {
return(false);
}
/***** Initialize Ncb *****/
memset(&w_ncb, 0x00, sizeof(w_ncb));
/***** Get LAN adapter physical address *****/
w_ncb.ncb_command = NCBASTAT;
w_ncb.ncb_buffer = (UCHAR*) &w_adapter;
w_ncb.ncb_length = sizeof(w_adapter);
w_ncb.ncb_lana_num = w_adpt_num;
strcpy((char*) &w_ncb.ncb_callname, "*");
w_rtncd = Netbios(&w_ncb);
if ( 0 != w_rtncd ) {
return(false);
}
sprintf(&w_adpt_addr[0], "%02x%02x%02x%02x%02x%02x\0",
w_adapter.adapt.adapter_address[0],
w_adapter.adapt.adapter_address[1],
w_adapter.adapt.adapter_address[2],
w_adapter.adapt.adapter_address[3],
w_adapter.adapt.adapter_address[4],
w_adapter.adapt.adapter_address[5]);
for (i=0; i<strlen(w_adpt_addr); i++)
w_adpt_addr[i] = toupper(w_adpt_addr[i]);
return(true);
}
bool Get_MACAddress( char* mac)
{
memset(mac,' ',60);
/***** Static variables definition *****/
NCB w_ncb; /* Network control block */
LANA_ENUM w_lenum; /* LAN adapter number struct */
UCHAR w_rtncd; /* Netbios return code */
char w_adpt_addr[12+1]; /* Adapter physical address */
int i; /* Loop counter */
/***** Initialize Ncb *****/
memset(&w_ncb, 0x00, sizeof(w_ncb));
/***** Enumerates LAN adapter (LANA) numbers *****/
w_ncb.ncb_command = NCBENUM;
w_ncb.ncb_buffer = (UCHAR*) &w_lenum;
w_ncb.ncb_length = sizeof(w_lenum);
w_rtncd = Netbios(&w_ncb);
if ( 0 != w_rtncd ) {
return false;
}
/***** Get each LAN adapter physical address *****/
for ( i = 0; i < w_lenum.length && i<3; i++ ) {
if (!get_lan_adpt_addr(w_lenum.lana[i], w_adpt_addr)) {
}
else {
memcpy(&mac[12*i],&w_adpt_addr[0],12);
}
}
return true;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -