Compartilhar via


Função ADsEncodeBinaryData (adshlp.h)

A função ADsEncodeBinaryData converte um BLOB (objeto binário grande) no formato Unicode adequado para ser inserido em um filtro de pesquisa.

Sintaxe

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

Parâmetros

[in] pbSrcData

Tipo: PBYTE

BLOB a ser convertido.

[in] dwSrcLen

Tipo: DWORD

Tamanho, em bytes, do BLOB.

[out] ppszDestData

Tipo: LPWSTR*

Ponteiro para uma cadeia de caracteres Unicode terminada em nulo que recebe os dados convertidos.

Retornar valor

Tipo: HRESULT

Esse método dá suporte aos valores retornados padrão, bem como aos seguintes.

Comentários

No ADSI, os filtros de pesquisa devem ser cadeias de caracteres Unicode. Às vezes, um filtro contém dados que normalmente são representados por um BLOB opaco de dados. Por exemplo, talvez você queira incluir um identificador de segurança de objeto em um filtro de pesquisa, que é de dados binários. Nesse caso, você deve primeiro chamar a função ADsEncodeBinaryData para converter os dados binários no formato de cadeia de caracteres Unicode. Quando os dados não forem mais necessários, chame a função FreeADsMem para liberar a cadeia de caracteres Unicode convertida; ou seja, ppszDestData.

A função ADsEncodeBinaryData não codifica valores de bytes que representam caracteres alfanuméricos. Em vez disso, ele colocará o caractere na cadeia de caracteres sem codificar. Isso resulta na cadeia de caracteres que contém uma mistura de caracteres codificados e não codificados. Por exemplo, se os dados binários forem 0x05|0x1A|0x1B|0x43|0x32, a cadeia de caracteres codificada conterá "\05\1A\1BC2". Isso não tem efeito sobre o filtro e os filtros de pesquisa funcionarão corretamente com esses tipos de cadeias de caracteres.

Exemplos

O exemplo de código a seguir mostra como usar essa função.

// 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 Valor
Cliente mínimo com suporte Windows Vista
Servidor mínimo com suporte Windows Server 2008
Plataforma de Destino Windows
Cabeçalho adshlp.h
Biblioteca Activeds.lib
DLL Activeds.dll; AdsLdpc.dll

Confira também

Códigos de erro ADSI

Funções ADSI

FreeADsMem