Durchsuchen von Binärdaten
Obwohl die ADSI-Suchfunktion nur die Suche nach Zeichenfolgendaten unterstützt, ist es möglich, nach Binärdaten zu suchen. Verwenden Sie dazu die Funktion ADsEncodeBinaryData , um die Binärdaten in eine Zeichenfolge zu konvertieren, die mit den Suchmethoden verwendet werden kann. Die Suche nach Binärdaten ist besonders nützlich bei der Suche nach einer GUID oder sid, da diese Datentypen als Binärdaten gespeichert werden.
Bei Verwendung der Funktion ADsEncodeBinaryData muss der zugeordnete Arbeitsspeicher mithilfe der FreeADsMem-Funktion freigegeben werden.
Das folgende C++-Codebeispiel zeigt, wie Sie eine Abfragezeichenfolge erstellen, um nach einem Objekt zu suchen, das über einen bestimmten objectGUID-Wert verfügt.
LPWSTR pwszGuid = NULL;
LPWSTR pwszFormat = L"(objectGUID=%s)";
LPWSTR pwszSearch = NULL;
hr = ADsEncodeBinaryData((LPBYTE)pguid, sizeof(GUID), &pwszGuid);
if(FAILED(hr))
{
goto cleanup;
}
pwszSearch = new WCHAR[lstrlenW(pwszFormat) + lstrlenW(pwszGuid) + 1];
if(NULL == pwszSearch)
{
goto cleanup;
}
swprintf_s(pwszSearch, pwszFormat, pwszGuid);
// Use pwszSearch to perform a query for the object.
cleanup:
if(pwszGuid)
{
FreeADsMem(pwszGuid);
}
if(pwszSearch)
{
delete pwszSearch;
}