Поделиться через


Получение коллекции

Примечание

Служба проверки подлинности в Интернете (IAS) была переименована в сервер политики сети (NPS), начиная с Windows Server 2008. Содержание этого раздела относится как к IAS, так и к NPS. В тексте NPS используется для обозначения всех версий службы, включая версии, первоначально называемые IAS.

 

Следующий код извлекает коллекцию клиентов для сервера политики сети.

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

Комментарии

Переменная pSdoServiceControl содержит указатель на объект данных сервера для NPS. Дополнительные сведения см. в разделе Извлечение SDO службы.

Переменная vtClientsCollection имеет тип _variant_t. Объект _variant_t инкапсулирует или заключает тип данных VARIANT . Класс управляет выделением ресурсов и освобождением, а также соответствующим образом вызывает функции VariantInit и VariantClear .

После вызова pSdo-GetProperty>()переменная vtProtocolsCollection указывает объект . Член pdispVal объекта vtProtocolsCollection содержит указатель на интерфейс IDispatch для объекта .

Приведенный выше пример кода можно адаптировать для получения других коллекций NPS, например коллекций обработчиков запросов NPS. Тип перечисления IASPROPERTIES перечисляет значения, соответствующие доступным коллекциям NPS.

_variant_t

IASPROPERTIES

ISdo::GetProperty

ISdoCollection

Получение SDO службы

VariantClear

VariantInit

ВАРИАНТ