Función UpdateResourceA (winbase.h)
Agrega, elimina o reemplaza un recurso en un archivo ejecutable portátil (PE). Hay algunas restricciones en las actualizaciones de recursos en los archivos que contienen datos de configuración de recursos (RC Config): archivos de recursos independientes del idioma (LN) y archivos de recursos específicos del idioma (.mui).
Sintaxis
BOOL UpdateResourceA(
[in] HANDLE hUpdate,
[in] LPCSTR lpType,
[in] LPCSTR lpName,
[in] WORD wLanguage,
[in, optional] LPVOID lpData,
[in] DWORD cb
);
Parámetros
[in] hUpdate
Tipo: HANDLE
Identificador de módulo devuelto por la función BeginUpdateResource , que hace referencia al archivo que se va a actualizar.
[in] lpType
Tipo: LPCTSTR
Tipo de recurso que se va a actualizar. Como alternativa, en lugar de un puntero, este parámetro puede ser MAKEINTRESOURCE(ID), donde ID es un valor entero que representa un tipo de recurso predefinido. Si el primer carácter de la cadena es un signo de libra (#), los caracteres restantes representan un número decimal que especifica el identificador entero del tipo de recurso. Por ejemplo, la cadena "#258" representa el identificador 258.
Para obtener una lista de los tipos de recursos predefinidos, consulte Tipos de recursos.
[in] lpName
Tipo: LPCTSTR
Nombre del recurso que se va a actualizar. Como alternativa, en lugar de un puntero, este parámetro puede ser MAKEINTRESOURCE(ID), donde ID es un identificador de recurso. Al crear un nuevo recurso, no use una cadena que comience con un carácter "#" para este parámetro.
[in] wLanguage
Tipo: WORD
Identificador de idioma del recurso que se va a actualizar. Para obtener una lista de los identificadores de idioma principal y los identificadores de sublanguaje que componen un identificador de idioma, consulte la macro MAKELANGID .
[in, optional] lpData
Tipo: LPVOID
Los datos de recursos que se van a insertar en el archivo indicado por hUpdate. Si el recurso es uno de los tipos predefinidos, los datos deben ser válidos y alineados correctamente. Tenga en cuenta que se trata de los datos binarios sin procesar que se almacenarán en el archivo indicado por hUpdate, no los datos proporcionados por LoadIcon, LoadString u otras funciones de carga específicas del recurso. Todos los datos que contienen cadenas o texto deben estar en formato Unicode. lpData no debe apuntar a datos ANSI.
Si lpData es NULL y cbData es 0, el recurso especificado se elimina del archivo indicado por hUpdate.
[in] cb
Tipo: DWORD
Tamaño, en bytes, de los datos del recurso en lpData.
Valor devuelto
Tipo: BOOL
Devuelve TRUE si es correcto o FALSE de lo contrario. Para obtener información de error extendida, llame a GetLastError.
Comentarios
Se recomienda que el archivo de recursos no se cargue antes de llamar a esta función. Sin embargo, si ese archivo ya está cargado, no provocará que se devuelva un error.
Una aplicación puede usar UpdateResource repetidamente para realizar cambios en los datos del recurso. Cada llamada a UpdateResource contribuye a una lista interna de adiciones, eliminaciones y reemplazos, pero no escribe realmente los datos en el archivo indicado por hUpdate. La aplicación debe usar la función EndUpdateResource para escribir los cambios acumulados en el archivo.
Esta función puede actualizar los recursos de los módulos que contienen código y recursos.
Antes de Windows 7: Si lpData es NULL y cbData es distinto de cero, no se elimina el recurso especificado y se produce una excepción.
A partir de Windows Vista: Como se indicó anteriormente, hay restricciones en las actualizaciones de recursos en los archivos que contienen datos de configuración rc: archivos LN y archivos .mui. Las restricciones son las siguientes:
Acción | Archivo LN | Archivo .mui |
---|---|---|
1. Agregue un nuevo tipo que no exista en los archivos LN o .mui. | Agregue el tipo en el archivo LN y trate como independiente del idioma (no localizable) y agregue un nuevo tipo o elemento en los datos de configuración de RC. | Las únicas adiciones permitidas son los siguientes tipos: versión del archivo, datos de configuración rc, manifiesto XML de ensamblado en paralelo. |
2. Agregue un nuevo elemento de recurso a un tipo existente. | Usa los datos de configuración de RC para comprobar si el tipo existe en los archivos .mui asociados a este archivo LN. Si el tipo no existe en los archivos .mui, agregue el elemento y trate el nuevo elemento como no localizable. Si el tipo existe en los archivos .mui, no se permite agregar. | Solo se pueden agregar elementos de los siguientes tipos: versión del archivo, datos de configuración rc, manifiesto XML de ensamblado en paralelo. |
3. Actualice un elemento de recurso. | Usa los datos de configuración de RC para comprobar si el tipo existe en los archivos .mui asociados con el archivo LN. Si el tipo no existe en los archivos .mui, esta actualización del elemento de recurso se permite en el archivo LN. De lo contrario, si el tipo existe en los archivos .mui asociados a este archivo LN, no se permite esta actualización. | Las únicas actualizaciones permitidas son elementos de los siguientes tipos: versión del archivo, datos de configuración rc, manifiesto XML de ensamblado en paralelo. |
4. Agregar un tipo o elemento para un nuevo idioma. | No permitido. | No permitido. |
5. Quite un tipo o elemento existente. | Funciona de forma similar al caso 3. Usa los datos de configuración de RC para comprobar si el tipo existe en los archivos .mui asociados con el archivo LN. Si no es así, se permite la eliminación del tipo o elemento del archivo LN. De lo contrario, si el tipo o elemento existe en los archivos .mui asociados a este archivo LN, no se permite la eliminación. | Los únicos tipos que se pueden quitar son: versión del archivo, datos de configuración rc, manifiesto XML de ensamblado en paralelo; además, solo se pueden quitar elementos de estos tipos. |
6. Agregue, elimine o actualice un tipo no incluido en los datos de configuración de RC (como versión, manifiesto XML de ensamblado en paralelo o datos de configuración rc). | Permitido. | Permitido. |
7. Otra actualización de datos no localizables, como TYPELIB, reginst, etc. | Actualice el tipo o el elemento del archivo LN, trate como no localizable y agregue un nuevo tipo o elemento en los datos de configuración de RC. | No aplicable. |
8. Agregar datos de configuración de RC. | Se puede hacer, pero no se comprueba la integridad de los datos de configuración de RC. | Se puede hacer, pero no se comprueba la integridad de los datos de configuración de RC. |
Ejemplos
Para obtener un ejemplo, consulte Actualización de recursos.
Nota
El encabezado winbase.h define UpdateResource como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.
Requisitos
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | winbase.h (incluya Windows.h) |
Library | Kernel32.lib |
Archivo DLL | Kernel32.dll |
Vea también
Conceptual
Otros recursos
Referencia