Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Функция ADsEncodeBinaryData преобразует большой двоичный объект (BLOB) в формат Юникода, подходящий для внедрения в фильтр поиска.
Синтаксис
HRESULT ADsEncodeBinaryData(
[in] PBYTE pbSrcData,
[in] DWORD dwSrcLen,
[out] LPWSTR *ppszDestData
);
Параметры
[in] pbSrcData
Тип: PBYTE
Преобразуемый BLOB-объект.
[in] dwSrcLen
Тип: DWORD
Размер большого двоичного объекта (в байтах).
[out] ppszDestData
Тип: LPWSTR*
Указатель на строку Юникода, завершающуюся значением NULL, которая получает преобразованные данные.
Возвращаемое значение
Тип: HRESULT
Этот метод поддерживает стандартные возвращаемые значения, а также следующие.
Комментарии
В ADSI фильтры поиска должны быть строками Юникода. Иногда фильтр содержит данные, которые обычно представлены непрозрачным большим двоичным объектом данных. Например, может потребоваться включить идентификатор безопасности объекта в фильтр поиска, который содержит двоичные данные. В этом случае необходимо сначала вызвать функцию ADsEncodeBinaryData , чтобы преобразовать двоичные данные в строковый формат Юникода. Если данные больше не требуются, вызовите функцию FreeADsMem , чтобы освободить преобразованную строку Юникода; то есть 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 |
| Header | adshlp.h |
| Библиотека | Activeds.lib |
| DLL | Activeds.dll; AdsLdpc.dll |