다음을 통해 공유


ADsBuildVarArrayStr 함수(adshlp.h)

ADsBuildVarArrayStr 함수는 유니코드 문자열 배열에서 변형 배열을 빌드합니다.

구문

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

매개 변수

[in] lppPathNames

형식: LPWSTR*

null로 끝나는 유니코드 문자열의 배열입니다.

[in] dwPathNames

형식:DWORD

지정된 배열의 유니코드 항목 수입니다.

[out] pVar

형식: VARIANT*

결과 변형 배열에 대한 포인터입니다.

반환 값

형식: HRESULT

이 메서드는 표준 반환 값과 다음을 지원합니다.

다른 반환 값에 대한 자세한 내용은 ADSI 오류 코드를 참조하세요.

설명

Automation을 지원하려면 ADsBuildVarArrayStr 함수를 사용하여 유니코드 문자열을 문자열의 변형 배열로 변환합니다.

예제

다음 코드 예제에서는 ADsBuildVarArrayStr 함수를 사용하여 개체 클래스 이름을 유니코드 문자열에서 문자열의 변형 배열로 변환하는 방법을 보여 줍니다.

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