Partilhar via


Identificadores de propriedade reservada

Os identificadores de propriedade reservada não podem ser usados como identificadores de propriedade (ID). Qualquer identificador de propriedade (ID) pode ser usado, exceto 0, 1 e qualquer valor maior ou igual a 0x80000000. Esses valores de identificador de propriedade são reservados para uso por aplicativos.

A tabela a seguir lista os IDs de propriedade reservados e a descrição para o que o ID de propriedade está reservado.

ID da propriedade reservada Descrição
0 Reservado para criar um opcional de Dicionário de Nome de Exibição do Conjunto de Propriedades. Isso permite que os usuários do conjunto de propriedades atribuam significado às propriedades, além daqueles fornecidos pelo indicador de tipo.
1 Reservado como um indicador da página de código (Windows) ou Script (Macintosh) para usar ao interpretar as cadeias de caracteres no conjunto de propriedades.
Todos os valores de cadeia de caracteres no conjunto de propriedades devem ser armazenados com a mesma página de código. O valor do sistema operacional de origem no cabeçalho do conjunto de propriedades (PROPERTYSETHEADER::d wOSVer) determina se o indicador de página de código corresponde a uma página de código do Windows ou script do Macintosh.
0x80000000 Reservado como uma indicação da localidade para a qual o conjunto de propriedades está escrito.
A localidade padrão para um conjunto de propriedades é a localidade padrão do sistema (LOCALE_SYSTEM_DEFAULT). Para obter mais informações sobre LOCALE_SYSTEM_DEFAULT, consulte as APIs do Win32. O padrão é usado no caso de o indicador de localidade não existir no conjunto de propriedades.
0x80000003 Reservado como um indicador de comportamentos do conjunto de propriedades. Esse valor de ID de propriedade é um VT_UI4 e começa com um tipo de dados DWORD contendo o valor VT_UI4 seguido por um DWORD indicando o comportamento do conjunto de propriedades.
Atualmente, o único bit neste valor que é definido é o bit de ordem baixa (0x1). Se esse bit estiver definido, isso indica que os nomes de conjuntos de propriedades, indicados pelo ID de propriedade 0, devem ser considerados sensíveis a maiúsculas e minúsculas. Se esse bit não estiver definido ou se a propriedade de comportamento (ID 0x80000003) não existir, os nomes deverão ser considerados sem distinção entre maiúsculas e minúsculas.
0xFFFFFFFF Reservado para a conveniência da programação. Ele nunca deve aparecer em um conjunto de propriedades serializadas.

Os identificadores de propriedade com o conjunto de bits alto (ou seja, valores negativos) são reservados para uso futuro pela Microsoft.

Das propriedades reservadas, aquelas com valores de ID no intervalo 0x80000000 a 0xBFFFFFFF são consideradas somente leitura por implementações que não entendem seu significado. Por exemplo, se uma implementação não entender o significado de propriedade 0x80000000, ela deve permitir que essa propriedade seja lida, mas não escrita ou excluída. Essa implementação deve permitir que uma propriedade no intervalo 0xC0000000 0xFFFFFFFE seja lida, gravada ou excluída. O ID de propriedade 0xFFFFFFFF é um valor reservado e nunca deve aparecer em um conjunto de propriedades serializadas.

Localidade do conjunto de propriedades

Os aplicativos podem optar por dar suporte à localidade ou usar o comportamento padrão. Recomenda-se que os aplicativos permitam que os usuários especifiquem uma localidade de trabalho. Esses aplicativos devem gravar o identificador de localidade especificado pelo usuário na propriedade. Os aplicativos que usam a localidade padrão do usuário (LOCALE_USER_DEFAULT) devem gravar o identificador de localidade padrão do usuário na propriedade. Para obter mais informações sobre LOCALE_USER_DEFAULT, consulte a API do Win32.

Observação

Se o interface IPropertySetStorage for usado para criar um conjunto de propriedades, a localidade padrão do usuário será automaticamente gravada como o Indicador de localidade.

Os aplicativos também devem lidar com o caso de um objeto estrangeiro, que é aquele em que a localidade não é a localidade do aplicativo, a localidade do usuário ou a localidade do sistema.

A propriedade do indicador de localidade é do tipo VT_U14 e, portanto, consiste em um DWORD que contém VT_U14, seguido por um DWORD contendo o identificador de localidade (LCID), conforme definido na API do Win32.

Indicador de página de código

Quando um aplicativo que não é o autor de um conjunto de propriedades altera uma propriedade do tipo string no conjunto, ele deve examinar o indicador de página de código e executar uma das seguintes ações:

  • Escreva a cadeia de caracteres no formato especificado pelo indicador de página de código.
  • Substitua e reescreva para alterar a página de código.

Se um aplicativo não puder reconhecer esse indicador, ele não deverá modificar a propriedade. Todos os criadores de conjuntos de propriedades devem escrever um indicador de página de código; no entanto, se o indicador de página de código não estiver presente, a página de código predominante no computador do leitor deve ser assumida.

Observação

Se o interface IPropertySetStorage for usado para criar um conjunto de propriedades, o indicador de página de código será gravado automaticamente.

Os valores possíveis para a página de código são fornecidos na API do Win32 (para obter mais informações, consulte a funçãoGetACP) e Inside Macintosh Volume VI, páginas 14-111. (Esses recursos podem não estar disponíveis em alguns idiomas e países.) Por exemplo, a página de código US ANSI é representada por 0x04E4 (1252 em decimal) enquanto a página de código para Unicode é 0x04B0 (1200 em decimal).

Recomenda-se que a página de código Unicode seja usada quando possível e use VT_LPWSTR em vez de VT_LPSTR para evitar <multibyte -> conversões Unicode durante o armazenamento e a recuperação. Usar a mesma página de código para todos os conjuntos de propriedades é a única maneira de obter conjuntos de propriedades interoperáveis em uma base mundial. Na página de código Unicode ou não-Unicode, esteja ciente de que a contagem no início de um VT_LPSTR ou VT_BSTR é uma contagem de bytes de e não uma contagem de caracteres. Essa contagem de bytes inclui um ou dois zero bytes no final da cadeia de caracteres (o NULL terminador da cadeia de caracteres).

O ID de propriedade 1 é um tipo VT_I2 e começa com um DWORD que contém o valor VT_I2 seguido por um SHORT que indica a página de código.