ADsEncodeBinaryData-Funktion (adshlp.h)
Die Funktion ADsEncodeBinaryData konvertiert ein binäres großes Objekt (Blob) in das Unicode-Format, das zum Eingebettet in einen Suchfilter geeignet ist.
Syntax
HRESULT ADsEncodeBinaryData(
[in] PBYTE pbSrcData,
[in] DWORD dwSrcLen,
[out] LPWSTR *ppszDestData
);
Parameter
[in] pbSrcData
Typ: PBYTE
Zu konvertierende BLOBs.
[in] dwSrcLen
Art: DWORD
Größe des BLOB in Byte.
[out] ppszDestData
Typ: LPWSTR*
Zeiger auf eine unicode-Zeichenfolge, die null endet und die konvertierten Daten empfängt.
Rückgabewert
Typ: HRESULT
Diese Methode unterstützt die standardmäßigen Rückgabewerte sowie folgendes.
Hinweise
In ADSI müssen Suchfilter Unicode-Zeichenfolgen sein. Manchmal enthält ein Filter Daten, die normalerweise durch ein undurchsichtiges BLOB mit Daten dargestellt werden. Sie können z. B. eine Objektsicherheits-ID in einen Suchfilter einschließen, bei dem es sich um Binärdaten handelt. In diesem Fall müssen Sie zuerst die Funktion ADsEncodeBinaryData aufrufen, um die Binärdaten in das Unicode-Zeichenfolgenformat zu konvertieren. Wenn die Daten nicht mehr benötigt werden, rufen Sie die FreeADsMem-Funktion auf, um die konvertierte Unicode-Zeichenfolge frei zu geben. d. h. ppszDestData.
Die ADsEncodeBinaryData-Funktion codiert keine Bytewerte, die alphanumerische Zeichen darstellen. Stattdessen wird das Zeichen ohne Codierung in die Zeichenfolge eingefügt. Dies führt dazu, dass die Zeichenfolge eine Mischung aus codierten und nicht codierten Zeichen enthält. Wenn die Binärdaten beispielsweise 0x05|0x1A|0x1B|0x43|0x32 sind, enthält die codierte Zeichenfolge "\05\1A\1BC2". Dies hat keine Auswirkungen auf den Filter, und die Suchfilter funktionieren mit diesen Zeichenfolgentypen ordnungsgemäß.
Beispiele
Im folgenden Codebeispiel wird die Verwendung dieser Funktion veranschaulicht.
// 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 );
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows Vista |
Unterstützte Mindestversion (Server) | Windows Server 2008 |
Zielplattform | Windows |
Kopfzeile | adshlp.h |
Bibliothek | Activeds.lib |
DLL | Activeds.dll; AdsLdpc.dll |