Wyszukiwanie danych binarnych
Mimo że funkcja wyszukiwania ADSI obsługuje wyszukiwanie tylko danych ciągów, można wyszukiwać dane binarne. W tym celu użyj funkcji ADsEncodeBinaryData, aby przekonwertować dane binarne na ciąg, który może być używany z metodami wyszukiwania. Wyszukiwanie danych binarnych jest szczególnie przydatne podczas wyszukiwania identyfikatora GUID lub identyfikatora SID, ponieważ te typy danych są przechowywane jako dane binarne.
W przypadku korzystania z funkcji ADsEncodeBinaryData przydzielona pamięć musi zostać zwolniona przy użyciu funkcji FreeADsMem.
Poniższy przykład kodu C++ pokazuje, jak utworzyć ciąg zapytania w celu wyszukania obiektu, który ma określoną wartość objectGUID.
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;
}