Recuperando uma coleção
Observação
O IAS (Serviço de Autenticação da Internet) foi renomeado como NPS (Servidor de Política de Rede) a partir do Windows Server 2008. O conteúdo deste tópico se aplica à IAS e ao NPS. Ao longo do texto, o NPS é usado para se referir a todas as versões do serviço, incluindo as versões originalmente conhecidas como IAS.
O código a seguir recupera a coleção de clientes para o Servidor de Política de Rede.
// Retrieve the clients collection
HRESULT hr;
CComPtr<ISdo> pSdo;
hr = pSdoServiceControl->QueryInterface(
__uuidof(ISdo),
(void**) &pSdo
);
if (FAILED(hr))
{
return hr;
}
//
// First Retrieve the protocols collection
//
_variant_t vtProtocolsCollection;
hr = pSdo->GetProperty(
PROPERTY_IAS_PROTOCOLS_COLLECTION,
&vtProtocolsCollection
);
if (FAILED(hr))
{
return hr;
}
//
// Get the ISdoCollection interface
// for the object.
//
CComPtr<ISdoCollection> pProtocolsCollection;
hr = vtProtocolsCollection.pdispVal->QueryInterface(
__uuidof(ISdoCollection),
(void **) &pProtocolsCollection
);
if (FAILED(hr))
{
return hr;
}
//
// Then retrieve the RADIUS protocol
//
CComPtr<IDispatch> pRadiusDispatch;
_variant_t vtProtocolName = L"Microsoft Radius Protocol";
hr = pProtocolsCollection->Item(&vtProtocolName, &pRadiusDispatch);
if (FAILED(hr))
{
return hr;
}
CComPtr<ISdo> pRadiusSdo;
hr = pRadiusDispatch->QueryInterface(
__uuidof(ISdo),
(void **) &pRadiusSdo
);
if (FAILED(hr))
{
return hr;
}
//
// Then retrieve the clients collection
//
_variant_t vtClientsCollection;
hr = pRadiusSdo->GetProperty(PROPERTY_RADIUS_CLIENTS_COLLECTION, &vtClientsCollection);
if (FAILED(hr))
{
return hr;
}
CComPtr<ISdoCollection> pClientsCollection;
hr = vtClientsCollection.pdispVal->QueryInterface(
__uuidof(ISdoCollection),
(void **) &pClientsCollection
);
if (FAILED(hr))
{
return hr;
}
Comentários
A variável pSdoServiceControl contém um ponteiro para um Objeto de Dados do Servidor para NPS. Para obter mais informações, consulte o tópico Recuperando um SDO de serviço.
A variável vtClientsCollection é do tipo _variant_t. Um objeto _variant_t encapsula ou inclui o tipo de dados VARIANT . A classe gerencia a alocação e a desalocação de recursos e faz chamadas de função para VariantInit e VariantClear conforme apropriado.
Após a chamada para "pSdo-GetProperty>()", a variável vtProtocolsCollection especifica um objeto . O membro pdispVal de vtProtocolsCollection contém um ponteiro para a interface IDispatch do objeto.
O código de exemplo acima pode ser adaptado para recuperar outras coleções NPS, por exemplo, as coleções NPS Request Handlers. O tipo de enumeração IASPROPERTIES enumerou valores que correspondem às coleções NPS disponíveis.
Tópicos relacionados