You cannot call the fwrite function to write to a buffer that is larger than 64 MB in Visual C++ 2005, in Visual C++ .NET 2003, or in Visual C++ .NET 2002 (899149)



The information in this article applies to:

  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET (2003)
  • Microsoft Visual C++ .NET (2002)

SYMPTOMS

Consider the following scenario. In Microsoft Visual C++ 2005, in Microsoft Visual C++ .NET 2003, or in Microsoft Visual C++ .NET 2002, you use the fopen function to open a file that is on a network drive. In the function call, you use the wb (write and binary) access type as the mode parameter. If you then call the fwrite function to write to a buffer that is larger than 67,076,095 bytes, the function call fails.

Note 67,076,095 bytes are approximately 64 megabytes (MB).

CAUSE

The problem occurs because of a limitation of the operating system.

WORKAROUND

To work around this problem, use one of the following methods:
  • When you open a file, use the w+b (reading and writing) access type as the mode parameter.
  • Use a smaller buffer. Then, call the fwrite function in a loop until you write the number of bytes that you want to the file.

REFERENCES

For more information about the fopen and fwrite functions, visit the following Microsoft Developer Network (MSDN) Web sites:

Modification Type:MajorLast Reviewed:1/12/2006
Keywords:kbopenfile kbcode kbtshoot kbprb KB899149 kbAudDeveloper