GDI + общая ошибка сохранения растрового изображения, созданного из памяти с использованием LockBits

Общая ошибка GDI + при сохранении растрового изображения, очевидно, является общей проблемой, согласно моим исследованиям SO и Интернета. Учитывая следующий упрощенный фрагмент:

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");

Это приводит к общей ошибке 0x80004005. Говорят, что обычной причиной этого являются блокировки компонентов, но я ничего не вижу здесь. Я просто слепой? Путь, по которому я сохраняю, существует, конечно, создается только пустой файл bmp (0B).

Справочная информация: я получаю пиксельные данные из драйвера камеры, который я передаю в .NET с помощью оболочки C ++ / CLI, поэтому приведенный выше объект Bitmap возвращается вызовом функции. Но так как этот маленький пример уже дает сбой, я думаю, что с адаптером все в порядке.

Любые предложения высоко ценятся!

Ответы на вопрос(1)

Ваш ответ на вопрос