Udostępnij za pośrednictwem


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