Recherche de données binaires
Même si la fonctionnalité de recherche ADSI prend uniquement en charge la recherche de données de chaîne, il est possible de rechercher des données binaires. Pour ce faire, utilisez la fonction ADsEncodeBinaryData pour convertir les données binaires en une chaîne qui peut être utilisée avec les méthodes de recherche. La recherche de données binaires est particulièrement utile lors de la recherche d’un GUID ou d’un SID, car ces types de données sont stockés sous forme de données binaires.
Lorsque vous utilisez la fonction ADsEncodeBinaryData , la mémoire allouée doit être libérée à l’aide de la fonction FreeADsMem .
L’exemple de code C++ suivant montre comment générer une chaîne de requête pour rechercher un objet qui a une valeur objectGUID particulière.
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;
}