Método IShellItemArray::GetAttributes (shobjidl_core.h)

Obtiene los atributos del conjunto de elementos contenidos en un IShellItemArray. Si la matriz contiene más de un elemento, los atributos recuperados por este método no son los atributos de elementos únicos, sino una combinación lógica de todos los atributos solicitados de todos los elementos.

Sintaxis

HRESULT GetAttributes(
  [in]  SIATTRIBFLAGS AttribFlags,
  [in]  SFGAOF        sfgaoMask,
  [out] SFGAOF        *psfgaoAttribs
);

Parámetros

[in] AttribFlags

Tipo: SIATTRIBFLAGS

Si la matriz contiene un solo elemento, este método proporciona los mismos resultados que GetAttributes. Sin embargo, si la matriz contiene varios elementos, los conjuntos de atributos de todos los elementos se combinan en un único conjunto de atributos y se devuelven en el valor al que apunta psfgaoAttribs. Este parámetro toma uno de los siguientes valores para definir cómo se determina ese conjunto de atributos final:

SIATTRIBFLAGS_AND (0x00000001)

0x00000001. Si hay varios elementos en la matriz, use un and bit a bit para combinar los atributos entre elementos. Por ejemplo, si la matriz contiene dos elementos donde se puede mover un elemento (SFGAO_CANMOVE) y un segundo elemento no, el método devuelve (1 & 0) o 0 para ese bit de atributo.

SIATTRIBFLAGS_OR (0x00000002)

0x00000002. Si hay varios elementos en la matriz, use un OR bit a bit para combinar los atributos entre elementos. Por ejemplo, si la matriz contiene dos elementos donde se puede mover un elemento (SFGAO_CANMOVE) y un segundo elemento no, el método devuelve (1 | 0) o 1 para ese bit de atributo.

SIATTRIBFLAGS_APPCOMPAT (0x00000003)

0x00000003. Recupere los atributos directamente desde el origen de datos de Shell. Para usar este valor, la matriz de elementos de Shell debe haberse inicializado como IShellFolder con su contenido especificado como una matriz de PIN secundarios.

SIATTRIBFLAGS_MASK (0x00000003)

0x00000003. Máscara para SIATTRIBFLAGS_AND, SIATTRIBFLAGS_OR y SIATTRIBFLAGS_APPCOMPAT. Normalmente, los autores de llamadas no usan este valor.

SIATTRIBFLAGS_ALLITEMS (0x00004000)

0x00004000. Windows 7 y versiones posteriores. Examine todos los elementos de la matriz para calcular los atributos. Tenga en cuenta que esto puede dar lugar a un rendimiento deficiente en matrices grandes y, por lo tanto, solo se debe usar cuando sea necesario. Los casos en los que se pasa esta marca deben ser extremadamente raros. Consulte Comentarios para obtener más detalles.

[in] sfgaoMask

Tipo: SFGAOF

Máscara que especifica qué atributos concretos se solicitan. Or bit a bit de uno o varios de los valores de SFGAO .

[out] psfgaoAttribs

Tipo: SFGAOF*

Un mapa de bits que, cuando este método devuelve correctamente, contiene los valores de los atributos solicitados.

Valor devuelto

Tipo: HRESULT

Devuelve S_OK si los atributos devueltos coinciden exactamente con los solicitados en sfgaoMask, S_FALSE si los atributos no coinciden exactamente o un valor de error COM estándar de lo contrario.

Comentarios

La matriz de elementos de Shell almacena en caché atributos individuales después de que se hayan determinado.

A medida que este método pasa a través de la información del atributo de recopilación de matrices, normalmente deja de mirar un atributo determinado después de que ese valor se establezca de forma irrevocable. Por ejemplo, si se establece la marca SIATTRIBFLAGS_AND, una vez que no se encuentra un atributo en un elemento (un valor de 0), no es necesario seguir examinando ese valor de atributo en otros elementos porque el resultado de la operación AND siempre será 0. Por lo tanto, el conjunto final de atributos se calcula normalmente examinando solo los primeros elementos de la matriz, lo que es todo lo que se necesita para obtener el valor final. Si tiene que examinar todos los elementos de la matriz, establezca la marca SIATTRIBFLAGS_ALLITEMS. Sin embargo, tenga en cuenta que esto puede ralentizar considerablemente el retorno del método, por lo que no lo haga sin causa.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado shobjidl_core.h (include Shobjidl.h)