Pesquisando dados binários
Mesmo que o recurso de pesquisa ADSI só suporta a pesquisa de dados de cadeia de caracteres, é possível pesquisar dados binários. Para fazer isso, use a função ADsEncodeBinaryData para converter os dados binários em uma cadeia de caracteres que pode ser usada com os métodos de pesquisa. A pesquisa de dados binários é particularmente útil ao procurar um GUID ou um SID porque esses tipos de dados são armazenados como dados binários.
Ao usar a função ADsEncodeBinaryData, a memória alocada deve ser liberada usando a função FreeADsMem.
O exemplo de código C++ a seguir mostra como criar uma cadeia de caracteres de consulta para procurar um objeto que tenha um valor objectGUID específico.
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;
}