Показать сообщение отдельно
  #9  
Старый 20.07.2014, 21:04
Agat330 Agat330 вне форума
Прохожий
 
Регистрация: 08.04.2014
Сообщения: 26
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Этот тип используется в самой dll, поскольку это её идентификатор. Следовательно, он должен быть уже определен в ней. Я правильно понимаю? Может, его тоже можно как-то позаимствовать из библиотеки?

Еще, правильно ли я понял фразу из MSDN "WLAN_AVAILABLE_NETWORK_LIST structure contains an array of NIC interface information" - что WLAN_AVAILABLE_NETWORK_LIST это массив (array), элементы которого описываются структурой:
Код:
typedef struct _WLAN_INTERFACE_INFO_LIST {
  DWORD               dwNumberOfItems;
  DWORD               dwIndex;
  WLAN_INTERFACE_INFO InterfaceInfo[];
} WLAN_INTERFACE_INFO_LIST, *PWLAN_INTERFACE_INFO_LIST;
Если да, то объясните пожалуйста последнюю строчку, я ее не понял.

З.Ы.: Я так похоже, скоро выучу С, плюну на все эти заморочки и напишу на нем всю прогу

Ну, за час копания MSDN и Гугла вырисовалось следующее:
Код:
type
  Tfrm_Main = class(TForm)
  ...
  end;

  WLAN_INTERFACE_STATE = (wlan_interface_state_not_ready,
                          wlan_interface_state_connected,
                          wlan_interface_state_ad_hoc_network_formed,
                          wlan_interface_state_disconnecting,
                          wlan_interface_state_disconnected,
                          wlan_interface_state_associating,
                          wlan_interface_state_discovering,
                          wlan_interface_state_authenticating);

  WLAN_INTERFACE_INFO = record
    InterfaceGuid: GUID;
    strInterfaceDescription: array [1..256] of WChar;
    isState: WLAN_INTERFACE_STATE;
  end;

  WLAN_AVAILABLE_NETWORK_LIST = record
    dwNumberOfItems: dword;
    dwIndex: dword;
    Network: array of WLAN_INTERFACE_INFO;
  end;

var
  frm_Main: Tfrm_Main;

implementation
...
function WlanEnumInterfaces(hClientHandle:THandle;
                            pReserved: pointer;
                            ppInterfaceList: PWLAN_INTERFACE_INFO_LIST): DWORD;
                            stdcall; external 'wlanapi.dll' name 'WlanEnumInterfaces';
...
{$R *.dfm}
Ссылки на соответствующие страницы MSDN, от которых отталкивался:
WLAN_INTERFACE_STATE
WLAN_INTERFACE_INFO
WLAN_AVAILABLE_NETWORK_LIST
PWLAN_INTERFACE_INFO_LIST

Посмотрите, не накосячил ли я где... И да, еще не смог понять, что такое GUID с 16-й строки листинга - "Undeclared identifier: 'GUID'". Гугл выдал целую пачку вариантов, но не знаю, какой из них тот. MSDN тоже не дал ответа (или я не там искал?)

Во всё той же хабрастатье наткнулся:
Цитата:
Здесь pInterfaceGuid это указатель на GUID интерфейса, получить мы его можем из структуры WLAN_INTERFACE_INFO, список которых мы уже имеем после вызова WlanEnumInterfaces
Эээ... мне кажется,или речь здесь о Wi-Fi сетевой карте? Тогда вопрос у нас получается - как объяснить Дельфе, что вот сюда подставляется вафай-адаптер? Каким это безобразие описывается типом?
Голова уже квадратная, пойду спать, пожалуй...
Ответить с цитированием