В Вынь98 работает нормально. То есть если у меня одна карта, то возвращается количество 1. И первая карта имеет LANA номер 0. В то время как на Вынь2000 Сервер, функция возвращает, что у меня 5 карт, причем LANA номера идут не попорядку. В MSDN написано, что в поле adapter_type будет 0xFE если это Ethernet, но у меня возвращается 0xC5. Причем мой настоящий MAC адрес повторяется дважды
Вот и вопрос — почему в Вынь2000 Сервер работает таким образом. И можно ли от этого как-то избавится. В принципе я бы мог использовать и другие методы определения, но для меня главное знать, чтобы была однозначность в определении на разных платформах Вынь и чтобы можно было определить MAC адрес удаленной машины.
Re: Вопрос по определению MAC адреса с помощью NetBios
Здравствуйте toypaul, Вы писали:
T>Такой код:
T> memset( &Ncb, 0, sizeof(Ncb) ); T> Ncb.ncb_command = NCBENUM; T> Ncb.ncb_buffer = (UCHAR *)&lenum; T> Ncb.ncb_length = sizeof(lenum); T> uRetCode = Netbios( &Ncb ); T> wsprintf(message, "Количество карт: %d", lenum.length ); T> MessageBox(NULL,message,"",MB_OK); T> T> if (argv[1]) T> { T> for (int i=0;i < lenum.length; i++) T> { T> memset( &Ncb, 0, sizeof(Ncb) ); T> Ncb.ncb_command = NCBRESET; T> Ncb.ncb_lana_num = lenum.lana[i]; T> uRetCode = Netbios( &Ncb ); T> T> memset( &Ncb, 0, sizeof (Ncb) ); T> Ncb.ncb_command = NCBASTAT; T> Ncb.ncb_lana_num = lenum.lana[i]; T> T> memset(Ncb.ncb_callname,' ',NCBNAMSZ); T> memcpy( Ncb.ncb_callname,argv[1],strlen(argv[1])); T> Ncb.ncb_buffer = (UCHAR *) &Adapter; T> Ncb.ncb_length = sizeof(Adapter); T> T> uRetCode = Netbios( &Ncb ); T>...
T>В Вынь98 работает нормально. То есть если у меня одна карта, то возвращается количество 1. И первая карта имеет LANA номер 0. В то время как на Вынь2000 Сервер, функция возвращает, что у меня 5 карт, причем LANA номера идут не попорядку. В MSDN написано, что в поле adapter_type будет 0xFE если это Ethernet, но у меня возвращается 0xC5. Причем мой настоящий MAC адрес повторяется дважды
T>Вот и вопрос — почему в Вынь2000 Сервер работает таким образом. И можно ли от этого как-то избавится. В принципе я бы мог использовать и другие методы определения, но для меня главное знать, чтобы была однозначность в определении на разных платформах Вынь и чтобы можно было определить MAC адрес удаленной машины.
Lana_num это не сетевая карта, это интерфейс Netbios, и NCBENUM перечисляет именно их.
Тобишь если у тебя на машине стоит две карты и два протокола привязанные к NETBIOS, например TCP/IP и NetBEUI
то у тебя будет четыре lana_num'а TCP на первой карте, TCP на второй, NetBEUI на первой и т.д.
в Win98 протокол который указан "по умолчанию" всегда имеет lana_num 0, под NT и 2000 никто этого не гарантирует, но под них есть прога для конфигурирования этого самого lana_num'а. Где-то на Microsoft'е лежит.
Re: Вопрос по определению MAC адреса с помощью NetBios