title: GDI+ generic error saving bitmap created from memory using LockBits
body: <p>The GDI+ generic error when saving a bitmap is obviously a common problem according to my research here on SO and the web. Given following simplified snippet:</p>
  
  <pre><code>byte[] bytes = new byte[2048 * 2048 * 2];
  
  for (int i = 0; i &lt; bytes.Length; i++)
  {
      // set random or constant pixel data, whatever you want
  }
  
  Bitmap bmp = new Bitmap(2048, 2048, PixelFormat.Format16bppGrayScale);
  BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, 2048, 2048), ImageLockMode.ReadWrite, bmp.PixelFormat);
  System.Runtime.InteropServices.Marshal.Copy(bytes, 0, bmpData.Scan0, 8388608);
  bmp.UnlockBits(bmpData);
  bmp.Save(@"name.bmp");
  </code></pre>
  
  <p>This results in the 0x80004005 generic error. The usual reason for this are said to be locks on components, but I do not see anything here I. Am I just blind? The path I am saving to exists, of course, only a empty bmp file is created (0B).</p>
  
  <p>Background: I am getting pixel data from a camera driver that I transfer to .NET using a C++/CLI wrapper, so the Bitmap object above is returned by a function call. But since this small example already fails, I guess that there is nothing wrong with the adapter.</p>
  
  <p>Any suggestions are highly appreciated!</p>