Visão geral do sistema de propriedades
O Sistema de Propriedades do Windows é um sistema extensível de leitura/gravação de definições de dados que fornece uma maneira uniforme de expressar metadados sobre itens do Shell. O sistema de Propriedades do Windows no Windows Vista e posterior permite que você armazene e recupere metadados para itens do Shell. Um item shell é qualquer parte do conteúdo, como um arquivo, pasta, email ou contato. Uma propriedade é uma parte individual dos metadados associados a um item do Shell. Os valores de propriedade são expressos como uma estrutura PROPVARIANT .
Este tópico é organizado da seguinte maneira:
- Introdução
- Cenários de desenvolvimento
- Propriedades e Pesquisa do Windows
- Observação aos implementadores
- Documentação do Sistema de Propriedades do Windows
- Recursos adicionais
- Tópicos relacionados
Introdução
As propriedades são identificadas exclusivamente pelo nome canônico (como System.Document.LastAuthor
) e pela chave de propriedade (como PKEY_Document_LastAuthor
). Uma chave de propriedade (PKEY) é a parte do nome de um par nome-valor que consiste em um PKEY/PROPVARIANT ou uma cadeia de caracteres/PROPVARIANT, em que a cadeia de caracteres é o nome canônico da PKEY (como System.Document.LastAuthor
). Um PKEY é uma definição que informa ao sistema de propriedades tudo o que ele precisa saber sobre a propriedade, enquanto o valor é uma instância real da propriedade. Um PKEY contém internamente um formatID e propID.
Uma propriedade individual consiste nas três partes a seguir:
- Um nome canônico, como
System.Music.Artist
. - Uma descrição do esquema, que é especificada no formato de arquivo XML .propdesc e expressa programaticamente por meio de IPropertyDescription.
- Um valor, como o nome de um cantor.
A descrição do esquema consiste em informações sobre a propriedade, como o nome da propriedade, o tipo de dados, as restrições, as informações sobre como a propriedade interage com exibições e o sistema de pesquisa e assim por diante. O nome e a descrição do esquema são definidos globalmente e são os mesmos para todos os itens e tipos. Um valor é específico para um item individual. Ou seja, a System.Music.Artist
propriedade é sempre definida como uma cadeia de caracteres de vários valores, mas pode ter um valor diferente (ou nenhum valor) para cada item.
Um manipulador de propriedades converte dados armazenados em um arquivo em um esquema estruturado que é reconhecido por e pode ser acessado pelo Windows Explorer, Windows Search e outros aplicativos. Esses sistemas podem interagir com o manipulador de propriedades para gravar e ler propriedades de e para o arquivo. Os dados traduzidos são expostos programaticamente e mostrados ao usuário por meio do Windows Explorer em uma variedade de contextos, incluindo exibição de detalhes, dicas de informações, painel de detalhes, páginas de propriedades e assim por diante. Cada manipulador de propriedades é associado a um tipo de arquivo específico, que é identificado pela extensão de nome de arquivo. Os desenvolvedores devem implementar um manipulador de propriedades que produz e consome o formato nativo do tipo de arquivo, como .jpg ou .png, ou usar o repositório de propriedades In-Memory, que produz e consome o formato binário MS-PROPSTORE.
O Sistema de Propriedades do Windows cria um modelo de dados abstrato que fornece um nível de abstração de formatos de arquivo individuais. O modelo de dados abstrato fornecido pelo Sistema de Propriedades do Windows é um método para ler e gravar um conjunto extensível de valores nomeados associados a um item shell. A expressão de valor é flexível, dá suporte a muitos tipos de dados e é extensível, permitindo que dados arbitrários (VT_BLOB) e objetos sejam expressos como um valor.
Devido à abstração, você pode consultar os atributos ou metadados de qualquer item. Exemplos de itens que podem ser abstraídos incluem documentos do Microsoft Office, marcas ID3 e AutoCAD e outros softwares proprietários de terceiros. Da mesma forma, se você tiver um arquivo .jpeg, poderá usar os codecs .jpeg e EXIF para ler os bytes do arquivo para descobrir quais são as dimensões da imagem. Se você tiver um arquivo .png, precisará de um codec diferente e um código diferente para fazer isso. O uso do Sistema de Propriedades do Windows evita esse tipo de problema. Se você implementar um novo tipo de arquivo, terá a opção de conectar-se à abstração uniforme oferecida pelo Sistema de Propriedades do Windows e especificar como tornar seus metadados consumíveis. Por esses motivos, é sempre preferível usar a plataforma comum fornecida pelo Sistema de Propriedades do Windows.
Cenários de desenvolvimento
As propriedades são expressas por produtores e consumidores. Nesse contexto, os produtores são os inventores das propriedades no Sistema de Propriedades do Windows e os consumidores são aplicativos (e seus desenvolvedores) que consomem informações de propriedade desse sistema. Os usos de participantes e no Sistema de Propriedades do Windows são identificados na tabela a seguir.
Uso do Sistema de Propriedades do Windows | Participante |
---|---|
Um bloco de construção que fornece um registro extensível de descrições de propriedade, uma implementação de repositório de propriedades na memória e serviços para associação a manipuladores de propriedades, conversão de tipos e serialização de repositórios de propriedades. | Consumidor |
Aplicativos que desejam ler e gravar propriedades de maneira abstrata. | Consumidor |
Inventores de propriedade que definem novas propriedades para o sistema de propriedades definindo esquemas de propriedade personalizados e desenvolvendo seus próprios manipuladores de propriedades. | Produtor |
Proprietários de formato de arquivo que desejam habilitar o acesso às propriedades armazenadas em seus formatos de arquivo personalizados. | Produtor |
Os consumidores consomem propriedades, esquemas e manipuladores de propriedade existentes. As propriedades disponíveis para consumo incluem propriedades de leitura/gravação de manipuladores de propriedade para tipos de arquivo com suporte e também podem incluir algumas propriedades personalizadas. Os esquemas disponíveis incluem pelo menos o esquema do sistema e, às vezes, outros também. Um consumidor pode criar um aplicativo para consumir metadados e criar uma exibição com base no artista, independentemente das pastas em que os itens estão armazenados. A hierarquia de pastas de arquivos é irrelevante. Por exemplo, você pode especificar todos os itens de música por um cantor específico sem se preocupar com a localização desses itens. Esse cenário complexo de ponta a ponta não se limita ao Sistema de Propriedades do Windows, mas envolve vários componentes diferentes, como as pastas de indexação e pesquisa.
Os inventores de propriedades, ou desenvolvedores de terceiros, são produtores no Sistema de Propriedades do Windows. Ao se preparar para definir uma nova propriedade, primeiro inspecione o conjunto de propriedades que o Windows define. Se você encontrar um que atenda às suas necessidades, do tipo e da semântica que correspondem ao uso necessário, use essa propriedade e não invente uma nova. Se você estiver definindo uma nova propriedade personalizada, tente obter um contrato com outros desenvolvedores que possam querer usá-la e publicar o resultado desse contrato para que eles possam ingressar na comunidade de usuários dessa propriedade.
Os produtores podem aproveitar a funcionalidade do Windows Explorer. Por exemplo, se você estiver escrevendo um novo formato de imagem e implementar um manipulador de propriedades, seu novo formato de arquivo ficará disponível no Windows Explorer. Os usuários podem marcar suas fotografias e dinamizar sua coleção de fotografias com base em qualquer propriedade no Sistema de Propriedades do Windows. Na verdade, qualquer coisa que o Shell faça com propriedades, os desenvolvedores de terceiros podem fazer em seus próprios aplicativos. Isso inclui agrupamento, classificação, consulta e exibição de propriedades completas. A experiência do usuário que o Windows Explorer fornece pode ser amplamente implementada por terceiros com APIs disponíveis publicamente. Os Explorer do Windows podem ser substituídos ou estendidos usando essas APIs.
Do ponto de vista de um aplicativo que usa o modelo de dados shell, há uma enorme variedade de cenários que envolvem o uso do sistema de propriedades do Windows. Os aplicativos de gerenciamento de mídia são um exemplo proeminente. Os principais cenários do sistema de propriedades incluem cenários como ler a propriedade palavra-chave de uma fotografia ou definir a propriedade datetaken. Exemplos de cenários de integração de ponta a ponta habilitados pelo Sistema de Propriedades do Windows, mas que exigem que vários outros componentes funcionem, incluem mostrar todas as imagens ou encontrar um documento que contenha um palavra-chave.
Propriedades e Pesquisa do Windows
As propriedades atendem tanto os produtores quanto os consumidores quando eles fazem interface com o Windows Search e a indexação. O Windows Search tem um cache de valores de propriedade que são usados na implementação do WSS (Serviço de Pesquisa do Windows). Esses valores de propriedade podem ser consultados programaticamente usando o provedor OLE DB do Windows Search ou por meio de ISearchFolderItemFactory, que representa itens nos resultados da pesquisa e exibições baseadas em consulta. Em seguida, o Windows Search coleta e armazena propriedades emitidas por manipuladores de filtro ou manipuladores de propriedade quando um item como um documento Word é indexado. Esse repositório é descartado e recriado quando o índice é recriado.
Observação
Lembre-se de que, ao registrar novamente um esquema, as alterações feitas em atributos de propriedades definidas anteriormente podem não ser respeitadas pelo indexador. A solução é recriar o índice ou introduzir novas propriedades que refletem as alterações em vez de atualizar as antigas (não recomendadas). Para obter mais informações, consulte Observação aos implementadores mais adiante neste tópico.
Por exemplo, um desenvolvedor que cria um aplicativo de mídia deseja mostrar aos usuários do aplicativo todas as músicas disponíveis por um artista específico. O aplicativo forneceria ao usuário uma lista de artistas disponíveis e, em seguida, geraria uma lista de todas as músicas disponíveis pelo artista selecionado pelo usuário. Ou um usuário final pode querer fazer uma consulta para ?artist:Beethoven?, e ser exposto à lista completa de propriedades disponíveis no decorrer de sua pesquisa. Este exemplo envolve o uso do namespace shell, manipuladores de propriedade e/ou consulta do índice por meio de um dos seguintes:
- Uma fonte de dados do Shell.
- Um provedor OLE DB.
- Um arquivo de Pesquisa Salva (.search-ms) que é usado para iniciar uma consulta navegando até o arquivo de pesquisa no Windows Explorer ou associando-se ao IShellFolder programaticamente.
Observação
Embora a System.Kind
propriedade não participe desse cenário de aplicativo de mídia, ela pode ser usada para criar uma consulta que retornaria todos os arquivos .search-ms em um escopo específico.
A maneira preferencial de acessar as APIs de Pesquisa e criar aplicativos do Windows Search é por meio de uma fonte de dados do Shell. ISearchFolderItemFactory é um componente que pode criar instâncias da fonte de dados da pasta Search, que é uma espécie de fonte de dados "virtual" fornecida pelo Shell que pode executar consultas em outras fontes de dados no namespace shell e enumerar resultados. Ele pode fazer isso usando o indexador ou enumerando e inspecionando manualmente itens nos escopos especificados.
Desenvolvedores de terceiros podem criar aplicativos que consomem os dados no índice por meio de consultas programáticas e podem estender os dados no índice para tipos de arquivo e item personalizados a serem indexados pelo Windows Search. Se você quiser mostrar os resultados da consulta no Windows Explorer, deverá implementar uma fonte de dados do Shell antes de criar um manipulador de protocolo para estender o índice. No entanto, se todas as consultas forem programáticas (por meio do OLE DB, por exemplo) e interpretadas pelo código do aplicativo em vez do Shell, um namespace do Shell ainda será preferencial, mas não será necessário. Um manipulador de protocolo é necessário para que o Windows obtenha informações sobre o conteúdo do arquivo, como itens em bancos de dados ou tipos de arquivo personalizados. Embora o Windows Search possa indexar o nome e as propriedades do arquivo, o Windows não tem informações sobre o conteúdo do arquivo. Como resultado, esses itens não podem ser indexados ou expostos no Shell do Windows. Ao implementar um manipulador de protocolo personalizado, você pode expor esses itens. Para obter uma lista de manipuladores identificados pelo cenário de desenvolvedor que você está tentando alcançar, confira "Visão geral dos manipuladores" no Windows Search como uma plataforma de desenvolvimento.
Observação
Às vezes, uma fonte de dados do Shell é conhecida como uma extensão de namespace do Shell. Às vezes, um manipulador é conhecido como uma extensão do Shell ou um manipulador de extensão do Shell.
Observação aos implementadores
Devido a possíveis dificuldades que o indexador pode ter ao consumir o esquema do sistema de propriedades, é fundamental que você defina atributos com cuidado e estrategicamente para a primeira versão do esquema. Qualquer alteração nos atributos (tipo, largura da coluna, se indexável) não será refletida no banco de dados após o registro de um esquema. As únicas maneiras de reconhecer essas alterações depois que o esquema tiver sido registrado uma vez em um sistema seria recompilar o índice e registrar o novo esquema ou registrar o esquema e, em seguida, criar uma nova propriedade para cada versão subsequente; por exemplo PKEY_GroupName_PropertyNameV2
, , PKEY_GroupName_PropertyNameV3
e assim por diante. Não recomendamos a criação de novas propriedades dessa maneira, pois várias colunas desnecessárias podem afetar o desempenho do sistema.
Documentação do Sistema de Propriedades do Windows
O restante desta documentação contém as seguintes seções:
Guia do Desenvolvedor do Sistema de Propriedades do Windows
Descreve detalhadamente como implementar os cenários de desenvolvimento main usando o Sistema de Propriedades do Windows.
Referência do sistema de propriedades
Documenta as propriedades do Windows, o esquema de descrição da propriedade, interfaces, funções, estruturas e constantes, enumerações e sinalizadores do sistema de propriedades do Windows.
Exemplos de código do sistema de propriedades
Descreve exemplos que demonstram como usar o Sistema de Propriedades do Windows.
Recursos adicionais
- Para obter informações sobre como reutilizar o repositório de propriedades In-Memory, consulte Inicializando manipuladores de propriedade e PSCreateMemoryPropertyStore.
- Para obter uma especificação do Formato de Arquivo Binário do Repositório de Propriedades da Microsoft, consulte [MS_PROPSTORE].
- A relação entre o Windows Search e a indexação e como estender o índice são explicadas nos seguintes tópicos no Windows Search:
- Desenvolvendo manipuladores de filtro para o Windows Search
- Desenvolvendo manipuladores de protocolo para o Windows Search
- Desenvolvendo manipuladores de propriedades para o Windows Search
- Para o download do SDK do Windows Vista ou do Windows 7 ou atualizado, consulte o SDK do Windows.
Tópicos relacionados