Поиск двоичных данных
Несмотря на то, что функция поиска ADSI поддерживает только поиск строковых данных, можно искать двоичные данные. Для этого используйте функцию ADsEncodeBinaryData для преобразования двоичных данных в строку, которую можно использовать с методами поиска. Поиск двоичных данных особенно полезен при поиске GUID или идентификатора безопасности, так как эти типы данных хранятся в виде двоичных данных.
При использовании функции ADsEncodeBinaryData выделенная память должна быть освобождена с помощью функции FreeADsMem.
В следующем примере кода C++ показано, как создать строку запроса для поиска объекта с определенным значением 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;
}