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 |