ADsBuildVarArrayStr 函式 (adshlp.h)

ADsBuildVarArrayStr 函式會從 Unicode 字串數組建置 Variant 陣列。

語法

HRESULT ADsBuildVarArrayStr(
  [in]  LPWSTR  *lppPathNames,
  [in]  DWORD   dwPathNames,
  [out] VARIANT *pVar
);

參數

[in] lppPathNames

類型: LPWSTR*

Null 終止 Unicode 字串的陣列。

[in] dwPathNames

類型: DWORD

指定陣列中的 Unicode 項目數目。

[out] pVar

類型: VARIANT*

所產生變數組的指標。

傳回值

類型: HRESULT

這個方法支持標準傳回值,以及下列各項。

如需其他傳回值的詳細資訊,請參閱 ADSI 錯誤碼

備註

若要支援自動化,請使用 ADsBuildVarArrayStr 函式,將 Unicode 字串轉換成字串的變數的變數。

範例

下列程式代碼範例示範如何使用 ADsBuildVarArrayStr 函式,將物件類別名稱從 Unicode 字串轉換成字串的變數組。

HRESULT EnumObject(LPWSTR pszADsPath,
                   LPWSTR * lppClsNames,
                   DWORD dwClsNames)
{
    ULONG ulFetched = 0L;
    IEnumVARIANT * pEnumVar = NULL;
    VARIANT varFilter, varArray[MAX_ADS_ENUM];
    HRESULT hr;
    IADsContainer * pADsContainer = NULL;
    DWORD dwObjects = 0, dwEnumCount=0, i=0;
    BSTR bstrName;
    BOOL fContinue=TRUE;
 
    hr = ADsGetObject(pszADsPath,
                     IID_IADsContainer,
                     (void**)&pADsContainer);
    if (FAILED(hr)) goto cleanup;
 
    // Create a string array of class names as search filters.
    VariantInit(&varFilter);
    hr = ADsBuildVarArrayStr(lppClsNames, dwClsNames, &varFilter);
    if (FAILED(hr)) goto cleanup;
 
    // Apply filters to objects in the container.
    hr = pADsContainer->put_Filter(varFilter);
    if(FAILED(hr)) goto cleanup;
 
    // Create an enumerator.
    hr = ADsBuildEnumerator(pADsContainer, &pEnumVar);
    if(FAILED(hr)) goto cleanup;
 
    // Enumerate the objects and print the names.
    while(fContinue) {
        IADs* pObject;
        hr = ADsEnumerateNext(pEnumVar, MAX_ADS_ENUM,
                            varArray, &ulFetched);
        if(hr == S_FALSE) fContinue = FALSE;
        dwEEnumCount++;
 
        for (i=0; i<ulFetched; i++) {
            IDispatch *pDispatch = NULL;
            pDispatch = varArray[I].pDispVal;
            hr = pDispatch->QueryInterface(IID_IADs,
                                        (void**) &pObject);
            if (FAILED(hr)) goto cleanup;
 
            hr = pObject->get_Name(&bstrName);
            if(FAILED(hr)) goto cleanup;
            printf(" Object name: %S\n",bstrName);
 
            // Release the ADSI object.
            SysFreeString(bstrname);
            pObject->Release();
            pDispatch->Release();
        }
        memset(varArray, 0, sizeof(VARIANT)*MAX_ADS_ENUM);
        dwObjects += ulFetched;
    }
    hr = S_OK;
 
cleanup:
    if(bstrName) SysFreeString(bstrName);
    if(pEnumvar) ADsFreeEnumerator(pEnumVar);
    if(pADsContainer) pADsContainer->Release();
 
    return (hr);
}

規格需求

需求
最低支援的用戶端 Windows Vista
最低支援的伺服器 Windows Server 2008
目標平台 Windows
標頭 adshlp.h
程式庫 Activeds.lib
Dll Activeds.dll

另請參閱

ADSI 錯誤碼

ADSI 函式

ADsBuildVarArrayInt