修正: Visual C++ 2010 アプリケーションを使用して、4 GB 以上のファイルを開いてデータを追加または書き込むことができない

適用先
Visual Studio Professional 2010 Visual Studio Ultimate 2010

現象

たとえば次のようなシナリオを考えてみます。

  • Microsoft Visual C++ 2010 でアプリケーションを作成します。
  • アプリケーションで fopen() 関数を使用してファイルを開き、関数は r+、a、または a+ のアクセスモードを使用します。
  • アプリケーションを実行すると、4 GB 以上のファイルが開かれます。

このシナリオでは、ファイルが開かないか、次のエラーが返されます。

注

EINVAL (無効な引数)

原因

この問題は、fopen() 関数が追加用にファイルを開いた後にファイルの末尾を検索する方法が原因で発生します。 fopen() 関数は、内部で _lseek() 関数を使用してこのアクションを実行します。 ただし、_lseek() 関数では 4 GB 以上のファイルを処理できません。

解決策

この修正プログラムは、関数の fopen() ファミリーの動作を変更します。 この修正プログラムを適用すると、fopen() 関数は、エラーを返さずに 4 GB の制限を超えてシークできる関数を内部で使用します。 具体的には、fopen() 関数は _lseek() 関数の代わりに _lseeki64() 関数を使用します。

修正プログラムの情報

サポートされている修正プログラムが Microsoft から提供されています。 ただし、この記事で説明されている問題のみを修正することを目的としています。 この特定の問題が発生しているシステムにのみ適用してください。

この問題を解決するには、Microsoft Customer Support Services に連絡して修正プログラムを入手してください。 Microsoft Customer Support Services の電話番号一覧およびサポート料金については、次のマイクロソフト Web サイトを参照してください。

http://support.microsoft.com/contactus/?ws=support注: Microsoft サポート担当者が、特定の更新プログラムを適用することにより問題が解決されると判断した場合、まれに通常サポート依頼にかかる料金が免除されることがあります。 ただし、特定の更新プログラムの対象とならない追加の質問および問題については、通常のサポート料金が適用されます。

前提条件

この修正プログラムを適用するには、Microsoft Visual Studio 2010 Service Pack 1 (SP1) がインストールされている必要があります。

再起動の必要性

影響を受けるファイルが使用されている場合は、この修正プログラムのインストール後にコンピューターの再起動が必要になることがあります。

修正プログラムの置き換えに関する情報

この修正プログラムを適用しても、以前にリリースされた修正プログラムが置き換えられることはありません。

ファイル情報

                
 このグローバル バージョンのファイル属性 (または、これより新しいファイル属性) は次表のとおりです。 これらのファイルの日付と時刻は世界協定時 (UTC) で記載されています。 ファイル情報に表示される時刻は、ローカル時刻に変換されています。 UTC とローカル時刻との時差を確認するには、[コントロール パネル] の [日付と時刻] の [タイム ゾーン] タブを使用してください。

サポートされているすべてのバージョンの Microsoft Visual Studio 2010 SP1

ファイル名 ファイルのバージョン ファイル サイズ 日付 時刻 プラットフォーム
Mfcm100.dll 10.0.40219.362 82,696 2011 年 11 月 15 日 22:32 x86
Mfcm100d.dll 10.0.40219.362 104,720 2011 年 11 月 16 日 00:29 x86
Mfcm100u.dll 10.0.40219.362 82,704 2011 年 11 月 15 日 22:32 x86
Mfcm100ud.dll 10.0.40219.362 106,256 2011 年 11 月 16 日 00:29 x86
Mfcm100.dll 10.0.40219.362 93,960 2011 年 11 月 15 日 21:54 x64
Mfcm100d.dll 10.0.40219.362 120,592 2011 年 11 月 15 日 23:56 x64
Mfcm100u.dll 10.0.40219.362 93,968 2011 年 11 月 15 日 21:54 x64
Mfcm100ud.dll 10.0.40219.362 122,128 2011 年 11 月 15 日 23:56 x64
Mfcmifc80.dll 10.0.40219.362 14,096 2011 年 11 月 16 日 21:26 x86

              

追加情報

Microsoft Visual C++ 2010 Service Pack 1 (SP1) 再頒布可能パッケージに適用される別の修正プログラム パッケージの詳細については、以下の「サポート技術情報」 (Microsoft サポート技術情報) をクリックしてください。

2606060 修正: Visual C++ 2010 再頒布可能パッケージを使用するアプリケーションを使用して、4 GB 以上のファイルを開いて追加またはデータを書き込むことができない

fopen() 関数および _wfopen() 関数の詳細については、次の MSDN Web サイトを参照してください。

fopen() 関数と _wfopen() 関数に関する一般情報
      

状態

Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。