Condividi tramite


Panoramica del sistema di proprietà

Windows Property System è un sistema estendibile di lettura/scrittura di definizioni di dati che offre un modo uniforme per esprimere i metadati sugli elementi della shell. Il sistema di proprietà Windows in Windows Vista e versioni successive consente di archiviare e recuperare metadati per gli elementi della shell. Un elemento shell è un singolo contenuto, ad esempio un file, una cartella, un messaggio di posta elettronica o un contatto. Una proprietà è una singola parte di metadati associata a un elemento shell. I valori delle proprietà sono espressi come struttura PROPVARIANT .

Questo argomento è organizzato come segue:

Introduzione

Le proprietà sono identificate in modo univoco dal nome canonico (ad esempio System.Document.LastAuthor) e dalla chiave di proprietà (ad esempio PKEY_Document_LastAuthor). Una chiave di proprietà (PKEY) è la parte del nome di una coppia nome-valore costituita da PKEY/PROPVARIANT o da una stringa/PROPVARIANT, dove la stringa è il nome canonico di PKEY (ad esempio System.Document.LastAuthor). Un valore PKEY è una definizione che indica al sistema di proprietà tutto ciò che deve conoscere sulla proprietà, mentre il valore è un'istanza effettiva della proprietà. Un PKEY contiene internamente un formatID e propID.

Una singola proprietà è costituita dai tre elementi seguenti:

  • Nome canonico, ad esempio System.Music.Artist.
  • Descrizione dello schema, specificata nel formato di file XML propdesc ed espressa a livello di codice tramite IPropertyDescription.
  • Valore, ad esempio il nome di un cantante.

La descrizione dello schema è costituita da informazioni sulla proprietà, ad esempio il nome della proprietà, il tipo di dati, i vincoli, le informazioni su come la proprietà interagisce con le viste e il sistema di ricerca e così via. Il nome e la descrizione dello schema sono definiti a livello globale e sono gli stessi per tutti gli elementi e i tipi. Un valore è specifico di un singolo elemento. Ovvero, la System.Music.Artist proprietà viene sempre definita come stringa multivalore, ma può avere un valore diverso (o nessun valore) per ogni elemento.

Un gestore di proprietà converte i dati archiviati in un file in uno schema strutturato riconosciuto da e accessibile da Esplora risorse, Windows Search e altre applicazioni. Questi sistemi possono quindi interagire con il gestore di proprietà per scrivere e leggere le proprietà da e verso il file. I dati tradotti vengono esposti a livello di codice e visualizzati all'utente tramite Esplora risorse in un'ampia gamma di contesti, tra cui la visualizzazione dettagli, le descrizioni info, il riquadro dei dettagli, le pagine delle proprietà e così via. Ogni gestore di proprietà è associato a un particolare tipo di file, identificato dall'estensione del nome file. Gli sviluppatori devono implementare un gestore di proprietà che produce e utilizza il formato nativo del tipo di file, ad esempio .jpg o .png, oppure usare l'archivio delle proprietà In-Memory, che produce e utilizza il formato binario MS-PROPSTORE.

Windows Property System crea un modello di dati astratto che fornisce un livello di astrazione da singoli formati di file. Il modello di dati astratto fornito dal sistema di proprietà di Windows è un metodo per la lettura e la scrittura di un set estendibile di valori denominati associati a un elemento shell. L'espressione valore è flessibile, supporta molti tipi di dati ed è estendibile, consentendo dati arbitrari (VT_BLOB) e oggetti da esprimere come valore.

A causa dell'astrazione, è possibile eseguire query sugli attributi o sui metadati di qualsiasi elemento. Esempi di elementi che possono essere astratti includono documenti di Microsoft Office, tag ID3 e AutoCAD e altri software proprietari di terze parti. Analogamente, se si dispone di un file jpeg, è possibile usare i codec .jpeg e EXIF per leggere i byte del file per individuare le dimensioni dell'immagine. Se invece si dispone di un file .png, è necessario un codec diverso e codice diverso a tale scopo. L'uso del sistema di proprietà Di Windows evita questo tipo di problema. Se si implementa un nuovo tipo di file, è possibile inserire l'astrazione uniforme offerta dal sistema di proprietà di Windows e specificare come rendere i metadati utilizzabili. Per questi motivi, è sempre preferibile usare la piattaforma comune fornita dal sistema di proprietà Windows.

Scenari di sviluppo

Le proprietà sono espresse dai produttori e dai consumer. In questo contesto, i produttori sono gli inventori delle proprietà nel sistema di proprietà Windows e i consumer sono applicazioni (e i relativi sviluppatori) che utilizzano le informazioni sulle proprietà di questo sistema. Nella tabella seguente sono identificati gli usi di e i partecipanti al sistema di proprietà Di Windows.

Utilizzo del sistema di proprietà Windows Partecipante
Blocco predefinito che fornisce un registro estendibile di descrizioni delle proprietà, un'implementazione dell'archivio delle proprietà in memoria e servizi per l'associazione a gestori di proprietà, la conversione di tipi e la serializzazione degli archivi delle proprietà. Consumer
Applicazioni che vogliono leggere e scrivere proprietà in modo astratto. Consumer
Inventori di proprietà che definiscono nuove proprietà per il sistema di proprietà definendo schemi di proprietà personalizzati e sviluppando gestori di proprietà personalizzati. Producer
Proprietari del formato di file che desiderano abilitare l'accesso alle proprietà archiviate nei formati di file personalizzati. Producer

 

I consumer usano proprietà, schemi e gestori di proprietà esistenti. Le proprietà disponibili per il consumo includono proprietà di lettura/scrittura dai gestori di proprietà per i tipi di file supportati e possono includere anche alcune proprietà personalizzate. Gli schemi disponibili includono almeno lo schema di sistema e talvolta anche altri. Un consumer può creare un'applicazione per utilizzare i metadati e creare una visualizzazione basata sull'artista, indipendentemente dalle cartelle in cui sono archiviati gli elementi. La gerarchia di cartelle file è irrilevante. Ad esempio, è possibile specificare tutti gli elementi della canzone da parte di un determinato cantante senza preoccuparsi della posizione di tali elementi. Questo scenario end-to-end complesso non è limitato al sistema delle proprietà Windows, ma prevede diversi componenti, ad esempio l'indicizzazione e le cartelle di ricerca.

Gli inventori delle proprietà, o sviluppatori di terze parti, sono produttori nel sistema di proprietà Windows. Quando si prepara a definire una nuova proprietà, esaminare prima di tutto il set di proprietà definite da Windows. Se si trova uno che soddisfa le proprie esigenze, del tipo e della semantica che corrispondono all'uso richiesto, usare tale proprietà e non inventarne uno nuovo. Se si definisce una nuova proprietà personalizzata, provare a ottenere un accordo con altri sviluppatori che potrebbero voler usarla e pubblicare il risultato di tale contratto in modo che possano unirsi alla community degli utenti di tale proprietà.

I producer possono sfruttare le funzionalità di Esplora risorse. Ad esempio, se si scrive un nuovo formato di immagine e si implementa un gestore di proprietà, il nuovo formato di file diventa disponibile in Esplora risorse. Gli utenti possono quindi contrassegnarne le fotografie e pivotrne la raccolta di fotografie in base a qualsiasi proprietà nel sistema di proprietà di Windows. In realtà, qualsiasi operazione eseguita da Shell con le proprietà, gli sviluppatori di terze parti possono eseguire nelle proprie applicazioni. Sono inclusi il raggruppamento, l'ordinamento, l'esecuzione di query e la visualizzazione di proprietà complete. L'esperienza utente fornita da Esplora risorse può essere ampiamente implementata da terze parti con API disponibili pubblicamente. Esplora risorse può essere sostituito o esteso usando queste API.

Dal punto di vista di un'applicazione che usa il modello di dati Shell, esistono un'ampia gamma di scenari che coinvolgono l'uso del sistema di proprietà Windows. Le applicazioni di gestione dei contenuti multimediali sono un esempio di rilievo. Gli scenari di sistema delle proprietà principali includono scenari come la lettura della proprietà parola chiave di una fotografia o l'impostazione della proprietà datetaken. Esempi di scenari di integrazione end-to-end abilitati dal sistema di proprietà Windows, ma che richiedono il funzionamento di diversi altri componenti, includono la visualizzazione di tutte le immagini o la ricerca di un documento contenente una parola chiave.

Le proprietà servono sia producer che consumer quando si interfacciano con Windows Search e indicizzazione. Windows Search include una cache di valori di proprietà usati nell'implementazione del servizio Windows Search (WSS). Questi valori di proprietà possono essere sottoposti a query a livello di codice usando il provider OLE DB di Windows Search o tramite ISearchFolderItemFactory, che rappresenta gli elementi nei risultati della ricerca e nelle viste basate su query. Windows Search raccoglie e archivia quindi le proprietà generate dai gestori di filtri o dai gestori di proprietà quando viene indicizzato un elemento, ad esempio un Word documento. Questo archivio viene rimosso e ricompilato quando l'indice viene ricompilato.

Nota

Tenere presente che quando si riregistra uno schema, le modifiche apportate agli attributi delle proprietà definite in precedenza potrebbero non essere rispettate dall'indicizzatore. La soluzione consiste nel ricompilare l'indice o introdurre nuove proprietà che riflettono le modifiche anziché aggiornare quelle precedenti (scelta non consigliata). Per altre informazioni, vedere Note to Implementers più avanti in questo argomento.

 

Ad esempio, uno sviluppatore che crea un'applicazione multimediale vuole mostrare agli utenti dell'applicazione tutta la musica disponibile da un determinato artista. L'applicazione fornirà all'utente un elenco di artisti disponibili e quindi genera un elenco di tutte le musiche disponibili dall'artista selezionato dall'utente. Oppure un utente finale potrebbe voler eseguire una query per ?artist:Beethoven?, e essere esposto all'elenco completo delle proprietà disponibili nel corso della ricerca. Questo esempio prevede l'uso dello spazio dei nomi shell, dei gestori di proprietà e/o dell'esecuzione di query sull'indice tramite una delle opzioni seguenti:

  • Origine dati shell.
  • Provider OLE DB.
  • File di ricerca salvata (con estensione search-ms) usato per avviare una query passando al file di ricerca in Esplora risorse o associandolo a IShellFolder a livello di codice.

Nota

Anche se la System.Kind proprietà non fa parte di questo scenario di applicazione multimediale, può essere usata per compilare una query che restituisce tutti i file con estensione search-ms in un determinato ambito.

 

Il modo preferito per accedere alle API di ricerca e creare applicazioni Windows Search è tramite un'origine dati shell. ISearchFolderItemFactory è un componente che può creare istanze dell'origine dati della cartella di ricerca, ovvero un tipo di origine dati "virtuale" fornita da Shell che può eseguire query su altre origini dati nello spazio dei nomi shell ed enumerare i risultati. Può farlo usando l'indicizzatore o eseguendo manualmente l'enumerazione e l'ispezione degli elementi negli ambiti specificati.

Gli sviluppatori di terze parti possono creare applicazioni che utilizzano i dati nell'indice tramite query a livello di codice e possono estendere i dati nell'indice per i tipi di file e elementi personalizzati da indicizzare da Windows Search. Se si desidera visualizzare i risultati delle query in Esplora risorse, è necessario implementare un'origine dati shell prima di poter creare un gestore del protocollo per estendere l'indice. Tuttavia, se tutte le query saranno a livello di codice (tramite OLE DB ad esempio) e interpretate dal codice dell'applicazione anziché da Shell, uno spazio dei nomi shell è ancora preferito ma non obbligatorio. Per Windows è necessario un gestore del protocollo per ottenere informazioni sul contenuto dei file, ad esempio elementi nei database o tipi di file personalizzati. Anche se Windows Search può indicizzare il nome e le proprietà del file, Windows non ha informazioni sul contenuto del file. Di conseguenza, tali elementi non possono essere indicizzati o esposti in Windows Shell. Implementando un gestore del protocollo personalizzato, è possibile esporre questi elementi. Per un elenco di gestori identificati dallo scenario di sviluppo che si sta tentando di ottenere, vedere "Panoramica dei gestori" in Windows Search come piattaforma di sviluppo.

Nota

Un'origine dati shell è talvolta nota come estensione dello spazio dei nomi shell. Un gestore è talvolta noto come estensione shell o un gestore di estensioni shell.

 

Nota per implementatori

A causa di potenziali difficoltà che l'indicizzatore potrebbe avere quando si utilizza lo schema del sistema delle proprietà, è fondamentale definire gli attributi con attenzione e strategicamente per la prima versione dello schema. Eventuali modifiche agli attributi (tipo, larghezza colonna, se indicizzati) non verranno riflesse nel database dopo la registrazione di uno schema. L'unico modo per avere queste modifiche riconosciute dopo che lo schema è stato registrato una volta in un sistema consiste nel ricompilare l'indice e quindi registrare il nuovo schema o registrare lo schema e quindi creare una nuova proprietà per ogni versione successiva; ad esempio PKEY_GroupName_PropertyNameV2, PKEY_GroupName_PropertyNameV3e così via. Non è consigliabile creare nuove proprietà in questo modo, perché più colonne extranee potrebbero influire sulle prestazioni del sistema.

Documentazione del sistema delle proprietà Windows

La parte restante di questa documentazione contiene le sezioni seguenti:

Risorse aggiuntive

Guida di Windows Property System Developer

Informazioni di riferimento sul sistema delle proprietà

Esempi di codice del sistema di proprietà