ADsBuildEnumerator 函式 (adshlp.h)
ADsBuildEnumerator 函式會為指定的 ADSI 容器物件建立列舉值物件。
語法
HRESULT ADsBuildEnumerator(
[in] IADsContainer *pADsContainer,
[out] IEnumVARIANT **ppEnumVariant
);
參數
[in] pADsContainer
類型: IADsContainer*
要列舉之物件的 IADsContainer 介面指標。
[out] ppEnumVariant
類型: IEnumVARIANT**
IEnumVARIANT 介面指標的指標,該指標會接收為指定之容器物件建立的列舉值物件。
傳回值
類型: HRESULT
這個方法支持標準的 HRESULT 傳回值,包括成功作業 S_OK 。 如需其他傳回值的詳細資訊,請參閱 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 |
程式庫 | Activeds.lib |
Dll | Activeds.dll |