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 インターフェイスを取得するために使用される呼び出しをラップします。
コンテナー内の使用可能なオブジェクトを列挙するには
- ADsBuildEnumerator 関数を呼び出して、コンテナーの内容を列挙する IEnumVARIANT オブジェクトを作成します。
- 列挙子オブジェクトから項目を取得するために、必要な回数だけ ADsEnumerateNext 関数を呼び出します。
- ADSFreeEnumerator 関数を呼び出して、列挙子オブジェクトが不要になったときに解放します。
例
次のコード例は、 ADsBuildEnumerator、 ADsEnumerateNext、 ADSFreeEnumerator 関数を使用してコンテナーの内容を列挙する方法を示しています。
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 |