Como o Windows sabe qual adaptador de rede é um dispositivo sem fio?

3

Eu estou tentando e tentando encontrar um valor no registro ou através do WMI (com wbemtest) que me diz que este adaptador de rede usa uma conexão sem fio. Existem valores na classe WMI Win32_NetworkAdapter como AdapterType, mas eles estão apenas informando que é um dispositivo Ethernet. Em outro PC quando eu consultar essa classe, eu recebo uma entrada WiFi_NetworkAdapter, mas acho que isso depende de como o fornecedor do driver a implementou. Eu até tentei encontrar algo no registro, mas não consegui encontrar nada. A única parte em que posso ver que este é um dispositivo sem fio é quando eu estou olhando para o nome e descrição, mas para ser honesto, isso não é uma boa solução. No Windows XP eu encontrei uma chave de registro com um campo "MediaSubType" em

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{GUID}\Connection

mas no Windows 7 essa chave parece não ser obrigatória.

Qualquer outra solução além do Registry ou do WMI também é muito apreciada, mas lembre-se de que não quero usar ferramentas de terceiros, porque mais tarde eu quero escrever um pequeno programa em C ++.

seveves
fonte

Respostas:

2

Vejo MediaSubType Valor DWORD. Se MediaSubtype = 2, o adaptador de rede é um dispositivo sem fio.

powershell gci 'hklm:SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}' -rec ^| gp ^| FT MediaSubtype, Name, PnpInstanceID -Au

Ou obter _MIB_IF_ROW2 estrutura, consulte NDIS_PHYSICAL_MEDIUM.

Também pode usar PnpInstanceID e Repositório de IDs PCI (banco de dados) ou Fornecedor de PCI e listas de dispositivos (informações) .

Veja a lista de todas as nossas conexões sem fio e suas forças de sinal:

wmic /NAMESPACE:\\ROOT\wmi path MSNdis_80211_ReceivedSignalStrength get *
STTR
fonte
Eu acho que vou usar o MIB_IF_ROW porque o MIB_IF_ROW2 só é suportado desde o Vista, certo? Mas sim ... foi isso que eu precisei.
seveves
@SeveFriede Então, se eu esqueci tudo depende da versão do driver NDIS. Eu posso estar errado, verifique as informações no CD do MSDN.
STTR
Obrigado STTR! Eu acho que no meu código C ++ eu vou para este função e isso deve funcionar bem no Windows XP com SP1 e posterior (:
seveves
@SeveFriede wmic nicconfig get MACAddress, IPAddress, Index, ServiceName, Description - obter endereço IP, MAC ... etc)
STTR
mas MSNdis_80211_ReceivedSignalStrength só está funcionando quando um WiFi está conectado a uma rede, certo?
seveves