Freigeben über


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

Weitere Informationen

ADSI-Fehlercodes

ADSI-Funktionen

FreeADsMem