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