Partager via


Cliquez sur Vue d’ensemble du système de propriétés.

Le système de propriétés Windows est un système extensible de définitions de données en lecture/écriture qui fournit un moyen uniforme d’exprimer des métadonnées sur les éléments shell. Le système de propriétés Windows dans Windows Vista et versions ultérieures vous permet de stocker et de récupérer des métadonnées pour les éléments Shell. Un élément Shell est n’importe quel élément de contenu unique, tel qu’un fichier, un dossier, un e-mail ou un contact. Une propriété est un élément de métadonnées individuel associé à un élément Shell. Les valeurs de propriété sont exprimées sous la forme d’une structure PROPVARIANT .

Cette rubrique est organisée comme suit :

Introduction

Les propriétés sont identifiées de manière unique par leur nom canonique (par System.Document.LastAuthorexemple ) et leur clé de propriété (par PKEY_Document_LastAuthorexemple ). Une clé de propriété (PKEY) est la partie nom d’une paire nom-valeur qui se compose d’un PKEY/PROPVARIANT ou d’une chaîne/PROPVARIANT, où la chaîne est le nom canonique du PKEY (par exemple System.Document.LastAuthor). Une PKEY est une définition qui indique au système de propriétés tout ce qu’il doit savoir sur la propriété, alors que la valeur est une instance réelle de la propriété. Un PKEY contient en interne un formatID et un propID.

Une propriété individuelle se compose des trois éléments suivants :

  • Nom canonique, tel que System.Music.Artist.
  • Description de schéma, qui est spécifiée dans le format de fichier XML .propdesc et exprimée par programmation via IPropertyDescription.
  • Valeur, telle que le nom d’un chanteur.

La description du schéma se compose d’informations sur la propriété, telles que le nom de la propriété, le type de données, les contraintes, des informations sur la façon dont la propriété interagit avec les vues et le système de recherche, etc. Le nom et la description du schéma sont définis globalement et sont les mêmes pour tous les éléments et types. Une valeur est spécifique à un élément individuel. Autrement dit, la System.Music.Artist propriété est toujours définie comme une chaîne à valeurs multiples, mais peut avoir une valeur différente (ou aucune valeur du tout) pour chaque élément.

Un gestionnaire de propriétés convertit les données stockées dans un fichier en un schéma structuré qui est reconnu par windows Explorer, Recherche Windows et d’autres applications. Ces systèmes peuvent ensuite interagir avec le gestionnaire de propriétés pour écrire et lire des propriétés dans et à partir du fichier. Les données traduites sont exposées par programmation et affichées à l’utilisateur via Windows Explorer dans divers contextes, notamment l’affichage des détails, les info-bulles, le volet d’informations, les pages de propriétés, etc. Chaque gestionnaire de propriétés est associé à un type de fichier particulier, qui est identifié par l’extension de nom de fichier. Les développeurs doivent implémenter un gestionnaire de propriétés qui produit et consomme le format natif de leur type de fichier, tel que .jpg ou .png, ou utiliser le magasin de propriétés In-Memory, qui produit et consomme le format binaire MS-PROPSTORE.

Le système de propriétés Windows crée un modèle de données abstrait qui fournit un niveau d’abstraction à partir de formats de fichiers individuels. Le modèle de données abstrait fourni par le système de propriétés Windows est une méthode permettant de lire et d’écrire un ensemble extensible de valeurs nommées associées à un élément Shell. L’expression de valeur est flexible, prend en charge de nombreux types de données et est extensible, ce qui permet d’exprimer des données arbitraires (VT_BLOB) et des objets sous forme de valeur.

En raison de l’abstraction, vous pouvez interroger les attributs ou les métadonnées de n’importe quel élément. Parmi les exemples d’éléments qui peuvent être extraits, citons les documents Microsoft Office, les étiquettes ID3 et les AutoCAD ainsi que d’autres logiciels propriétaires tiers. De même, si vous avez un fichier .jpeg, vous pouvez utiliser les codecs .jpeg et EXIF pour lire les octets du fichier et découvrir quelles sont les dimensions de l’image. Si vous avez un fichier .png à la place, vous avez besoin d’un autre codec et d’un code différent pour ce faire. L’utilisation du système de propriétés Windows permet d’éviter ce type de problème. Si vous implémentez un nouveau type de fichier, vous avez la possibilité de vous connecter à l’abstraction uniforme offerte par le système de propriétés Windows et de spécifier comment rendre vos métadonnées consommables. Pour ces raisons, il est toujours préférable d’utiliser la plateforme commune fournie par le système de propriétés Windows.

Scénarios de développement

Les propriétés sont exprimées par les producteurs et par les consommateurs. Dans ce contexte, les producteurs sont les inventeurs des propriétés dans le système de propriétés Windows et les consommateurs sont des applications (et leurs développeurs) qui consomment des informations sur les propriétés de ce système. Les utilisations et les participants du système de propriétés Windows sont identifiés dans le tableau suivant.

Utilisation du système de propriétés Windows Participant
Bloc de construction qui fournit un registre extensible de descriptions de propriétés, une implémentation de magasin de propriétés en mémoire et des services pour la liaison à des gestionnaires de propriétés, la conversion de types et la sérialisation des magasins de propriétés. Consommateur
Applications qui souhaitent lire et écrire des propriétés de manière abstraite. Consommateur
Inventeurs de propriétés qui définissent de nouvelles propriétés pour le système de propriétés en définissant des schémas de propriétés personnalisés et en développant leurs propres gestionnaires de propriétés. Producer
Propriétaires de formats de fichier qui souhaitent activer l’accès aux propriétés stockées dans leurs formats de fichier personnalisés. Producer

 

Les consommateurs consomment des propriétés, des schémas et des gestionnaires de propriétés existants. Les propriétés disponibles pour la consommation incluent les propriétés en lecture/écriture des gestionnaires de propriétés pour les types de fichiers pris en charge et peuvent également inclure certaines propriétés personnalisées. Les schémas disponibles incluent au moins le schéma système et parfois d’autres. Un consommateur peut créer une application pour consommer des métadonnées et créer une vue basée sur l’artiste, quel que soit le dossier dans lequel les éléments sont stockés. La hiérarchie des dossiers de fichiers n’est pas pertinente. Par exemple, vous pouvez spécifier tous les éléments de chanson d’un chanteur particulier sans vous soucier de l’emplacement de ces éléments. Ce scénario complexe de bout en bout ne se limite pas au système de propriétés Windows, mais implique plusieurs composants différents, tels que l’indexation et les dossiers de recherche.

Les inventeurs de propriétés, ou les développeurs tiers, sont des producteurs dans le système de propriétés Windows. Lorsque vous vous préparez à définir une nouvelle propriété, examinez d’abord l’ensemble de propriétés défini par Windows. Si vous en trouvez une qui répond à vos besoins, du type et de la sémantique qui correspondent à votre utilisation requise, utilisez cette propriété et n’en inventez pas une nouvelle. Si vous définissez une nouvelle propriété personnalisée, essayez d’obtenir un accord avec d’autres développeurs qui souhaitent l’utiliser et publiez le résultat de ce contrat afin qu’ils puissent rejoindre la communauté des utilisateurs de cette propriété.

Les producteurs peuvent tirer parti des fonctionnalités de Windows Explorer. Par exemple, si vous écrivez un nouveau format d’image et implémentez un gestionnaire de propriétés, votre nouveau format de fichier devient disponible dans Windows Explorer. Les utilisateurs peuvent ensuite marquer leurs photographies et faire pivoter leur collection de photographies en fonction de n’importe quelle propriété dans le système de propriétés Windows. En fait, tout ce que Shell fait avec les propriétés, les développeurs tiers peuvent faire dans leurs propres applications. Cela inclut le regroupement, le tri, l’interrogation et l’affichage des propriétés complètes. L’expérience utilisateur que windows Explorer fournit peut être en grande partie implémentée par des tiers avec des API accessibles au public. Les Explorer Windows peuvent être remplacés ou étendus à l’aide de ces API.

Du point de vue d’une application qui utilise le modèle de données Shell, il existe une grande variété de scénarios impliquant l’utilisation du système de propriétés Windows. Les applications de gestion des médias en sont un exemple important. Les scénarios de système de propriétés principales incluent des scénarios tels que la lecture de la propriété mot clé d’une photo ou la définition de la propriété datetaken. Des exemples de scénarios d’intégration de bout en bout activés par le système de propriétés Windows, mais qui nécessitent plusieurs autres composants pour fonctionner, incluent l’affichage de toutes les images ou la recherche d’un document contenant un mot clé.

Les propriétés servent à la fois les producteurs et les consommateurs lorsqu’elles s’interfacent avec La recherche Windows et l’indexation. Recherche Windows dispose d’un cache de valeurs de propriété qui sont utilisées dans l’implémentation du service Recherche Windows (WSS). Ces valeurs de propriété peuvent être interrogées par programmation à l’aide du fournisseur OLE DB de Recherche Windows ou via ISearchFolderItemFactory, qui représente des éléments dans les résultats de recherche et les vues basées sur des requêtes. Recherche Windows collecte et stocke ensuite les propriétés émises par les gestionnaires de filtres ou les gestionnaires de propriétés lorsqu’un élément tel qu’un document Word est indexé. Ce magasin est ignoré et reconstruit lorsque l’index est reconstruit.

Notes

N’oubliez pas que lorsque vous réinscrivez un schéma, les modifications apportées aux attributs des propriétés définies précédemment peuvent ne pas être respectées par l’indexeur. La solution consiste à reconstruire l’index ou à introduire de nouvelles propriétés qui reflètent les modifications au lieu de mettre à jour les anciennes (non recommandées). Pour plus d’informations, consultez Remarque à l’attention des implémenteurs plus loin dans cette rubrique.

 

Par exemple, un développeur qui crée une application multimédia souhaite montrer aux utilisateurs de l’application toute la musique disponible d’un artiste particulier. L’application fournirait à l’utilisateur une liste d’artistes disponibles, puis générerait une liste de toutes les musiques disponibles par l’artiste que l’utilisateur sélectionne. Ou un utilisateur final peut vouloir effectuer une requête pour ?artist:Beethoven?, et être exposé à la liste complète des propriétés disponibles au cours de sa recherche. Cet exemple implique l’utilisation de l’espace de noms Shell, des gestionnaires de propriétés et/ou l’interrogation de l’index via l’un des éléments suivants :

  • Source de données Shell.
  • Fournisseur OLE DB.
  • Fichier de recherche enregistré (.search-ms) utilisé pour lancer une requête en accédant au fichier de recherche dans Windows Explorer ou en se liant à IShellFolder par programmation.

Notes

Bien que la System.Kind propriété ne participe pas à ce scénario d’application multimédia, elle peut être utilisée pour générer une requête qui retournerait tous les fichiers .search-ms dans une étendue particulière.

 

La méthode recommandée pour accéder aux API de recherche et créer des applications Recherche Windows consiste à utiliser une source de données Shell. ISearchFolderItemFactory est un composant qui peut créer des instances de la source de données du dossier Search, qui est une sorte de source de données « virtuelle » fournie par l’interpréteur de commandes qui peut exécuter des requêtes sur d’autres sources de données dans l’espace de noms Shell et énumérer les résultats. Il peut le faire à l’aide de l’indexeur ou en énumérant et inspectant manuellement les éléments dans les étendues spécifiées.

Les développeurs tiers peuvent créer des applications qui consomment les données de l’index via des requêtes programmatiques, et peuvent étendre les données de l’index pour que les types de fichiers et d’éléments personnalisés soient indexés par Recherche Windows. Si vous souhaitez afficher les résultats de la requête dans Windows Explorer, vous devez implémenter une source de données Shell avant de pouvoir créer un gestionnaire de protocole pour étendre l’index. Toutefois, si toutes les requêtes sont par programmation (par le biais d’OLE DB par exemple) et interprétées par le code de l’application plutôt que par l’interpréteur de commandes, un espace de noms Shell est toujours préféré, mais pas obligatoire. Un gestionnaire de protocole est requis pour que Windows obtienne des informations sur le contenu des fichiers, telles que des éléments dans des bases de données ou des types de fichiers personnalisés. Bien que Recherche Windows puisse indexer le nom et les propriétés du fichier, Windows ne dispose d’aucune information sur le contenu du fichier. Par conséquent, ces éléments ne peuvent pas être indexés ou exposés dans l’interpréteur de commandes Windows. En implémentant un gestionnaire de protocole personnalisé, vous pouvez exposer ces éléments. Pour obtenir la liste des gestionnaires identifiés par le scénario de développement que vous essayez d’obtenir, consultez « Vue d’ensemble des gestionnaires » dans Recherche Windows en tant que plateforme de développement.

Notes

Une source de données Shell est parfois appelée extension d’espace de noms Shell. Un gestionnaire est parfois appelé extension Shell ou gestionnaire d’extension Shell.

 

Remarque à l’attention des implémenteurs

En raison des difficultés potentielles que l’indexeur peut avoir lors de l’utilisation du schéma du système de propriétés, il est essentiel que vous définissiez les attributs avec soin et de manière stratégique pour la première version du schéma. Les modifications apportées aux attributs (type, largeur de colonne, indexable ou non) ne seront pas reflétées dans la base de données après l’inscription d’un schéma. Les seules façons de faire reconnaître ces modifications une fois que le schéma a été inscrit une fois sur un système seraient soit de reconstruire l’index, puis d’inscrire le nouveau schéma, soit d’inscrire le schéma et de créer une propriété pour chaque version suivante ; par exemple PKEY_GroupName_PropertyNameV2, PKEY_GroupName_PropertyNameV3, et ainsi de suite. Nous vous déconseillons de créer de telles propriétés, car plusieurs colonnes superflues peuvent avoir un impact sur les performances du système.

Documentation du système de propriétés Windows

Le reste de cette documentation contient les sections suivantes :

Ressources supplémentaires

Guide du développeur du système de propriétés Windows

Référence du système de propriétés

Exemples de code du système de propriétés