次の方法で共有


ADsBuildEnumerator 関数 (adshlp.h)

ADsBuildEnumerator 関数は、指定した ADSI コンテナー オブジェクトの列挙子オブジェクトを作成します。

構文

HRESULT ADsBuildEnumerator(
  [in]  IADsContainer *pADsContainer,
  [out] IEnumVARIANT  **ppEnumVariant
);

パラメーター

[in] pADsContainer

種類: IADsContainer*

列挙するオブジェクトの IADsContainer インターフェイスへのポインター。

[out] ppEnumVariant

型: IEnumVARIANT**

指定したコンテナー オブジェクトに対して作成された列挙子オブジェクトを受け取る IEnumVARIANT インターフェイス ポインターへのポインター。

戻り値

型: HRESULT

このメソッドは、正常な操作のS_OKなど、標準の HRESULT 戻り値をサポートします。 その他の戻り値の詳細については、「 ADSI エラー コード」を参照してください。

注釈

ADsBuildEnumerator ヘルパー関数は、列挙子オブジェクトの IEnumVARIANT インターフェイスを取得するために使用される呼び出しをラップします。

コンテナー内の使用可能なオブジェクトを列挙するには

  1. ADsBuildEnumerator 関数を呼び出して、コンテナーの内容を列挙する IEnumVARIANT オブジェクトを作成します。
  2. 列挙子オブジェクトから項目を取得するために、必要な回数だけ ADsEnumerateNext 関数を呼び出します。
  3. ADSFreeEnumerator 関数を呼び出して、列挙子オブジェクトが不要になったときに解放します。
サーバーがページ検索をサポートし、クライアントがサーバーで許可されている最大検索結果を超えるページ サイズを指定している場合、 ADsBuildEnumerator 関数はエラーと結果をサーバーからユーザーに転送します。

次のコード例は、 ADsBuildEnumeratorADsEnumerateNextADSFreeEnumerator 関数を使用してコンテナーの内容を列挙する方法を示しています。

HRESULT PrintAllObjects(IADsContainer* pContainer)
{
    HRESULT hr;
     
    if(NULL == pContainer) 
    {
        return E_INVALIDARG;
    }
     
    IEnumVARIANT *pEnum = NULL;

    // Create an enumerator object in the container.
    hr = ADsBuildEnumerator(pContainer, &pEnum);
    if(SUCCEEDED(hr))
    {
        VARIANT var;
        ULONG ulFetched = 0L;

        // Get the next contained object.
        while(S_OK == (hr = ADsEnumerateNext(pEnum, 1, &var, &ulFetched)) && (ulFetched > 0))
        {
            IADs *pADs;

            // Print the object
            hr = V_DISPATCH(&var)->QueryInterface(IID_IADs, (void**)&pADs);
            if(SUCCEEDED(hr))
            {
                CComBSTR sbstr;
                IADsContainer *pChildContainer;

                hr = pADs->get_Name(&sbstr);
                if(SUCCEEDED(hr))
                {
                    wprintf(sbstr);
                    wprintf(L"\n");
                }

                hr = pADs->QueryInterface(IID_IADsContainer, (void**)&pChildContainer);
                if(SUCCEEDED(hr))
                {
                    // If the retrieved object is a container, recursively print its contents as well.
                    PrintAllObjects(pChildContainer);
                }
                
                pADs->Release();
            }
            
            // Release the VARIANT.
            VariantClear(&var);
        }
        
        ADsFreeEnumerator(pEnum);
    }

    return hr;
}

要件

要件
サポートされている最小のクライアント Windows Vista
サポートされている最小のサーバー Windows Server 2008
対象プラットフォーム Windows
ヘッダー adshlp.h
Library Activeds.lib
[DLL] Activeds.dll

こちらもご覧ください

ADSI エラー コード

ADSI 関数

ADsEnumerateNext

ADsFreeEnumerator

IADsContainer

IEnumVARIANT