Partilhar via


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 versões posteriores permite armazenar e recuperar metadados para itens do Shell. Um item do Shell é qualquer parte do conteúdo, como um arquivo, pasta, e-mail ou contato. Uma propriedade é uma parte individual de metadados associada a um item do Shell. Os valores de propriedade são expressos como uma estrutura de PROPVARIANT.

Este tópico está organizado da seguinte forma:

Introdução

As propriedades são identificadas exclusivamente por seu nome canônico (como System.Document.LastAuthor) e chave de propriedade (como PKEY_Document_LastAuthor). Uma chave de propriedade (PKEY) é a parte do nome de um par nome-valor que consiste em uma PKEY/PROPVARIANT ou uma string/PROPVARIANT, em que a string é o nome canónico do PKEY (como System.Document.LastAuthor). Um PKEY é uma definição que diz ao sistema de propriedade tudo o que ele precisa saber sobre a propriedade, enquanto o valor é uma instância real da propriedade. Um PKEY contém um formatID e um propID internamente.

Uma propriedade individual consiste nas seguintes três partes:

  • 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 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, tipo de dados, restrições, 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 propriedade System.Music.Artist é 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 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 propriedade está 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 produza e consuma o formato nativo do tipo de arquivo, como .jpg ou .png, ou usar o In-Memory Property Store, 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 abstratos 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 do Shell. A expressão de valor é flexível, suportando 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, tags 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 e descobrir quais são as dimensões da imagem. Se tiveres um arquivo .png, precisarás de um codec diferente e um código diferente para fazê-lo. Usar o Sistema de Propriedades do Windows evita esse tipo de problema. Se você implementar um novo tipo de arquivo, terá a opção de se conectar à abstração uniforme oferecida pelo Sistema de Propriedades do Windows e especificar como tornar seus metadados consumíveis. Por estas razões, é sempre preferível usar a plataforma comum fornecida pelo Windows Property System.

Cenários de desenvolvimento

As propriedades são expressas pelos produtores e pelos consumidores. Neste contexto, os produtores são os inventores de propriedades no Windows Property System e os consumidores são aplicações (e seus desenvolvedores) que consomem informações de propriedade deste sistema. Os usos e participantes do 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 propriedades, uma implementação de armazenamento de propriedades na memória e serviços para vinculação a manipuladores de propriedades, conversão de tipos e serialização de repositórios de propriedades. Consumidor
Aplicativos que desejam ler e escrever propriedades de forma abstrata. Consumidor
Inventores de propriedades que definem novas propriedades para o sistema de propriedades definindo esquemas de propriedades personalizadas e desenvolvendo seus próprios manipuladores de propriedades. Produtor
Proprietários de formatos 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 propriedades para tipos de arquivo suportados 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 de quais pastas os itens estão armazenados. A hierarquia de pastas de arquivos é irrelevante. Por exemplo, você pode especificar todos os itens de música de um cantor específico sem se preocupar com a localização de tais 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 terceirizados, 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 semântica que correspondam ao seu uso necessário, use essa propriedade e não invente um novo. Se você estiver definindo uma nova propriedade personalizada, tente obter um acordo com outros desenvolvedores que possam querer usá-la e publique o resultado desse contrato para que eles possam se juntar à comunidade de usuários dessa propriedade.

Os produtores podem tirar proveito da 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 utilizadores podem marcar as suas fotografias e organizar a sua coleção de fotografias com base em qualquer propriedade do Sistema de Propriedades do Windows. Na verdade, qualquer coisa que o Shell faça com propriedades, desenvolvedores de terceiros podem fazer em seus próprios aplicativos. Isso inclui agrupar, classificar, consultar e exibir propriedades completas. A experiência do usuário que o Windows Explorer fornece pode ser amplamente implementada por terceiros com APIs disponíveis publicamente. O Windows Explorer pode ser substituído ou estendido 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. As aplicações de gestão de media são um exemplo proeminente. Os cenários principais do sistema de propriedades incluem cenários como a leitura da propriedade palavra-chave de uma fotografia ou a definição da propriedade datetaken. Exemplos de cenários de integração de ponta a ponta que o Sistema de Propriedades do Windows habilita, mas que exigem vários outros componentes para funcionar, incluem mostrar todas as imagens ou localizar um documento que contenha uma palavra-chave.

As propriedades servem tanto para produtores como para consumidores quando interagem 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 Windows Search Service (WSS). Esses valores de propriedade podem ser consultados programaticamente usando o provedor OLE DB do Windows Search ou por meio ISearchFolderItemFactory , que representa itens em resultados de 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 do Word, é indexado. Esta store é descartada e reconstruída quando o índice é reconstruído.

Observação

Lembre-se de que, quando você registra novamente um esquema, as alterações feitas em atributos de propriedades definidas anteriormente podem não ser respeitadas pelo indexador. A solução é reconstruir o índice ou introduzir novas propriedades que reflitam as alterações em vez de atualizar as antigas (não recomendado). Para obter mais informações, consulte Nota 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 de um determinado artista. 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 que o usuário seleciona. 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 ao índice por meio de um dos seguintes:

  • Uma fonte de dados do Shell.
  • Um provedor OLE DB.
  • Um ficheiro de Pesquisa Guardada (.search-ms) que é utilizado para iniciar uma consulta navegando até ao ficheiro de pesquisa no Windows Explorer ou associando-se programaticamente a IShellFolder.

Observação

Embora a propriedade System.Kind 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 preferida 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 Pesquisa, que é um tipo de fonte de dados "virtual" fornecida pelo Shell que pode executar consultas sobre outras fontes de dados no namespace do Shell e enumerar resultados. Ele pode fazer isso usando o indexador ou enumerando e inspecionando manualmente os itens nos escopos especificados.

Os 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 quiser mostrar os resultados da consulta no Windows Explorer, você deve 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á preferido, mas não 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, consulte "Visão geral de manipuladores" em Windows Search como uma plataforma de desenvolvimento.

Observação

Uma fonte de dados do Shell às vezes é conhecida como uma extensão de namespace do Shell. Um manipulador às vezes é conhecido como uma extensão Shell ou um manipulador de extensão Shell.

 

Nota aos implementadores

Devido às 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. Quaisquer alterações nos atributos (tipo, largura da coluna, se indexáveis) não serão refletidas no banco de dados após o registro de um esquema. As únicas maneiras de ter essas alterações reconhecidas após o esquema ter sido registrado uma vez em um sistema seria reconstruir o índice e, em seguida, 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_PropertyNameV3e assim por diante. Não recomendamos a criação de novas propriedades dessa maneira, porque várias colunas estranhas 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:

Recursos adicionais

Guia do Desenvolvedor do Sistema de Propriedades do Windows

Referência do Sistema de Propriedades

Exemplos de código do sistema de propriedade