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 |