擷取 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;
}