Ricerca di dati binari
Anche se la funzionalità di ricerca ADSI supporta solo la ricerca di dati stringa, è possibile cercare dati binari. A tale scopo, utilizzare la funzione ADsEncodeBinaryData per convertire i dati binari in una stringa che può essere usata con i metodi di ricerca. La ricerca di dati binari è particolarmente utile quando si cerca un GUID o un SID perché questi tipi di dati vengono archiviati come dati binari.
Quando si usa la funzione ADsEncodeBinaryData, la memoria allocata deve essere liberata usando la funzione FreeADsMem.
Nell'esempio di codice C++ seguente viene illustrato come compilare una stringa di query per cercare un oggetto con un determinato valore 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;
}