次の方法で共有


コレクションの取得

注意

Windows Server 2008 以降、インターネット認証サービス (IAS) の名前がネットワーク ポリシー サーバー (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 コレクションを取得するように調整できます。 使用可能な NPS コレクションに対応する IASPROPERTIES 列挙型の列挙値。

_variant_t

IASPROPERTIES

ISdo::GetProperty

ISdoCollection

サービス SDO の取得

VariantClear

VariantInit

バリアント