Bagikan melalui


Fungsi ADsEncodeBinaryData (adshlp.h)

Fungsi ADsEncodeBinaryData mengonversi objek besar biner (BLOB) ke format Unicode yang cocok untuk disematkan dalam filter pencarian.

Sintaks

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

Parameter

[in] pbSrcData

Jenis: PBYTE

BLOB yang akan dikonversi.

[in] dwSrcLen

Jenis: DWORD

Ukuran, dalam byte, dari BLOB.

[out] ppszDestData

Jenis: LPWSTR*

Penunjuk ke string Unicode yang dihentikan null yang menerima data yang dikonversi.

Mengembalikan nilai

Jenis: HRESULT

Metode ini mendukung nilai pengembalian standar, serta yang berikut ini.

Keterangan

Di ADSI, filter pencarian harus berupa string Unicode. Terkadang, filter berisi data yang biasanya diwakili oleh BLOB data buram. Misalnya, Anda mungkin ingin menyertakan pengidentifikasi keamanan objek dalam filter pencarian, yang merupakan data biner. Dalam hal ini, Anda harus terlebih dahulu memanggil fungsi ADsEncodeBinaryData untuk mengonversi data biner ke format string Unicode. Ketika data tidak lagi diperlukan, panggil fungsi FreeADsMem untuk membebaskan string Unicode yang dikonversi; yaitu, ppszDestData.

Fungsi ADsEncodeBinaryData tidak mengodekan nilai byte yang mewakili karakter alfa-numerik. Sebagai gantinya, ia akan menempatkan karakter ke dalam string tanpa mengodekannya. Ini menghasilkan string yang berisi campuran karakter yang dikodekan dan tidak dikodekan. Misalnya, jika data biner 0x05|0x1A|0x1B|0x43|0x32, string yang dikodekan akan berisi "\05\1A\1BC2". Ini tidak berpengaruh pada filter dan filter pencarian akan bekerja dengan benar dengan jenis string ini.

Contoh

Contoh kode berikut menunjukkan cara menggunakan fungsi ini.

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

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista
Server minimum yang didukung Windows Server 2008
Target Platform Windows
Header adshlp.h
Pustaka Activeds.lib
DLL Activeds.dll; AdsLdpc.dll

Lihat juga

Kode Kesalahan ADSI

Fungsi ADSI

FreeADsMem