Compartir a través de


Función ADsEncodeBinaryData (adshlp.h)

La función ADsEncodeBinaryData convierte un objeto binario grande (BLOB) en el formato Unicode adecuado para insertarse en un filtro de búsqueda.

Sintaxis

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

Parámetros

[in] pbSrcData

Tipo: PBYTE

BLOB que se va a convertir.

[in] dwSrcLen

Tipo: DWORD

Tamaño, en bytes, del BLOB.

[out] ppszDestData

Tipo: LPWSTR*

Puntero a una cadena Unicode terminada en null que recibe los datos convertidos.

Valor devuelto

Tipo: HRESULT

Este método admite los valores devueltos estándar, así como los siguientes.

Comentarios

En ADSI, los filtros de búsqueda deben ser cadenas Unicode. A veces, un filtro contiene datos que normalmente se representan mediante un BLOB opaco de datos. Por ejemplo, puede incluir un identificador de seguridad de objeto en un filtro de búsqueda, que es de datos binarios. En este caso, primero debe llamar a la función ADsEncodeBinaryData para convertir los datos binarios al formato de cadena Unicode. Cuando los datos ya no sean necesarios, llame a la función FreeADsMem para liberar la cadena Unicode convertida; es decir, ppszDestData.

La función ADsEncodeBinaryData no codifica los valores de bytes que representan caracteres alfanuméricos. En su lugar, colocará el carácter en la cadena sin codificarlo. Esto da como resultado la cadena que contiene una combinación de caracteres codificados y sin codificar. Por ejemplo, si los datos binarios están 0x05|0x1A|0x1B|0x43|0x32, la cadena codificada contendrá "\05\1A\1BC2". Esto no tiene ningún efecto en el filtro y los filtros de búsqueda funcionarán correctamente con estos tipos de cadenas.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar esta función.

// 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 );

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista
Servidor mínimo compatible Windows Server 2008
Plataforma de destino Windows
Encabezado adshlp.h
Library Activeds.lib
Archivo DLL Activeds.dll; AdsLdpc.dll

Consulte también

Códigos de error adsi

Funciones ADSI

FreeADsMem