搜索二进制数据

尽管 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;
}