Compartilhar via


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.

_variant_t

IASPROPERTIES

ISdo::GetProperty

ISdoCollection

Recuperando um SDO de serviço

Variantclear

VariantInit

VARIANTE