ADsEncodeBinaryData 函式 (adshlp.h)

ADsEncodeBinaryData 函式會將二進位大型物件 (BLOB) 轉換成適合內嵌在搜尋篩選條件中的 Unicode 格式。

語法

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

參數

[in] pbSrcData

類型: PBYTE

要轉換的 BLOB。

[in] dwSrcLen

類型: DWORD

BLOB 的大小,以位元組為單位。

[out] ppszDestData

類型: LPWSTR*

接收已轉換數據的 Null 終止 Unicode 字串指標。

傳回值

類型: HRESULT

這個方法支持標準傳回值,以及下列專案。

備註

在 ADSI 中,搜尋篩選條件必須是 Unicode 字串。 有時候,篩選包含數據不透明 BLOB 通常表示的數據。 例如,您可能想要在搜尋篩選中包含物件安全性標識碼,這是二進位數據。 在此情況下,您必須先呼叫 ADsEncodeBinaryData 函式,將二進位數據轉換成 Unicode 字串格式。 當不再需要數據時,請呼叫 FreeADsMem 函式以釋放轉換後的Unicode字元串;也就是 ppszDestData

ADsEncodeBinaryData 函式不會編碼代表英數位元的位元元組值。 相反地,它會將字元放入字串中,而不需編碼。 這會產生包含編碼和未編碼字元混合的字串。 例如,如果二進位數據是0x05|0x1A|0x1B|0x43|0x32,編碼的字串將會包含 “\05\1A\1BC2”。 這不會影響篩選條件,而且搜尋篩選條件會使用這些類型的字串正確運作。

範例

下列程式代碼範例示範如何使用此函式。

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

規格需求

需求
最低支援的用戶端 Windows Vista
最低支援的伺服器 Windows Server 2008
目標平台 Windows
標頭 adshlp.h
程式庫 Activeds.lib
Dll Activeds.dll;AdsLdpc.dll

另請參閱

ADSI 錯誤碼

ADSI 函式

FreeADsMem