Creazione di proprietà personalizzate.
Le proprietà usate nel sistema di proprietà di Windows Vista e versioni successive vengono dichiarate negli schemi delle proprietà. Questi schemi di proprietà sono definiti nei file XML e descrivono vari aspetti di una proprietà, tra cui il tipo (incluse le informazioni sul tipo primitivo e se è multivalore), come può essere visualizzato nell'interfaccia utente di Windows, quale tipo di etichette (stringhe di modifica descrittive) devono essere usate con esso e come viene memorizzato nella cache nell'archivio di ricerca per un accesso più rapido. Le proprietà sono identificate dal nome canonico o dalla relativa chiave di proprietà (PKEY).
Un nome canonico è il nome user-friendly della proprietà e utilizza una convenzione dello spazio dei nomi simile a quella usata in Microsoft .NET. Per le proprietà definite dal sistema (quelle incluse in Windows), la convenzione è System.GroupName.PropertyName
. Si noti che lo schema Pascal, che capitalizza le lettere all'inizio di ogni parola, viene usato in questi nomi. I nomi canonici vengono usati in diversi contesti, inclusi gli elenchi delle proprietà e i nomi delle colonne nella cache delle proprietà. Vengono quindi usate nelle query SQL (Structured Query Language) per recuperare un valore della proprietà.
Un PKEY è una coppia di valori costituiti rispettivamente da un GUID e da una DWORD, denominati rispettivamente formatID e propID. È rappresentato da una struttura di PROPERTYKEY. La maggior parte delle API del sistema di proprietà accetta queste chiavi di proprietà. Windows Software Development Kit (SDK) include il file header Propkey.h che include la definizione macro di ciascuna delle chiavi di proprietà System
, seguendo la convenzione di PKEY_GroupName_PropertyName
. Ad esempio, PKEY_Photo_DateTaken
è la chiave di proprietà per la proprietà con il nome System.Photo.DateTaken
canonico . I valori delle proprietà vengono archiviati sotto forma di struttura PROPVARIANT , che è un'estensione dei tipi OLE VARIANT.
Questa sezione contiene l'argomento seguente, che è integrale alla creazione di proprietà personalizzate:
Nota
A causa di potenziali difficoltà che l'indicizzatore potrebbe avere quando si utilizza lo schema del sistema di proprietà, è fondamentale definire gli attributi con attenzione e strategicamente per la prima versione dello schema. Eventuali modifiche apportate agli attributi (tipo, larghezza colonna, se indicizzabili) non verranno riflesse nel database dopo la registrazione di uno schema. L'unico modo per fare in modo che queste modifiche vengano riconosciute dopo che lo schema è stato registrato una sola volta in un sistema sarebbe ricompilare l'indice e quindi registrare il nuovo schema oppure registrare lo schema e quindi creare una nuova proprietà per ogni versione successiva; ad esempio PKEY_GroupName_PropertyNameV2
, PKEY_GroupName_PropertyNameV3
e così via). Non è consigliabile creare nuove proprietà in questo modo, perché più colonne estranee possono influire sulle prestazioni del sistema.