Поделиться через


Поиск двоичных данных

Несмотря на то, что функция поиска 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;
}