РІШЕННЯ. Не вдається відкрити файл розміром принаймні 4 ГБ, щоб додати або записати дані, використовуючи програму Visual C++ 2010

Застосовується до
Visual Studio Professional 2010 Visual Studio Ultimate 2010

Ознаки

Нижче описано такий сценарій.

  • Програма створюється у версії Microsoft Visual C++ 2010.
  • Ви використовуєте функцію fopen() у програмі для відкриття файлу, і функція використовує режим доступу r+, a або a+.
  • Після запуску програми програманамагається відкрити файл, розмір якого дорівнює або перевищує 4 гігабайти (ГБ).

У цьому випадку файл не відкривається або повертається така помилка:

Примітка.

EINVAL (неприпустимий аргумент)

Причина

Ця проблема виникає через спосіб, у який функція fopen() шукає кінці файлів після відкриття файлів для додавання. Функція fopen() внутрішньо використовує функцію _lseek() для виконання цієї дії. Проте функція _lseek() не може обробляти файли, розмір яких дорівнює або перевищує 4 ГБ.

Спосіб усунення проблеми

Це виправлення змінює поведінку сімейства функцій fopen(). Після застосування цього виправлення функція fopen() внутрішньо використовує функцію, яка може шукати за межі 4 ГБ, не повертаючи помилку. Зокрема, функція fopen() використовує функцію _lseeki64() замість функції _lseek().

Відомості про виправлення

Підтримуване поточне виправлення тепер можна отримати від корпорації Майкрософт. Однак він покликаний виправити лише ту проблему, про яку йдеться в цій статті. Застосовуйте його лише до систем, які зіткнулися з цією конкретною проблемою.

Щоб вирішити цю проблему, зверніться до служби підтримки клієнтів корпорації Майкрософт, щоб отримати виправлення. Повний перелік номерів телефонів служб підтримки клієнтів корпорації Майкрософт та інформацію про витрати на підтримку див. на веб-сайті корпорації Майкрософт:

http://support.microsoft.com/contactus/?ws=support Примітка. В окремих випадках, якщо фахівець служби підтримки Майкрософт визначить, що для усунення ускладнення потрібне спеціальне оновлення, оплату за звернення до служби технічної підтримки може бути скасовано. За додаткові послуги технічної підтримки, не пов'язані з цим оновленням, плата стягується на загальних засадах.

Попередні вимоги

Щоб застосувати це виправлення, на комп'ютері має бути інстальовано пакет оновлень 1 (SP1) для Microsoft Visual Studio 2010.

Необхідність перезавантаження

Якщо використовуються відповідні файли, можливо, знадобиться перезавантажити комп'ютер після інсталяції цього виправлення.

Відомості про заміну поточних виправлень

Це виправлення не замінює раніше випущене.

Відомості про файл

                
 У глобальній версії цієї програми використовуються атрибути файлів (або пізніші атрибути файлів), перелічені в таблиці нижче. Дати та час для цих файлів зазначені за всесвітнім координованим часом (UTC). Коли ви переглядаєте відомості про файл, вони перетворюються на місцевий час. Щоб подивитися різницю між UTC і місцевим часом, скористайтеся вкладкою "Часовий пояс" в елементі "Дата й час" в Панель керування.

Для всіх підтримуваних версій Microsoft Visual Studio 2010 із пакетом оновлень 1 (SP1)

Ім’я файлу Версія файлу Розмір файлу Дата Час Платформа
Mfcm100.dll 10.0.40219.362 82,696 15 листопада 2011 р. 22:32 x86
Mfcm100d.dll 10.0.40219.362 104,720 16 листопада 2011 р. 00:29 x86
Mfcm100u.dll 10.0.40219.362 82,704 15 листопада 2011 р. 22:32 x86
Mfcm100ud.dll 10.0.40219.362 106,256 16 листопада 2011 р. 00:29 x86
Mfcm100.dll 10.0.40219.362 93,960 15 листопада 2011 р. 21:54 x64
Mfcm100d.dll 10.0.40219.362 120,592 15 листопада 2011 р. 23:56 x64
Mfcm100u.dll 10.0.40219.362 93,968 15 листопада 2011 р. 21:54 x64
Mfcm100ud.dll 10.0.40219.362 122,128 15 листопада 2011 р. 23:56 x64
Mfcmifc80.dll 10.0.40219.362 14,096 16 листопада 2011 р. 21:26 x86

              

Додаткові відомості

Щоб отримати додаткові відомості про інший пакет виправлень, який застосовується до розповсюджуваного пакета Microsoft Visual C++ 2010 із пакетом оновлень 1 (SP1), клацніть цей номер статті, щоб переглянути її в базі знань Microsoft:

2606060 РІШЕННЯ: У програмі, яка використовує розповсюджуваний пакет Visual C++ 2010, не можна відкрити файл розміром принаймні 4 ГБ, щоб додати або записати дані

Для отримання додаткових відомостей про функції fopen() і _wfopen() відвідайте веб-сайт MSDN:

Загальні відомості про функції fopen() та _wfopen()
      

Стан

Корпорація Microsoft підтвердила, що це одна з проблем з продуктами Microsoft, перелічених у розділі "Застосовується до".