Identificadores de propriedade reservada

Os identificadores de propriedade reservada não podem ser usados como ID (identificadores de propriedade). Qualquer ID (identificador de propriedade) 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 as IDs de propriedade reservada e a descrição para o que a ID da propriedade está reservada.

ID da propriedade reservada Descrição
0 Reservado para criar um dicionário de nomes de exibição do conjunto de propriedades opcional. Isso permite que os usuários do conjunto de propriedades anexem o significado às propriedades, além daquelas fornecidas pelo indicador de tipo.
1 Reservado como um indicador da página de código (Windows) ou Script (Macintosh) a ser usado 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 Macintosh.
0x80000000 Reservado como uma indicação da localidade para a qual o conjunto de propriedades é gravado.
A localidade padrão de 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 que contém o valor VT_UI4 seguido por um DWORD que indica o comportamento do conjunto de propriedades.
Atualmente, o único bit nesse valor definido é o bit de ordem baixa (0x1). Se esse bit estiver definido, ele indicará que os nomes do conjunto de propriedades, indicados pela ID da 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 que não diferenciam maiúsculas de minúsculas.
0xFFFFFFFF Reservado para a conveniência da programação. Ele nunca deve aparecer em um conjunto de propriedades serializado.

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 da propriedade 0x80000000, ela deverá permitir que essa propriedade seja lida, mas não gravada ou excluída. Essa implementação deve permitir que uma propriedade no intervalo 0xC0000000 0xFFFFFFFE seja lida, gravada ou excluída. A ID da propriedade 0xFFFFFFFF é um valor reservado e nunca deve aparecer em um conjunto de propriedades serializado.

Localidade do Conjunto de Propriedades

Os aplicativos podem optar por dar suporte à localidade ou usar o comportamento padrão. É recomendável que os aplicativos permitam que os usuários especifiquem uma localidade em funcionamento. 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 a interface IPropertySetStorage for usada para criar um conjunto de propriedades, a localidade padrão do usuário será gravada automaticamente 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 indicador de localidade é do tipo VT_U14 e, portanto, consiste em um DWORD que contém VT_U14, seguido por um DWORD que contém o Identificador de Localidade (LCID), conforme definido na API 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 cadeia de caracteres no conjunto, ele deve examinar o indicador da 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 da página de código não estiver presente, a página de código predominante no computador do leitor deverá ser assumida.

Observação

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

Os valores possíveis para a página de código são fornecidos na API win32 (para obter mais informações, consulte a função GetACP ) e Dentro do Volume VI do Macintosh, 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).

É recomendável que a página de código Unicode seja usada quando possível e use VT_LPWSTR em vez de VT_LPSTR para evitar conversões Multibyte <–> 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 todo o mundo. Na página de código Unicode ou não Unicode, lembre-se de que a contagem no início de um VT_LPSTR ou VT_BSTR é uma contagem de bytes e não uma contagem de caracteres . Essa contagem de bytes inclui um ou dois bytes zero no final da cadeia de caracteres (o terminador NULL da cadeia de caracteres).

A ID da propriedade 1 é um tipo de 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.