Номер сетевой платы
От: bono007  
Дата: 03.05.05 06:18
Оценка:
Господа, подскажите, как программно определить уникальный номер сетевой карты(Ethernet Address).
Re: Номер сетевой платы
От: c-smile Канада http://terrainformatica.com
Дата: 03.05.05 06:32
Оценка:
Здравствуйте, bono007, Вы писали:


B>Господа, подскажите, как программно определить уникальный номер сетевой карты(Ethernet Address).


Какая-то из частей GUID возвращаемого функцией UuidCreateSequential
является MAC адресом сетевой карты. См. в Гугле детали.
Re[2]: Номер сетевой платы
От: bono007  
Дата: 03.05.05 07:01
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Какая-то из частей GUID возвращаемого функцией UuidCreateSequential

CS>является MAC адресом сетевой карты. См. в Гугле детали.

Нет, я прошу не MAC-адрес!

Прошу Ethernet Address!
Re[3]: Номер сетевой платы
От: Sinclair Россия https://github.com/evilguest/
Дата: 03.05.05 12:28
Оценка: +1
Здравствуйте, bono007, Вы писали:
B>Нет, я прошу не MAC-адрес!
B>Прошу Ethernet Address!
Нет никакого Ethernet Address. У каждой платы Ethernet есть гарантированно уникальный шестибайтовый номер. Именно он используется при адресации пакетов (точнее, фреймов) в сетях Ethernet.
Способ с GUID ненадежен, т.к. он может генерироваться несколькими алгоритмами.
Получить доступ к информации об установленных в системе адаптерах можно несколькими способами. Если ты работаешь на винде моложе 2000, то проще всего воспользоваться IP Helper API, в частности функцией GetAdaptersInfo.
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Номер сетевой платы
От: Spaider Верблюд  
Дата: 04.05.05 07:58
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, bono007, Вы писали:



B>>Господа, подскажите, как программно определить уникальный номер сетевой карты(Ethernet Address).


CS>Какая-то из частей GUID возвращаемого функцией UuidCreateSequential

CS>является MAC адресом сетевой карты. См. в Гугле детали.

Пальцем в небо В принципе, на любой вопрос достаточно будет ответить "См. в Гугле детали".
Как вариант, я за 30 сек в MSDN нашел статью Q118623 "HOWTO: Get the MAC Address for an Ethernet Adapter".
Поищите и обрящите. На всякий случай вот оттеда кусок кода

Sample Code
   #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;

   ASTAT Adapter;

   void main (void)
   {
      NCB Ncb;
      UCHAR uRetCode;
      char NetName[50];
      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 );
      printf( "The NCBENUM return code is: 0x%x \n", uRetCode );

      for(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 );
          printf( "The NCBRESET on LANA %d return code is: 0x%x \n",
                  lenum.lana[i], uRetCode );

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

          strcpy( Ncb.ncb_callname,  "*               " );
          Ncb.ncb_buffer = (char *) &Adapter;
          Ncb.ncb_length = sizeof(Adapter);

          uRetCode = Netbios( &Ncb );
          printf( "The NCBASTAT on LANA %d return code is: 0x%x \n",
                  lenum.lana[i], uRetCode );
          if ( uRetCode == 0 )
          {
             printf( "The Ethernet Number on LANA %d is:
                     %02x%02x%02x%02x%02x%02x\n",
            lenum.lana[i],
                  Adapter.adapt.adapter_address[0],
                  Adapter.adapt.adapter_address[1],
                  Adapter.adapt.adapter_address[2],
                  Adapter.adapt.adapter_address[3],
                  Adapter.adapt.adapter_address[4],
                  Adapter.adapt.adapter_address[5] );
          }
       }

   }


Еще можно попробовать через WMI.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
--
К вашим услугам,
Re[3]: Номер сетевой платы
От: Sinclair Россия https://github.com/evilguest/
Дата: 04.05.05 08:30
Оценка:
Здравствуйте, Spaider, Вы писали:

S>Пальцем в небо В принципе, на любой вопрос достаточно будет ответить "См. в Гугле детали".

S>Как вариант, я за 30 сек в MSDN нашел статью Q118623 "HOWTO: Get the MAC Address for an Ethernet Adapter".
S>Поищите и обрящите. На всякий случай вот оттеда кусок кода
Статья забавная, но надо обратить внимание на следующий ахтунг: она сработает только если для адаптера установлен биндинг NetBIOS. У меня, если я не разучился читать окошко пропертей сетевого подключения, вроде как ни на одном из адаптеров этого биндинга нету.
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.