Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Mac-адрес, Железо, style|ES_NUMBER

2.6K
14 мая 2003 года
Shure
12 / / 05.05.2003
1. Как узнать реальный мак сетевухи? Причем нужно еще знать а не подменен ли он. Чтение из реестра не подходит, т.к. в NT и в 9х они в разных местах хранятся.

2. Ели кто знает может расскажете по подробнее о SetWindowLong(Edit1->Handle,GWL_STYLE,style|ES_NUMBER); а имено о "style|ES_NUMBER" какие еще могут быть стили, хочется что бы в Edit1 можно было вводить только IP-адрес. Использование MaskEdit не совсем подходит.

И последний вопрос

3. Как все таки получать информацию о железе, серийник харда, номер и дата прошивки биоса и еще какйю нибудь инфу по железу, но не зависимо от версии винды ( неважно 9х это или NT, 2000, XP )

Заранее благодарен.
460
14 мая 2003 года
Berg
261 / / 27.03.2003
// Gettting localhost MAC-address (MSDN-example source)
__int64 GetMAC(void)
{
typedef struct _ASTAT_
{
ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff [30];
} ASTAT, * PASTAT;

ASTAT Adapter;

NCB Ncb;
UCHAR uRetCode;
char NetName[50];

memset( &Ncb, 0, sizeof(Ncb) );
Ncb.ncb_command = NCBRESET;
Ncb.ncb_lana_num = 0;

uRetCode = Netbios( &Ncb );
if (uRetCode) return -1;

memset( &Ncb, 0, sizeof (Ncb) );
Ncb.ncb_command = NCBASTAT;
Ncb.ncb_lana_num = 0;

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

uRetCode = Netbios( &Ncb );
if (uRetCode) return -2;
// "Packing" 6 bytes of MAC-address into __int64 MAC6b = 0;
for (int i=0; i<6; i++) MAC6b |= __int64(Adapter.adapt.adapter_address) << ((5-i)<<3);
return MAC6b;
}
460
14 мая 2003 года
Berg
261 / / 27.03.2003
В общем, это было касаемо первого вопроса...
Извиняюсь, я там в конце объявление переменной пропустил: __int64 MAC6b = 0;

Ну, и #include <nb30.h> тоже надо добавить.

В int64, конечно, преобразовывать не обязательно.
В структуре Adapter.adapt.adapter_address весь адрес аккуратно байтиками лежит...

P.S. Параллельный вопрос: тут вроде как NetBios использован. Чем это чревато? Например, какие гарантии того, что он установлен на машине?
С другой стороны это ведь в MSDN дано, т.е. под любой виндой должно работать? (win98/win2000/winXP проверял - правда, работало
:-)
2.6K
14 мая 2003 года
Shure
12 / / 05.05.2003
Проблемма стоит не в том чтобы узнать мак, а в том чтобы определить не поменял ли его пользователь ручками т.е. соответствует ли он тому что прошит в микросхеме. Ведь на сколько я понимаю его нельзя сменить, а можно подменить ( не перепрошивая микросхему конечно ). Данный пример просто вывадит сам мак причем если я его меняю в настройках сети то он мне поменяный и показывает :(

За пример кончно спасибо ( еще пригодится ).
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог