Função UpdateResourceW (winbase.h)
Adiciona, exclui ou substitui um recurso em um arquivo PE (executável portátil). Há algumas restrições às atualizações de recursos em arquivos que contêm dados de Configuração de Recursos (Configuração de RC): arquivos LN ( neutros em linguagem) e arquivos de recurso específicos do idioma (.mui).
Sintaxe
BOOL UpdateResourceW(
[in] HANDLE hUpdate,
[in] LPCWSTR lpType,
[in] LPCWSTR lpName,
[in] WORD wLanguage,
[in, optional] LPVOID lpData,
[in] DWORD cb
);
Parâmetros
[in] hUpdate
Tipo: HANDLE
Um identificador de módulo retornado pela função BeginUpdateResource, fazendo referência ao arquivo a ser atualizado.
[in] lpType
Tipo: LPCTSTR
O tipo de recurso a ser atualizado. Como alternativa, em vez de um ponteiro, esse parâmetro pode ser (ID) MAKEINTRESOURCE, em que a ID é um valor inteiro que representa um tipo de recurso predefinido. Se o primeiro caractere da cadeia de caracteres for um sinal de libra (#), os caracteres restantes representarão um número decimal que especifica o identificador inteiro do tipo de recurso. Por exemplo, a cadeia de caracteres "#258" representa o identificador 258.
Para obter uma lista de tipos de recursos predefinidos, consulte tipos de recursos.
[in] lpName
Tipo: LPCTSTR
O nome do recurso a ser atualizado. Como alternativa, em vez de um ponteiro, esse parâmetro pode ser ID () MAKEINTRESOURCE, em que a ID é uma ID de recurso. Ao criar um novo recurso, não use uma cadeia de caracteres que comece com um caractere '#' para esse parâmetro.
[in] wLanguage
Tipo: word
O identificador de idioma do recurso a ser atualizado. Para obter uma lista dos identificadores de idioma primários e identificadores de sublanguagem que compõem um identificador de idioma, consulte a macro MAKELANGID.
[in, optional] lpData
Tipo: LPVOID
Os dados de recurso a serem inseridos no arquivo indicado por hUpdate. Se o recurso for um dos tipos predefinidos, os dados deverão ser válidos e alinhados corretamente. Observe que esses são os dados binários brutos a serem armazenados no arquivo indicado por hUpdate, não os dados fornecidos por LoadIcon, LoadStringou outras funções de carga específicas do recurso. Todos os dados que contêm cadeias de caracteres ou texto devem estar no formato Unicode. lpData não deve apontar para dados ANSI.
Se lpData for NULL e cbData for 0, o recurso especificado será excluído do arquivo indicado por hUpdate.
[in] cb
Tipo: DWORD
O tamanho, em bytes, dos dados de recurso em lpData.
Valor de retorno
Tipo: BOOL
Retorna verdadeiro se tiver êxito ou false caso contrário. Para obter informações de erro estendidas, chame GetLastError.
Observações
É recomendável que o arquivo de recurso não seja carregado antes que essa função seja chamada. No entanto, se esse arquivo já estiver carregado, ele não fará com que um erro seja retornado.
Um aplicativo pode usar UpdateResource repetidamente para fazer alterações nos dados do recurso. Cada chamada para UpdateResource contribui para uma lista interna de adições, exclusões e substituições, mas não grava os dados no arquivo indicado por hUpdate. O aplicativo deve usar a função EndUpdateResource para gravar as alterações acumuladas no arquivo.
Essa função pode atualizar recursos em módulos que contêm código e recursos.
Anterior ao Windows 7: Se lpData for NULL e cbData não for zero, o recurso especificado NÃO será excluído e uma exceção será gerada.
Começando com o Windows Vista: Conforme observado acima, há restrições de atualizações de recursos em arquivos que contêm dados de configuração de RC: arquivos LN e arquivos .mui. As restrições são as seguintes:
Ação | Arquivo LN | Arquivo .mui |
---|---|---|
1. Adicione um novo tipo que não existe nos arquivos LN ou .mui. | Adicionar tipo no arquivo LN e tratar como neutro em linguagem (não localizável) e adicionar novo tipo ou item nos dados de configuração do RC | As únicas adições permitidas são os seguintes tipos: versão do arquivo, dados de configuração RC, manifesto XML do Assembly lado a lado. |
2. Adicionar um novo item de recurso a um tipo existente. | Usa os dados de configuração RC para verificar se o tipo existe nos arquivos .mui associados a esse arquivo LN. Se o tipo não existir nos arquivos .mui, adicione o item e trate o novo item como não localizável. Se o tipo existir nos arquivos .mui, a adição não será permitida. | Somente itens dos seguintes tipos podem ser adicionados: versão do arquivo, dados de configuração de RC, manifesto XML do Assembly lado a lado. |
3. Atualizar um item de recurso. | Usa os dados de configuração RC para verificar se o tipo existe nos arquivos .mui associados ao arquivo LN. Se o tipo não existir nos arquivos .mui, essa atualização do item de recurso será permitida no arquivo LN. Caso contrário, se o tipo existir nos arquivos .mui associados a esse arquivo LN, essa atualização não será permitida. | As únicas atualizações permitidas são itens dos seguintes tipos: versão do arquivo, dados de configuração de RC, manifesto XML do Assembly lado a lado. |
4. Adicionar um tipo/item para um novo idioma. | Não é permitido. | Não é permitido. |
5. Remova um tipo/item existente. | Funciona de forma semelhante ao caso 3. Usa os dados de configuração RC para verificar se o tipo existe nos arquivos .mui associados ao arquivo LN. Caso contrário, a remoção do tipo/item do arquivo LN é permitida. Caso contrário, se o tipo/item existir nos arquivos .mui associados a esse arquivo LN, a remoção não será permitida. | Os únicos tipos que podem ser removidos são: versão do arquivo, dados de configuração RC, manifesto XML do Assembly lado a lado; além disso, somente itens desses tipos podem ser removidos. |
6. Adicionar/excluir/atualizar um tipo não incluído nos dados de configuração RC (como versão, manifesto XML do Assembly lado a lado ou dados de configuração RC propriamente ditos). | Permitido. | Permitido. |
7. Outra atualização de dados não localizáveis, como TYPELIB, reginst e assim por diante. | Atualize o tipo ou item no arquivo LN, trate como não localizável e adicione um novo tipo ou item nos dados de configuração do RC. | Não aplicável. |
8. Adicionar dados de configuração de RC. | Pode ser feito, mas a integridade dos dados de configuração do RC não é verificada. | Pode ser feito, mas a integridade dos dados de configuração do RC não é verificada. |
Exemplos
Para obter um exemplo, consulte Atualizando recursos.
Nota
O cabeçalho winbase.h define UpdateResource como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows 2000 Professional [somente aplicativos da área de trabalho] |
servidor com suporte mínimo | Windows 2000 Server [somente aplicativos da área de trabalho] |
da Plataforma de Destino |
Windows |
cabeçalho | winbase.h (inclua Windows.h) |
biblioteca | Kernel32.lib |
de DLL |
Kernel32.dll |
Consulte também
Conceitual
loadicon
outros recursos
de referência de