ADSI 検索機能では文字列データの検索のみがサポートされていますが、バイナリ データを検索できます。 これを行うには、ADsEncodeBinaryData 関数を使用して、バイナリ データを検索メソッドで使用できる文字列に変換します。 バイナリ データの検索は、これらのデータ型がバイナリ データとして格納されるため、GUID または SID を検索する場合に特に便利です。
ADsEncodeBinaryData 関数を使用する場合、割り当てられたメモリは、FreeADsMem 関数を使用して解放する必要があります。
次の C++ コード例は、特定の objectGUID 値を持つオブジェクトを検索するクエリ文字列を作成する方法を示しています。
LPWSTR pwszGuid = NULL;
LPWSTR pwszFormat = L"(objectGUID=%s)";
LPWSTR pwszSearch = NULL;
hr = ADsEncodeBinaryData((LPBYTE)pguid, sizeof(GUID), &pwszGuid);
if(FAILED(hr))
{
goto cleanup;
}
pwszSearch = new WCHAR[lstrlenW(pwszFormat) + lstrlenW(pwszGuid) + 1];
if(NULL == pwszSearch)
{
goto cleanup;
}
swprintf_s(pwszSearch, pwszFormat, pwszGuid);
// Use pwszSearch to perform a query for the object.
cleanup:
if(pwszGuid)
{
FreeADsMem(pwszGuid);
}
if(pwszSearch)
{
delete pwszSearch;
}