Condividi tramite


Metodo IShellItemArray::GetPropertyStore (shobjidl_core.h)

Ottiene un archivio delle proprietà.

Sintassi

HRESULT GetPropertyStore(
  [in]  GETPROPERTYSTOREFLAGS flags,
  [in]  REFIID                riid,
  [out] void                  **ppv
);

Parametri

[in] flags

Tipo: GETPROPERTYSTOREFLAGS

Una delle costanti GETPROPERTYSTOREFLAGS .

[in] riid

Tipo: REFIID

IID del tipo di oggetto da recuperare.

[out] ppv

Tipo: void**

Quando termina, questo metodo contiene il puntatore di interfaccia richiesto in riid. Si tratta in genere di IPropertyStore o IPropertyStoreCapabilities.

Valore restituito

Tipo: HRESULT

Se questo metodo ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .

Commenti

Questo metodo viene usato per ottenere un archivio di proprietà di sola lettura che aggrega le proprietà raccolte da tutti gli elementi nella matrice di elementi della shell.

Se nella matrice di elementi della shell sono presenti più elementi, l'archivio delle proprietà risultante aggrega i valori di ogni elemento in base a un set di regole determinate da ogni proprietà. I valori letti dall'archivio delle proprietà verranno forzati in una forma canonica prima dell'aggregazione, come illustrato in CoerceToCanonicalValue. L'output di una chiamata a IPropertyStore::GetValue viene calcolato come segue:

  • Le proprietà con valori singoli seguono la regola specificata dalla stringa del tipo di aggregazione nello schema della descrizione della proprietà.
    • Se il tipo di aggregazione è "DateRange" e il tipo di proprietà è un filetime, restituisce un VT_VECTOR | VT_FILETIME di due valori o un valore VT_FILETIME se i valori sono identici.
    • Se il tipo di aggregazione è "First", restituisce il primo valore non vuoto.
    • Se il tipo di aggregazione è "Sum", restituisce la somma.
    • Se il tipo di aggregazione è "Average", restituisce la media di tutti i valori non vuoti.
    • Se il tipo di aggregazione è "Minimum", restituisce il valore minimo.
    • Se il tipo di aggregazione è "Union" e il tipo di proprietà è una stringa, restituisce un VT_VECTOR | VT_LPWSTR contenente l'unione dei valori. L'ordine dei valori non è specificato.
    • Se il tipo di aggregazione non è specificato, incompatibile o "Default", restituisce un singolo valore se è identico per tutti gli elementi della matrice o un valore speciale utilizzato per indicare che i valori differiscono tra alcuni elementi. Il valore speciale è un VT_VECTOR | VT_LPWSTR contenente due stringhe: "Multiple" e "Values". Le applicazioni chiamante devono verificare la presenza di questo valore speciale controllando la presenza di VT_VECTOR | VT_LPWSTR se GetTypeFlags indica che la proprietà è a valore singolo.
  • Le proprietà di stringa multivalore restituiscono un'intersezione delle stringhe. L'ordine non è specificato.
Le chiamate a IsPropertyWritable restituiranno S_FALSE solo se tutti gli elementi hanno gestori di proprietà che implementano IPropertyStoreCapabilities e tutti gli archivi di proprietà indicano che non supportano la scrittura della proprietà.

Le applicazioni chiamanti possono ottenere altri comportamenti di aggregazione accedendo direttamente ai singoli elementi della shell e ai relativi archivi di proprietà. Vedere IPropertyStore::GetCount, IPropertyStore::GetAt e GetPropertyStore.

La scrittura in una matrice di elementi della shell è supportata tramite l'API IFileOperation .

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)