GDI + ogólna bitmapa zapisująca błędy utworzona z pamięci za pomocą LockBits

Ogólny błąd GDI + podczas zapisywania mapy bitowej jest oczywiście powszechnym problemem według moich badań tutaj na temat SO i sieci. Biorąc pod uwagę następujący uproszczony fragment:

byte[] bytes = new byte[2048 * 2048 * 2];

for (int i = 0; i < 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");

Powoduje to błąd ogólny 0x80004005. Mówi się, że zwykle powodem tego są blokady elementów, ale nic tu nie widzę. Czy jestem po prostu ślepy? Ścieżka, którą zapisuję, istnieje, oczywiście, tworzony jest tylko pusty plik bmp (0B).

Tło: Otrzymuję dane pikselowe ze sterownika kamery, który przesyłam do .NET za pomocą opakowania C ++ / CLI, więc powyższy obiekt Bitmap jest zwracany przez wywołanie funkcji. Ale ponieważ ten mały przykład już się nie powiedzie, myślę, że z adapterem nie ma nic złego.

Wszelkie sugestie są bardzo mile widziane!

questionAnswers(1)

yourAnswerToTheQuestion