Freigeben über


Abrufen einer Sammlung

Hinweis

Der Internetauthentifizierungsdienst (IAS) wurde ab Windows Server 2008 in Network Policy Server (NPS) umbenannt. Der Inhalt dieses Themas gilt sowohl für IAS als auch für NPS. Im gesamten Text wird NPS verwendet, um auf alle Versionen des Diensts zu verweisen, einschließlich der ursprünglich als IAS bezeichneten Versionen.

 

Der folgende Code ruft die Clientsammlung für den Netzwerkrichtlinienserver ab.

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

Bemerkungen

Die Variable pSdoServiceControl enthält einen Zeiger auf ein Server Data Object for NPS. Weitere Informationen finden Sie im Thema Abrufen einer Dienst-SDO.

Die vtClientsCollection-Variable ist vom Typ _variant_t. Ein _variant_t -Objekt kapselt den VARIANT-Datentyp oder schließt es ein. Die -Klasse verwaltet die Ressourcenzuordnung und -zuordnung und führt je nach Bedarf Funktionsaufrufe an VariantInit und VariantClear aus.

Nach dem Aufruf von "pSdo-GetProperty>()" gibt die vtProtocolsCollection-Variable ein Objekt an. Das pdispVal-Element von vtProtocolsCollection enthält einen Zeiger auf die IDispatch-Schnittstelle für das -Objekt.

Der obige Beispielcode kann angepasst werden, um andere NPS-Auflistungen abzurufen, z. B. die NPS-Anforderungshandler-Auflistungen. Der IASPROPERTIES-Enumerationstyp zählt Werte auf, die den verfügbaren NPS-Auflistungen entsprechen.

_variant_t

IASPROPERTIES

ISdo::GetProperty

ISdoCollection

Abrufen einer Dienst-SDO

VariantClear

VariantInit

VARIANTE