Compartir a través de


Función ADsBuildVarArrayStr (adshlp.h)

La función ADsBuildVarArrayStr crea una matriz variant a partir de una matriz de cadenas Unicode.

Sintaxis

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

Parámetros

[in] lppPathNames

Tipo: LPWSTR*

Matriz de cadenas Unicode terminadas en NULL.

[in] dwPathNames

Tipo: DWORD

Número de entradas Unicode en la matriz especificada.

[out] pVar

Tipo: VARIANT*

Puntero a la matriz de variantes resultante.

Valor devuelto

Tipo: HRESULT

Este método admite los valores devueltos estándar, así como los siguientes.

Para obtener más información sobre otros valores devueltos, consulta Códigos de error ADSI.

Comentarios

Para admitir Automation, use la función ADsBuildVarArrayStr para convertir cadenas Unicode en una matriz variant de cadenas.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar la función ADsBuildVarArrayStr para convertir nombres de clase de objeto de cadenas Unicode en una matriz variant de cadenas.

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

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista
Servidor mínimo compatible Windows Server 2008
Plataforma de destino Windows
Encabezado adshlp.h
Library Activeds.lib
Archivo DLL Activeds.dll

Consulte también

Códigos de error adsi

Funciones ADSI

ADsBuildVarArrayInt