バイナリデータの検索
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;
}