Condividi tramite


Metodo IShellItemArray::GetAttributes (shobjidl_core.h)

Ottiene gli attributi del set di elementi contenuti in un oggetto IShellItemArray. Se la matrice contiene più elementi, gli attributi recuperati da questo metodo non sono gli attributi di singoli elementi, ma una combinazione logica di tutti gli attributi richiesti di tutti gli elementi richiesti.

Sintassi

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

Parametri

[in] AttribFlags

Tipo: SIATTRIBFLAGS

Se la matrice contiene un singolo elemento, questo metodo fornisce gli stessi risultati di GetAttributes. Tuttavia, se la matrice contiene più elementi, i set di attributi di tutti gli elementi vengono combinati in un singolo set di attributi e restituiti nel valore a cui fa riferimento psfgaoAttribs. Questo parametro accetta uno dei valori seguenti per definire il modo in cui viene determinato il set di attributi finali:

SIATTRIBFLAGS_AND (0x00000001)

0x00000001. Se nella matrice sono presenti più elementi, usare un and bit per bit per combinare gli attributi tra gli elementi. Ad esempio, se la matrice contiene due elementi in cui è possibile spostare un elemento (SFGAO_CANMOVE) e un secondo elemento non può, il metodo restituisce (1 & 0) o 0 per tale bit di attributo.

SIATTRIBFLAGS_OR (0x00000002)

0x00000002. Se nella matrice sono presenti più elementi, usare un OR bit per bit per combinare gli attributi tra gli elementi. Ad esempio, se la matrice contiene due elementi in cui è possibile spostare un elemento (SFGAO_CANMOVE) e un secondo elemento non può, il metodo restituisce (1 | 0) o 1 per tale bit di attributo.

SIATTRIBFLAGS_APPCOMPAT (0x00000003)

0x00000003. Recuperare gli attributi direttamente dall'origine dati shell. Per usare questo valore, la matrice di elementi shell deve essere stata inizializzata come IShellFolder con il relativo contenuto specificato come matrice di PIDL figlio.

SIATTRIBFLAGS_MASK (0x00000003)

0x00000003. Maschera per SIATTRIBFLAGS_AND, SIATTRIBFLAGS_OR e SIATTRIBFLAGS_APPCOMPAT. I chiamanti normalmente non usano questo valore.

SIATTRIBFLAGS_ALLITEMS (0x00004000)

0x00004000. Windows 7 e versioni successive. Esaminare tutti gli elementi nella matrice per calcolare gli attributi. Si noti che questo può comportare prestazioni scarse rispetto a matrici di grandi dimensioni e pertanto deve essere usato solo quando necessario. I casi in cui si passa questo flag devono essere estremamente rari. Per altri dettagli, vedere Osservazioni.

[in] sfgaoMask

Tipo: SFGAOF

Maschera che specifica gli attributi specifici richiesti. Or bit per bit di uno o più valori SFGAO .

[out] psfgaoAttribs

Tipo: SFGAOF*

Bitmap che, quando questo metodo restituisce correttamente, contiene i valori degli attributi richiesti.

Valore restituito

Tipo: HRESULT

Restituisce S_OK se gli attributi restituiti corrispondono esattamente a quelli richiesti in sfgaoMask, S_FALSE se gli attributi non corrispondono esattamente o a un valore di errore COM standard in caso contrario.

Commenti

La matrice di elementi shell memorizza nella cache singoli attributi dopo che sono stati determinati.

Poiché questo metodo passa attraverso le informazioni sull'attributo di raccolta della matrice, in genere si arresta l'analisi di un determinato attributo dopo che tale valore è irrevocabile impostato. Ad esempio, se il flag di SIATTRIBFLAGS_AND è impostato, dopo che un attributo non viene trovato per essere impostato su un elemento (un valore pari a 0), non è necessario continuare a esaminare il valore dell'attributo su altri elementi perché il risultato dell'operazione AND sarà sempre 0. Pertanto, il set finale di attributi viene calcolato in genere esaminando solo i primi elementi della matrice, ovvero tutto ciò che è necessario per ottenere il valore finale. Se è necessario esaminare tutti gli elementi della matrice, impostare il flag di SIATTRIBFLAGS_ALLITEMS. Tuttavia, tenere presente che questo può rallentare notevolmente il ritorno del metodo, quindi non farlo senza causa.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione shobjidl_core.h (include Shobjidl.h)