Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 |