Funzione ADsBuildVarArrayStr (adshlp.h)
La funzione ADsBuildVarArrayStr compila una matrice di varianti da una matrice di stringhe Unicode.
Sintassi
HRESULT ADsBuildVarArrayStr(
[in] LPWSTR *lppPathNames,
[in] DWORD dwPathNames,
[out] VARIANT *pVar
);
Parametri
[in] lppPathNames
Tipo: LPWSTR*
Matrice di stringhe Unicode con terminazione Null.
[in] dwPathNames
Tipo: DWORD
Numero di voci Unicode nella matrice specificata.
[out] pVar
Tipo: VARIANT*
Puntatore alla matrice di varianti risultante.
Valore restituito
Tipo: HRESULT
Questo metodo supporta i valori restituiti standard, nonché i seguenti.
Per altre informazioni sugli altri valori restituiti, vedere Codici di errore ADSI.
Commenti
Per supportare l'automazione, usare la funzione ADsBuildVarArrayStr per convertire stringhe Unicode in una matrice variantale di stringhe.
Esempio
Nell'esempio di codice seguente viene illustrato come usare la funzione ADsBuildVarArrayStr per convertire i nomi delle classi oggetto da stringhe Unicode a una matrice variantale di stringhe.
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);
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista |
Server minimo supportato | Windows Server 2008 |
Piattaforma di destinazione | Windows |
Intestazione | adshlp.h |
Libreria | Activeds.lib |
DLL | Activeds.dll |