Вопрос по определению MAC адреса с помощью NetBios
От: toypaul Удмуртия http://www.1csql.ru
Дата: 21.02.02 19:26
Оценка:
Такой код:

memset( &Ncb, 0, sizeof(Ncb) );
Ncb.ncb_command = NCBENUM;
Ncb.ncb_buffer = (UCHAR *)&lenum;
Ncb.ncb_length = sizeof(lenum);
uRetCode = Netbios( &Ncb );
wsprintf(message, "Количество карт: %d", lenum.length );
MessageBox(NULL,message,"",MB_OK);

if (argv[1])
{
for (int i=0;i < lenum.length; i++)
{
memset( &Ncb, 0, sizeof(Ncb) );
Ncb.ncb_command = NCBRESET;
Ncb.ncb_lana_num = lenum.lana[i];
uRetCode = Netbios( &Ncb );

memset( &Ncb, 0, sizeof (Ncb) );
Ncb.ncb_command = NCBASTAT;
Ncb.ncb_lana_num = lenum.lana[i];

memset(Ncb.ncb_callname,' ',NCBNAMSZ);
memcpy( Ncb.ncb_callname,argv[1],strlen(argv[1]));
Ncb.ncb_buffer = (UCHAR *) &Adapter;
Ncb.ncb_length = sizeof(Adapter);

uRetCode = Netbios( &Ncb );
...

В Вынь98 работает нормально. То есть если у меня одна карта, то возвращается количество 1. И первая карта имеет LANA номер 0. В то время как на Вынь2000 Сервер, функция возвращает, что у меня 5 карт, причем LANA номера идут не попорядку. В MSDN написано, что в поле adapter_type будет 0xFE если это Ethernet, но у меня возвращается 0xC5. Причем мой настоящий MAC адрес повторяется дважды

Вот и вопрос — почему в Вынь2000 Сервер работает таким образом. И можно ли от этого как-то избавится. В принципе я бы мог использовать и другие методы определения, но для меня главное знать, чтобы была однозначность в определении на разных платформах Вынь и чтобы можно было определить MAC адрес удаленной машины.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.