objectClass 특성 검색
objectClass 특성에는 개체가 instance 클래스와 해당 클래스가 파생된 모든 클래스가 포함됩니다. 예를 들어 사용자 클래스는 top, person 및 organizationalPerson에서 상속됩니다. 따라서 objectClass 특성에는 사용자뿐만 아니라 해당 클래스의 이름이 포함됩니다. 그렇다면 개체가 instance 클래스를 어떻게 알 수 있을까요? objectClass 특성은 정렬된 값이 있는 여러 값을 가진 유일한 특성입니다. 첫 번째 값은 최상위 클래스인 클래스 계층 구조의 맨 위이고, 마지막 값은 개체가 instance 클래스인 가장 많이 파생된 클래스입니다.
다음 함수는 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;
}