检索 objectClass 属性
objectClass 属性包含对象是实例的类,以及从中派生该类的所有类。 例如,用户 类继承自 top、person和 organizationalPerson;因此,objectClass 属性包含这些类的名称以及用户。 那么,如何找出对象所属的类? objectClass 属性是唯一具有具有有序值的多个值的属性。 第一个值是类层次结构的顶部,它是顶级类,最后一个值是最派生的类,该类是对象是实例的类。
以下函数接受一个指向包含 objectClass 属性的列的指针,并返回已实例化的对象的 objectClass。
HRESULT GetClass(ADS_SEARCH_COLUMN *pcol, LPOLESTR *ppClass)
{
if (!pcol)
return E_POINTER;
HRESULT hr = E_FAIL;
if (ppClass)
{
LPOLESTR szClass = new OLECHAR[MAX_PATH];
wcscpy_s(szClass, L"");
if ( _wcsicmp(pcol->pszAttrName,L"objectClass") == 0 )
{
for (DWORD x = 0; x< pcol->dwNumValues; x++)
{
wcscpy_s(szClass, pcol->pADsValues[x].CaseIgnoreString);
}
}
if (0==wcscmp(L"", szClass))
{
hr = E_FAIL;
}
else
{
//Allocate memory for string.
//Caller must free using CoTaskMemFree.
*ppClass = (OLECHAR *)CoTaskMemAlloc (
sizeof(OLECHAR)*(wcslen(szClass)+1));
if (*ppClass)
{
wcscpy_s(*ppClass, szClass);
hr = S_OK;
}
else
hr=E_FAIL;
}
}
return hr;
}