Как обойти ограничение длины Marshal.Copy (32 бита)?

Я пытаюсь перемещать данные между управляемым (C #) и неуправляемым (C ++) Win32) код. Я могу использовать Marshal.Copy , и он отлично работает, пока наборы данных не станут больше> 2 ГБ, поскольку Marshal.Copy имеет 32-битное целое число со знаком (2 ГБ) для длины.

Есть идеи, как это обойти? В настоящее время я использую AllocHGlobal (IntPtr) на управляемой стороне и .ToPointer () на неуправляемой стороне. Если я не могу использовать Marshal.Copy для перемещения больших объемов данных (> 2 ГБ) вперед / назад, что я могу использовать?

10
задан Jack Thefullname 1 February 2012 в 22:15
поделиться