Страница 18 из 24
40)---------------------------------------------------------------------------- Q> Можно ли в 95 использовать функции Net*() (NetFileEnum и т.п.)? A> Можно. Вариант 1: Делаем по порядку - п.1 - Покупаем качественный бубен. п.2 - Периодически постукивая бубном и обходя нижеприведенные грабли пишем прогу. В Win95 вы должны включать файл svrapi.h,а не lm.h как в NT. Также нужно использовать svrapi.lib и svrapi.dll,а не netapi32.lib и netapi32.dll.Если хочется поддерживать обе платформы - прийдется dll грузить динамически. Внимание: в 95 Net*() функции имеют другую семантику по сравнению с NT. Строки должны быть в ANSI,не все уровни доступны.Возвращаемые структуры различны.Управление памятью различно. Для NT требуется адрес указателя на буфер,95-му надо указатель на буфер. // Windows NT BYTE *buf; DWORD prefmaxlen; // ... buf = NULL; prefmaxlen = 8192; // or whatever result = NetSomeFunction( ..., &buf, prefmaxlen, ... ); // process buffer ... NetApiBufferFree( buf ); // Windows 9X BYTE *buf; WORD cbBuffer; // ... cbBuffer = 8192; // or whatever buf = (BYTE *) malloc( cbBuffer ); result = NetSomeFunction( ..., buf, cbBuffer ... ); // process buffer ... free( buf ); Крайне рекомендуется посмотреть svrapi.h файл. PS: Если ничего не получается - то или эта функция вообще отсутствует в srvapi.h и dll(неплохо бы сначала посмотреть), или мало трясли бубном. PPS: Говорят еще хорошо помогает дудочка из малой берцовой кости девственницы - духов хорошо ублажает ;-) Вариант 2: Для Windows 95 есть что-то типа Administration Kit (лежит в WinNT Resource Kit). Вот там есть 2 dll-ины (radmin32.dll & rlocal32.dll), в которых описаны все или почти все функции NT-евой netapi32.dll. Hадо юзать эти dll-ины. 41)---------------------------------------------------------------------------- Q> Как определить частоту процессора? A> WinNT: HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\ System\CentralProcessor\0\~Mhz 42)--------------------------------------------------------------------------- Q> Как узнать MAC адрес сетевой карты? A> Вариант1: From : Sergey Gazimagomedov 2:453/11.13 Мне нужен был МАС адpес, так я его получал, пользуясь NetBIOS. Добавляешь имя NetBIOS и посылаешь на имя станции, нужной для опpеделения(можно и своей) датагpамный пакет с заполненным NCB. Вот исходник моей функции для опpеделения МАС адpеса. UCHAR MYLIBAPI GetAdapterID(char *Name, // NetBIOS имя станции UINT lana_num, CARDID *ID) // 6 байтовый массив { UCHAR rc = 0; UCHAR Status[256]; while( lstrlen(Name) - 15) lstrcat(Name, " "); memset(&SNcb, 0, sizeof(NCB)); SNcb.ncb_command = NCBASTAT; SNcb.ncb_buffer = (LPSTR)Status; SNcb.ncb_length = 256; lstrcpy(SNcb.ncb_callname, Name); SNcb.ncb_lana_num = lana_num; rc = Netbios( &SNcb ); if(rc ==0){ memcpy(ID, Status, 6); } return(SNcb.ncb_cmd_cplt); } Это под Win32. Конечно должен быть пpотокол NetBIOS, но он в фоpточках и так необходим. |