Compartir a través de


Recuperar el atributo objectClass

El atributo objectClass contiene la clase de la que el objeto es una instancia, así como todas las clases de las que se deriva esa clase. Por ejemplo, la clase de usuario hereda de top, person y organizationalPerson; por lo tanto, el atributo objectClass contiene los nombres de esas clases, así como el usuario. Por lo tanto, ¿de qué clase es una instancia del objeto? El atributo objectClass es el único atributo con varios valores que tienen valores ordenados. El primer valor es la parte superior de la jerarquía de clases, que es la clase superior, y el último valor es la clase más derivada, que es la clase de la que el objeto es una instancia de .

La siguiente función toma un puntero a una columna que contiene un atributo objectClass y devuelve el objectClass creado por instancias del objeto .

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