Freigeben über


ADsBuildVarArrayStr-Funktion (adshlp.h)

Die ADsBuildVarArrayStr-Funktion erstellt ein Variantenarray aus einem Array von Unicode-Zeichenfolgen.

Syntax

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

Parameter

[in] lppPathNames

Typ: LPWSTR*

Array von Unicode-Zeichenfolgen mit Null-Endung.

[in] dwPathNames

Art: DWORD

Anzahl der Unicode-Einträge im angegebenen Array.

[out] pVar

Typ: VARIANT*

Zeiger auf das resultierende Variantenarray.

Rückgabewert

Typ: HRESULT

Diese Methode unterstützt die Standardrückgabewerte sowie folgendes.

Weitere Informationen zu anderen Rückgabewerten finden Sie unter ADSI-Fehlercodes.

Hinweise

Verwenden Sie zur Unterstützung von Automation die Funktion ADsBuildVarArrayStr , um Unicode-Zeichenfolgen in ein Variantenarray von Zeichenfolgen zu konvertieren.

Beispiele

Im folgenden Codebeispiel wird gezeigt, wie Sie die ADsBuildVarArrayStr-Funktion verwenden, um Objektklassennamen aus Unicode-Zeichenfolgen in ein Variantenarray von Zeichenfolgen zu konvertieren.

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);
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista
Unterstützte Mindestversion (Server) Windows Server 2008
Zielplattform Windows
Kopfzeile adshlp.h
Bibliothek Activeds.lib
DLL Activeds.dll

Weitere Informationen

ADSI-Fehlercodes

ADSI-Funktionen

ADsBuildVarArrayInt