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 |