Recuperar una colección

Nota

A partir de Windows Server 2008, se cambió el nombre del servicio de autenticación de Internet (IAS). El contenido de este tema se aplica tanto a IAS como a NPS. A lo largo del texto, NPS se usa para hacer referencia a todas las versiones del servicio, incluidas las versiones conocidas originalmente como IAS.

 

El código siguiente recupera la colección de clientes para el servidor de directivas de red.

// 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;
   }

Comentarios

La variable pSdoServiceControl contiene un puntero a un objeto de datos de servidor para NPS. Para obtener más información, consulte el tema Recuperación de un SDO de servicio.

La variable vtClientsCollection es de tipo _variant_t. Un objeto _variant_t encapsula o incluye el tipo de datos VARIANT . La clase administra la asignación y desasignación de recursos, y realiza llamadas de función a VariantInit y VariantClear según corresponda.

Después de la llamada a "pSdo-GetProperty>()", la variable vtProtocolsCollection especifica un objeto . El miembro pdispVal de vtProtocolsCollection contiene un puntero a la interfaz IDispatch del objeto.

El código de ejemplo anterior se puede adaptar para recuperar otras colecciones NPS, por ejemplo, las colecciones de controladores de solicitudes NPS. El tipo de enumeración IASPROPERTIES enumera los valores enumerados que corresponden a las colecciones NPS disponibles.

_variant_t

IASPROPERTIES

ISdo::GetProperty

ISdoCollection

Recuperación de un SDO de servicio

VariantClear

VariantInit

VARIANTE