Sintomas
Considere o seguinte cenário:
-
Criar uma aplicação no Microsoft Visual C++ 2010.
-
Utilize a função de fopen() na aplicação para abrir um ficheiro e a função utiliza o modo de acesso r +ou a + .
-
Executar a aplicação e o applicationtries para abrir um ficheiro que é igual ou maior do que 4 gigabytes (GB).
Neste cenário, o ficheiro não abrir ou, é devolvido o seguinte erro:
EINVAL (argumento inválido)
Causa
Este problema ocorre devido à forma como a função fopen() destina-se às extremidades das ficheiros depois de abrir os ficheiros para acrescentar. A função fopen() utiliza internamente a função de _lseek() para efectuar esta acção. No entanto, a função _lseek() não consegue processar ficheiros que são iguais ou superiores a 4 GB.
Resolução
Esta correcção altera o comportamento da família fopen() de funções. Depois de aplicar esta correcção, a função fopen() utiliza internamente o uma função que pode pesquisar para além do limite de 4 GB sem devolver um erro. Especificamente, a função fopen() utiliza a função de _lseeki64() em vez da função de _lseek() .
Informações sobre correção
Agora tem uma correcção suportada disponível na Microsoft. Contudo, destina-se apenas a corrigir o problema descrito neste artigo. Aplique-a apenas em sistemas que tenham este problema específico.
Para resolver este problema, contacte o suporte técnico da Microsoft para obter a correcção. Para obter uma lista completa dos números de telefone do suporte técnico da Microsoft e informações sobre os custos de suporte, visite o seguinte Web site da Microsoft:
http://support.microsoft.com/contactus/?ws=supportNota Em casos especiais, os custos normalmente inerentes às chamadas de suporte poderão ser anulados se um técnico de suporte da Microsoft determinar que uma actualização específica resolverá o problema. Os custos de normais do suporte serão aplicados a questões de suporte adicionais e problemas que não se enquadrem na atualização específica em questão.
Pré-requisitos
Para aplicar esta correcção, tem de ter o Microsoft Visual Studio 2010 Service Pack 1 (SP1) instalado.
Requisito de reinício
Poderá ter de reiniciar o computador depois de instalar esta correcção se os ficheiros afectados que estão a ser utilizados.
Informações sobre substituição da correção
Esta correção não substitui uma correção disponibilizada anteriormente.
Informações de ficheiro
A versão global desta tem os atributos de ficheiro (ou atributos de ficheiro posteriores) listados na seguinte tabela. As datas e horas destes ficheiros são listadas na hora Universal Coordenada (UTC). Quando visualiza as informações do ficheiro, é convertido para a hora local. Para determinar a diferença entre a UTC e a hora local, utilize o separador Fuso horário no item data e hora no painel de controlo.
Para todas as versões suportadas do Microsoft Visual Studio 2010 SP1
Nome do ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
Data |
Hora |
Plataforma |
---|---|---|---|---|---|
Mfcm100.dll |
10.0.40219.362 |
82,696 |
15-Nov-2011 |
22:32 |
x86 |
Mfcm100d.dll |
10.0.40219.362 |
104,720 |
16-Nov-2011 |
00:29 |
x86 |
Mfcm100u.dll |
10.0.40219.362 |
82,704 |
15-Nov-2011 |
22:32 |
x86 |
Mfcm100ud.dll |
10.0.40219.362 |
106,256 |
16-Nov-2011 |
00:29 |
x86 |
Mfcm100.dll |
10.0.40219.362 |
93,960 |
15-Nov-2011 |
21:54 |
x64 |
Mfcm100d.dll |
10.0.40219.362 |
120,592 |
15-Nov-2011 |
23:56 |
x64 |
Mfcm100u.dll |
10.0.40219.362 |
93,968 |
15-Nov-2011 |
21:54 |
x64 |
Mfcm100ud.dll |
10.0.40219.362 |
122,128 |
15-Nov-2011 |
23:56 |
x64 |
Mfcmifc80.dll |
10.0.40219.362 |
14,096 |
16-Nov-2011 |
21:26 |
x86 |
Mais informações
Para mais informações sobre outro pacote de correcção que se aplica ao pacote redistribuível do Microsoft Visual C++ 2010 Service Pack 1 (SP1), clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
CORRIGIR 2606060 : não é possível abrir um ficheiro que é de, pelo menos, 4 GB para acrescentar ou escrever dados utilizando uma aplicação que utiliza o Visual C++ 2010 Redistributable Package
Para mais informações sobre as funções fopen() e _wfopen() , visite o seguinte Web site da MSDN:
Estado
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".