Identificadores de propiedad reservada

Los identificadores de propiedad reservada no se pueden usar como identificadores de propiedad (ID). Cualquier identificador de propiedad (ID) se puede usar excepto 0, 1 y cualquier valor mayor o igual que, 0x80000000. Estos valores de identificador de propiedad están reservados para su uso por parte de las aplicaciones.

En la tabla siguiente se enumeran los identificadores de propiedad reservada y la descripción de para qué está reservado el identificador de propiedad.

Identificador de propiedad reservada Descripción
0 Reservado para crear un diccionario de nombres para mostrar del conjunto de propiedades opcional. Esto permite a los usuarios establecer propiedades para adjuntar significado a las propiedades, más allá de las proporcionadas por el indicador de tipo.
1 Reservado como indicador de la página de códigos (Windows) o Script (Macintosh) que se usará al interpretar las cadenas del conjunto de propiedades.
Todos los valores de cadena del conjunto de propiedades deben almacenarse con la misma página de códigos. El valor del sistema operativo de origen en el encabezado del conjunto de propiedades (PROPERTYSETHEADER::d wOSVer) determina si el indicador de página de códigos corresponde a una página de códigos de Windows o a un script de Macintosh.
0x80000000 Reservado como indicación de la configuración regional para la que se escribe el conjunto de propiedades.
La configuración regional predeterminada para un conjunto de propiedades es la configuración regional predeterminada del sistema (LOCALE_SYSTEM_DEFAULT). Para obtener más información sobre LOCALE_SYSTEM_DEFAULT, consulte las API de Win32. El valor predeterminado se usa en caso de que el indicador de configuración regional no exista en el conjunto de propiedades.
0x80000003 Reservado como indicador de los comportamientos del conjunto de propiedades. Este valor de identificador de propiedad es un VT_UI4 y comienza con un tipo de datos DWORD que contiene el valor VT_UI4 seguido de un DWORD que indica el comportamiento del conjunto de propiedades.
Actualmente, el único bit de este valor definido es el bit de orden bajo (0x1). Si se establece este bit, indica que los nombres del conjunto de propiedades, indicados por el identificador de propiedad 0, deben considerarse distingue mayúsculas de minúsculas. Si este bit no se establece o si la propiedad de comportamiento (id. 0x80000003) no existe, los nombres deben considerarse sin distinción entre mayúsculas y minúsculas.
0xffffffff Reservado para la comodidad de la programación. Nunca debería aparecer en un conjunto de propiedades serializado.

Los identificadores de propiedad con el conjunto de bits alto (es decir, los valores negativos) están reservados para uso futuro de Microsoft.

De las propiedades reservadas, las que tienen valores de identificador en el intervalo 0x80000000 a 0xBFFFFFFF se consideran de solo lectura mediante implementaciones que no entienden su significado. Por ejemplo, si una implementación no entiende el significado de la propiedad 0x80000000, debe permitir que esa propiedad se lea, pero no se escriba o elimine. Esta implementación debe permitir que una propiedad del intervalo 0xC0000000 0xFFFFFFFE leer, escribir o eliminar. El identificador de propiedad 0xFFFFFFFF es un valor reservado y nunca debe aparecer en un conjunto de propiedades serializado.

Configuración regional del conjunto de propiedades

Las aplicaciones pueden optar por admitir la configuración regional o usar el comportamiento predeterminado. Se recomienda que las aplicaciones permitan a los usuarios especificar una configuración regional en funcionamiento. Estas aplicaciones deben escribir el identificador de configuración regional especificado por el usuario en la propiedad . Las aplicaciones que usan la configuración regional predeterminada del usuario (LOCALE_USER_DEFAULT) deben escribir el identificador de configuración regional predeterminado del usuario en la propiedad . Para obtener más información sobre LOCALE_USER_DEFAULT, consulte la API de Win32.

Nota

Si la interfaz IPropertySetStorage se usa para crear un conjunto de propiedades, la configuración regional predeterminada del usuario se escribe automáticamente como indicador de configuración regional.

Las aplicaciones también deben controlar el caso de un objeto externo, que es aquel en el que la configuración regional no es la configuración regional de la aplicación, la configuración regional del usuario o la configuración regional del sistema.

La propiedad del indicador de configuración regional es de tipo VT_U14 y, por tanto, consta de un DWORD que contiene VT_U14, seguido de un DWORD que contiene el identificador de configuración regional (LCID), tal como se define en la API win32.

Indicador de página de códigos

Cuando una aplicación que no es el autor de un conjunto de propiedades cambia una propiedad de tipo cadena en el conjunto, debe examinar el indicador de página de códigos y realizar una de las siguientes acciones:

  • Escriba la cadena en el formato especificado por el indicador de página de códigos.
  • Reemplace y vuelva a escribir para cambiar la página de códigos.

Si una aplicación no puede reconocer este indicador, no debe modificar la propiedad . Todos los creadores de conjuntos de propiedades deben escribir un indicador de página de códigos; sin embargo, si el indicador de página de códigos no está presente, se debe asumir la página de códigos vigente en el equipo del lector.

Nota

Si la interfaz IPropertySetStorage se usa para crear un conjunto de propiedades, el indicador de página de códigos se escribe automáticamente.

Los valores posibles para la página de códigos se proporcionan en la API de Win32 (para obtener más información, vea la función GetACP ) y Dentro del volumen VI de Macintosh, páginas 14-111. (Es posible que estos recursos no estén disponibles en algunos idiomas y países). Por ejemplo, la página de códigos US ANSI se representa mediante 0x04E4 (1252 en decimal) mientras que la página de códigos de Unicode es 0x04B0 (1200 en decimal).

Se recomienda usar la página de códigos Unicode siempre que sea posible y usar VT_LPWSTR en lugar de VT_LPSTR para evitar conversiones multibyte <-> Unicode durante el almacenamiento y la recuperación. El uso de la misma página de códigos para todos los conjuntos de propiedades es la única manera de lograr conjuntos de propiedades interoperables en todo el mundo. En la página de códigos Unicode o no Unicode, tenga en cuenta que el recuento al principio de un VT_LPSTR o VT_BSTR es un recuento de bytes y no un recuento de caracteres . Este número de bytes incluye uno o dos bytes cero al final de la cadena (el terminador NULL de la cadena).

El identificador de propiedad 1 es un tipo de VT_I2 y comienza con un DWORD que contiene el valor VT_I2 seguido de un SHORT que indica la página de códigos.