检索集合

注意

从 Windows Server 2008 开始, (IAS) 的 Internet 身份验证服务 (NPS) 重命名为网络策略服务器。 本主题的内容适用于 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 数据类型。 类管理资源分配和解除分配,并根据需要对 VariantInitVariantClear 进行函数调用。

调用“pSdo-GetProperty> () ”后,vtProtocolsCollection 变量指定对象。 vtProtocolsCollection 的 pdispVal 成员包含指向对象的 IDispatch 接口的指针。

上述示例代码可以改编为检索其他 NPS 集合,例如 NPS 请求处理程序集合。 IASPROPERTIES 枚举类型枚举值对应于可用的 NPS 集合。

_variant_t

IASPROPERTIES

ISdo::GetProperty

ISdoCollection

检索服务 SDO

VariantClear

VariantInit

变异