Sobre a API do Gerenciador de Listas de Rede
O ambiente de rede do Microsoft Windows permite que computadores multihomed se conectem a várias redes simultaneamente. Pode haver várias redes sem fio disponíveis junto com conexões LAN e discada. O Gerenciador de Listas de Rede identifica as redes disponíveis e retorna dados de atributo de rede para o aplicativo.
A API do Gerenciador de Listas de Rede interage com o serviço Gerenciador de Listas de Rede para identificar e recuperar propriedades de cada rede à qual o computador se conecta. Cada rede é identificada exclusivamente com uma assinatura de rede com base nas propriedades identificáveis exclusivamente dessa rede. Quando um aplicativo se registra para notificações do Gerenciador de Listas de Rede, o aplicativo recebe notificações sobre a disponibilidade de novas conexões de rede ou alterações em conexões de rede existentes. Os aplicativos podem ajustar sua lógica dependendo de: a qual rede eles estão conectados; a qual conexão de rede eles estão conectados; ou quais são as propriedades de rede. Com essas informações, os aplicativos podem ajustar suas ações com base nas condições de rede atuais
O Windows Vista apresenta novas interfaces que podem ser usadas para obter informações detalhadas sobre essas características de rede e muito mais. Com a interface INetworkListManager , é fácil enumerar todas as redes (INetwork) que um computador já viu, ou apenas as redes conectadas ou apenas as redes desconectadas. A interface INetworkListManager também facilita a enumeração dos adaptadores de rede em um computador.
A interface INetwork é usada para determinar as propriedades de uma conexão de rede: nome, descrição, ID, gerenciado/autenticado, conectado/desconectado e muito mais. É possível que uma única rede esteja conectada a várias interfaces, portanto, por meio de uma interface INetwork , você também pode enumerar as instâncias da interface INetwork que está sendo usada.
A interface INetwork informa as propriedades relevantes de uma interface: ID, GUID, Tipo (gerenciado, autenticado) e Estado (conectado, desconectado, V4 Local, V4 Internet, V6 Local, V6 Internet V6). V4 Local significa acesso local do Protocolo de Internet versão 4 (IPv4). Internet V4 significa IPv4 com acesso à Internet. V6 Internet local e V6 significa IPv6.
A raiz da árvore de objetos para Local de Rede é a interface INetworkListManager . Essa interface é implementada na coclass CLSID_NetworkListManager . Para usar essa interface, é necessário criar o objeto COM CLSID_NetworkListManager , conforme demonstrado:
#include <windows.h>
#include <netlistmgr.h>
#pragma comment(lib, "ole32.lib")
void main()
{
INetworkListManager *pNetworkListManager = NULL;
HRESULT hr = CoCreateInstance(CLSID_NetworkListManager, NULL,
CLSCTX_ALL, IID_INetworkListManager,
(LPVOID *)&pNetworkListManager);
}