Condividi tramite


Funzione ADsEncodeBinaryData (adshlp.h)

La funzione ADsEncodeBinaryData converte un oggetto binario di grandi dimensioni (BLOB) nel formato Unicode adatto per essere incorporato in un filtro di ricerca.

Sintassi

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

Parametri

[in] pbSrcData

Tipo: PBYTE

BLOB da convertire.

[in] dwSrcLen

Tipo: DWORD

Dimensioni, in byte, del BLOB.

[out] ppszDestData

Tipo: LPWSTR*

Puntatore a una stringa Unicode con terminazione Null che riceve i dati convertiti.

Valore restituito

Tipo: HRESULT

Questo metodo supporta i valori restituiti standard, nonché i seguenti.

Commenti

In ADSI i filtri di ricerca devono essere stringhe Unicode. In alcuni casi, un filtro contiene dati normalmente rappresentati da un BLOB opaco di dati. Ad esempio, è possibile includere un identificatore di sicurezza degli oggetti in un filtro di ricerca, che è di dati binari. In questo caso, è prima necessario chiamare la funzione ADsEncodeBinaryData per convertire i dati binari nel formato stringa Unicode. Quando i dati non sono più necessari, chiamare la funzione FreeADsMem per liberare la stringa Unicode convertita; ovvero ppszDestData.

La funzione ADsEncodeBinaryData non codifica valori byte che rappresentano caratteri alfanumerici. In alternativa, inserisce il carattere nella stringa senza codificarlo. Ciò comporta la stringa contenente una combinazione di caratteri codificati e non codificati. Ad esempio, se i dati binari sono 0x05|0x1A|0x1B|0x43|0x32, la stringa codificata conterrà "\05\1A\1BC2". Questo non ha alcun effetto sul filtro e i filtri di ricerca funzioneranno correttamente con questi tipi di stringhe.

Esempio

Nell'esempio di codice seguente viene illustrato come usare questa funzione.

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

Requisiti

Requisito Valore
Client minimo supportato Windows Vista
Server minimo supportato Windows Server 2008
Piattaforma di destinazione Windows
Intestazione adshlp.h
Libreria Activeds.lib
DLL Activeds.dll; AdsLdpc.dll

Vedi anche

Codici di errore ADSI

Funzioni ADSI

FreeADsMem