Información general del sistema de propiedades

El sistema de propiedades de Windows es un sistema extensible de lectura y escritura de definiciones de datos que proporciona una manera uniforme de expresar metadatos sobre los elementos de Shell. El sistema de propiedades de Windows en Windows Vista y versiones posteriores permite almacenar y recuperar metadatos para los elementos de Shell. Un elemento de Shell es cualquier elemento de contenido único, como un archivo, una carpeta, un correo electrónico o un contacto. Una propiedad es un fragmento de metadatos individual asociado a un elemento de Shell. Los valores de propiedad se expresan como una estructura PROPVARIANT .

Este tema se organiza de la siguiente manera:

Introducción

Las propiedades se identifican de forma única por su nombre canónico (como System.Document.LastAuthor) y la clave de propiedad (como PKEY_Document_LastAuthor). Una clave de propiedad (PKEY) es la parte de nombre de un par nombre-valor que consta de PKEY/PROPVARIANT o una cadena/PROPVARIANT, donde la cadena es el nombre canónico de PKEY (por System.Document.LastAuthorejemplo, ). Una PKEY es una definición que indica al sistema de propiedades todo lo que necesita saber sobre la propiedad, mientras que el valor es una instancia real de la propiedad. Un PKEY contiene internamente un formatID y propID.

Una propiedad individual consta de las tres partes siguientes:

  • Un nombre canónico, como System.Music.Artist.
  • Descripción del esquema, que se especifica en el formato de archivo XML .propdesc y se expresa mediante programación a través de IPropertyDescription.
  • Valor, como el nombre de un cantante.

La descripción del esquema consta de información sobre la propiedad, como el nombre de la propiedad, el tipo de datos, las restricciones, la información sobre cómo interactúa la propiedad con las vistas y el sistema de búsqueda, etc. El nombre y la descripción del esquema se definen globalmente y son los mismos para todos los elementos y tipos. Un valor es específico de un elemento individual. Es decir, la System.Music.Artist propiedad siempre se define como una cadena de varios valores, pero puede tener un valor diferente (o ningún valor en absoluto) para cada elemento.

Un controlador de propiedades traduce los datos almacenados en un archivo en un esquema estructurado reconocido por y a los que puede acceder el Explorador de Windows, Windows Search y otras aplicaciones. Estos sistemas pueden interactuar con el controlador de propiedades para escribir y leer propiedades en y desde el archivo. Los datos traducidos se exponen mediante programación y se muestran al usuario a través del Explorador de Windows en diversos contextos, como la vista de detalles, la información, el panel de detalles, las páginas de propiedades, etc. Cada controlador de propiedades está asociado a un tipo de archivo determinado, que se identifica mediante la extensión de nombre de archivo. Los desarrolladores deben implementar un controlador de propiedades que genere y consuma el formato nativo de su tipo de archivo, como .jpg o .png, o usar el almacén de propiedades de In-Memory, que genera y consume el formato binario MS-PROPSTORE.

El sistema de propiedades de Windows crea un modelo de datos abstracto que proporciona un nivel de abstracción de formatos de archivo individuales. El modelo de datos abstracto proporcionado por el sistema de propiedades de Windows es un método para leer y escribir un conjunto extensible de valores con nombre asociados a un elemento de Shell. La expresión de valor es flexible, admite muchos tipos de datos y es extensible, lo que permite expresar datos arbitrarios (VT_BLOB) y objetos como un valor.

Debido a la abstracción, puede consultar los atributos o metadatos de cualquier elemento. Entre los ejemplos de elementos que se pueden abstraer se incluyen documentos de Microsoft Office, etiquetas ID3 y AutoCAD y otro software propietario de terceros. Del mismo modo, si tiene un archivo .jpeg, puede usar los códecs .jpeg y EXIF para leer los bytes del archivo para detectar cuáles son las dimensiones de la imagen. Si tiene un archivo .png en su lugar, necesita un códec diferente y otro código para hacerlo. El uso del sistema de propiedades de Windows evita este tipo de problema. Si implementa un nuevo tipo de archivo, tiene la opción de conectar a la abstracción uniforme que ofrece el sistema de propiedades de Windows y especificar cómo hacer que los metadatos sean consumibles. Por estos motivos, siempre es preferible usar la plataforma común proporcionada por el Sistema de propiedades de Windows.

Escenarios de desarrollo

Las propiedades se expresan por los productores y por los consumidores. En este contexto, los productores son los inventores de las propiedades del Sistema de propiedades de Windows y los consumidores son aplicaciones (y sus desarrolladores) que consumen información de propiedades de este sistema. Los usos de y participantes en el Sistema de propiedades de Windows se identifican en la tabla siguiente.

Uso del sistema de propiedades de Windows Participante
Bloque de creación que proporciona un registro extensible de descripciones de propiedades, una implementación de almacén de propiedades en memoria y servicios para enlazar a controladores de propiedades, convertir tipos y serializar almacenes de propiedades. Consumidor
Aplicaciones que quieren leer y escribir propiedades de forma abstracta. Consumidor
Inventores de propiedades que definen nuevas propiedades para el sistema de propiedades mediante la definición de esquemas de propiedades personalizados y el desarrollo de sus propios controladores de propiedades. Productor
Propietarios de formato de archivo que desean habilitar el acceso a las propiedades almacenadas en sus formatos de archivo personalizados. Productor

 

Los consumidores consumen propiedades, esquemas y controladores de propiedades existentes. Las propiedades disponibles para el consumo incluyen propiedades de lectura y escritura de controladores de propiedades para tipos de archivo admitidos y también pueden incluir algunas propiedades personalizadas. Los esquemas disponibles incluyen al menos el esquema del sistema y, a veces, otros también. Un consumidor puede crear una aplicación para consumir metadatos y crear una vista basada en el artista, independientemente de las carpetas en las que se almacenan los elementos. La jerarquía de carpetas de archivos es irrelevante. Por ejemplo, puede especificar todos los elementos de canción por un cantante determinado sin preocuparse por la ubicación de dichos elementos. Este escenario complejo de un extremo a otro no se limita al sistema de propiedades de Windows, sino que implica varios componentes diferentes, como la indexación y las carpetas de búsqueda.

Los inventores de propiedades, o desarrolladores de terceros, son productores en el Sistema de propiedades de Windows. Al preparar la definición de una nueva propiedad, primero inspeccione el conjunto de propiedades que Define Windows. Si encuentra uno que satisfaga sus necesidades, del tipo y la semántica que coincidan con el uso necesario, use esa propiedad y no invente una nueva. Si va a definir una nueva propiedad personalizada, intente obtener un acuerdo con otros desarrolladores que puedan querer usarlo y publicar el resultado de ese contrato para que puedan unirse a la comunidad de usuarios de esa propiedad.

Los productores pueden aprovechar la funcionalidad del Explorador de Windows. Por ejemplo, si está escribiendo un nuevo formato de imagen e implementa un controlador de propiedades, el nuevo formato de archivo estará disponible en el Explorador de Windows. A continuación, los usuarios pueden etiquetar sus fotografías y dinamizar su colección de fotografías en función de cualquier propiedad del Sistema de propiedades de Windows. De hecho, todo lo que shell hace con propiedades, los desarrolladores de terceros pueden hacer en sus propias aplicaciones. Esto incluye la agrupación, la ordenación, la consulta y la visualización de propiedades completas. La experiencia de usuario que proporciona el Explorador de Windows puede implementarse en gran medida por terceros con API disponibles públicamente. El Explorador de Windows se puede reemplazar o ampliar mediante estas API.

Desde el punto de vista de una aplicación que usa el modelo de datos de Shell, hay una gran variedad de escenarios que implican el uso del sistema de propiedades de Windows. Las aplicaciones de administración de medios son un ejemplo destacado. Los escenarios principales del sistema de propiedades incluyen escenarios como la lectura de la propiedad de palabra clave de una fotografía o el establecimiento de la propiedad datetaken. Ejemplos de escenarios de integración de un extremo a otro que habilita el sistema de propiedades de Windows, pero que requieren que funcionen otros componentes, que incluyen mostrar todas las imágenes o buscar un documento que contenga una palabra clave.

Las propiedades sirven a productores y consumidores cuando interactúan con Windows Search e indexación. Windows Search tiene una memoria caché de valores de propiedad que se usan en la implementación del servicio windows Search (WSS). Estos valores de propiedad se pueden consultar mediante programación mediante el proveedor OLE DB de Windows Search o mediante ISearchFolderItemFactory, que representa elementos en los resultados de búsqueda y las vistas basadas en consultas. A continuación, Windows Search recopila y almacena las propiedades emitidas por controladores de filtro o controladores de propiedades cuando se indexa un elemento como un documento de Word. Este almacén se descarta y se vuelve a generar cuando se vuelve a generar el índice.

Nota

Recuerde que, al volver a registrar un esquema, es posible que el indexador no respete los cambios realizados en los atributos de las propiedades definidas anteriormente. La solución es volver a generar el índice o introducir nuevas propiedades que reflejen los cambios en lugar de actualizar los antiguos (no recomendado). Para obtener más información, vea Nota para los implementadores más adelante en este tema.

 

Por ejemplo, un desarrollador que crea una aplicación multimedia quiere mostrar a los usuarios de la aplicación toda la música disponible por un artista determinado. La aplicación proporcionaría al usuario una lista de artistas disponibles y, a continuación, generaría una lista de todas las músicas disponibles por el artista que el usuario selecciona. O bien, es posible que un usuario final quiera realizar una consulta para ?artist:Beethoven? y exponerse a la lista completa de propiedades disponibles en el curso de su búsqueda. Este ejemplo implica el uso del espacio de nombres shell, los controladores de propiedades y/o la consulta del índice a través de uno de los siguientes procedimientos:

  • Un origen de datos de Shell.
  • Proveedor OLE DB.
  • Un archivo de búsqueda guardada (.search-ms) que se usa para iniciar una consulta navegando al archivo de búsqueda en el Explorador de Windows o enlazando a IShellFolder mediante programación.

Nota

Aunque la System.Kind propiedad no participa en este escenario de aplicación multimedia, se podría usar para compilar una consulta que devolvería todos los archivos .search-ms en un ámbito determinado.

 

La manera preferida de acceder a las API de búsqueda y crear aplicaciones de Windows Search es a través de un origen de datos de Shell. ISearchFolderItemFactory es un componente que puede crear instancias del origen de datos de la carpeta de búsqueda, que es un tipo de origen de datos "virtual" proporcionado por el Shell que puede ejecutar consultas en otros orígenes de datos en el espacio de nombres de Shell y enumerar los resultados. Puede hacerlo mediante el indizador o mediante la enumeración manual e inspección de elementos en los ámbitos especificados.

Los desarrolladores de terceros pueden crear aplicaciones que consumen los datos del índice a través de consultas mediante programación y pueden ampliar los datos del índice para los tipos de archivo y elemento personalizados que Windows Search indexe. Si desea mostrar los resultados de la consulta en el Explorador de Windows, debe implementar un origen de datos de Shell para poder crear un controlador de protocolo para ampliar el índice. Sin embargo, si todas las consultas serán mediante programación (por ejemplo, a través de OLE DB) e interpretadas por el código de la aplicación en lugar del Shell, se prefiere un espacio de nombres de Shell, pero no es necesario. Se requiere un controlador de protocolo para que Windows obtenga información sobre el contenido del archivo, como elementos de bases de datos o tipos de archivo personalizados. Aunque Windows Search puede indexar el nombre y las propiedades del archivo, Windows no tiene información sobre el contenido del archivo. Como resultado, estos elementos no se pueden indexar ni exponer en el Shell de Windows. Al implementar un controlador de protocolo personalizado, puede exponer estos elementos. Para obtener una lista de los controladores identificados por el escenario de desarrollador que está intentando lograr, consulte "Información general de los controladores" en Windows Search como plataforma de desarrollo.

Nota

A veces, un origen de datos de Shell se conoce como extensión de espacio de nombres de Shell. A veces, un controlador se conoce como una extensión de Shell o un controlador de extensión de Shell.

 

Nota para los implementadores

Debido a posibles dificultades que puede tener el indexador al consumir el esquema del sistema de propiedades, es fundamental definir los atributos cuidadosamente y estratégicamente para la primera versión del esquema. Los cambios en los atributos (tipo, ancho de columna, indizables) no se reflejarán en la base de datos después de que se haya registrado un esquema. Las únicas formas de que estos cambios se reconozcan después de que el esquema se haya registrado una vez en un sistema sería volver a generar el índice y, a continuación, registrar el nuevo esquema, o registrar el esquema y, a continuación, crear una nueva propiedad para cada versión posterior; por ejemplo PKEY_GroupName_PropertyNameV2, , PKEY_GroupName_PropertyNameV3, etc. No se recomienda crear nuevas propiedades de esta manera, ya que varias columnas extrañas pueden afectar al rendimiento del sistema.

Documentación del sistema de propiedades de Windows

El resto de esta documentación contiene las secciones siguientes:

Recursos adicionales

Guía del desarrollador del sistema de propiedades de Windows

Referencia del sistema de propiedades

Ejemplos de código del sistema de propiedades