Fonction ADsEncodeBinaryData (adshlp.h)

La fonction ADsEncodeBinaryData convertit un objet blob binaire au format Unicode approprié pour être incorporé dans un filtre de recherche.

Syntaxe

HRESULT ADsEncodeBinaryData(
  [in]  PBYTE  pbSrcData,
  [in]  DWORD  dwSrcLen,
  [out] LPWSTR *ppszDestData
);

Paramètres

[in] pbSrcData

Type : PBYTE

OBJET BLOB à convertir.

[in] dwSrcLen

Type : DWORD

Taille, en octets, de l’objet BLOB.

[out] ppszDestData

Type : LPWSTR*

Pointeur vers une chaîne Unicode terminée par null qui reçoit les données converties.

Valeur retournée

Type : HRESULT

Cette méthode prend en charge les valeurs de retour standard, ainsi que les éléments suivants.

Remarques

Dans ADSI, les filtres de recherche doivent être des chaînes Unicode. Parfois, un filtre contient des données qui sont normalement représentées par un objet BLOB opaque de données. Par exemple, vous pouvez inclure un identificateur de sécurité d’objet dans un filtre de recherche, qui est de données binaires. Dans ce cas, vous devez d’abord appeler la fonction ADsEncodeBinaryData pour convertir les données binaires au format de chaîne Unicode. Lorsque les données ne sont plus requises, appelez la fonction FreeADsMem pour libérer la chaîne Unicode convertie ; autrement dit, ppszDestData.

La fonction ADsEncodeBinaryData n’encode pas les valeurs d’octet qui représentent des caractères alphanumériques. À la place, il place le caractère dans la chaîne sans l’encoder. Il en résulte que la chaîne contient un mélange de caractères encodés et non codés. Par exemple, si les données binaires sont 0x05|0x1A|0x1B|0x43|0x32, la chaîne encodée contiendra « \05\1A\1BC2 ». Cela n’a aucun effet sur le filtre et les filtres de recherche fonctionnent correctement avec ces types de chaînes.

Exemples

L’exemple de code suivant montre comment utiliser cette fonction.

// Test binary values in filters and use
// a binary filter instead of a string filter in ExecuteSearch.

LPWSTR pszPrefix = L"objectSid=%s";
LPWSTR pszBinaryFilter = NULL;
LPWSTR pszDest = NULL;
HRESULT hr = S_OK;
 
BYTE column[] = {
  0x01, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x15, 0x00,
  0x00, 0x00, 0x59, 0x51, 0xb8, 0x17, 0x66, 0x72, 0x5d, 0x25,
  0x64, 0x63, 0x3b, 0x0b, 0x29, 0x99, 0x21, 0x00 };

DWORD dwSize = sizeof(column)/sizeof(BYTE);
 
hr = ADsEncodeBinaryData (
    column,
    dwSize,
    &pszDest
    );

if(hr==S_OK)
{
    dwSize = wcslen(pszPrefix) + wcslen(pszDest) + 1;
    pszBinaryFilter = new WCHAR[dwSize];
    sprintf_s(pszBinaryFilter,pszPrefix,pszDest);
}
else
{
    return hr;
}


 
// Perform the search with the pszDest as the filter string. Code omitted.
. . . 
// Done with the search and free the converted string.
FreeADsMem( pszDest );

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista
Serveur minimal pris en charge Windows Server 2008
Plateforme cible Windows
En-tête adshlp.h
Bibliothèque Activeds.lib
DLL Activeds.dll ; AdsLdpc.dll

Voir aussi

Codes d’erreur ADSI

Fonctions ADSI

FreeADsMem