Share via


objectClass 특성 검색

objectClass 특성에는 개체가 instance 클래스와 해당 클래스가 파생된 모든 클래스가 포함됩니다. 예를 들어 사용자 클래스는 top, personorganizationalPerson에서 상속됩니다. 따라서 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;
}