private static void Write(IntPtr value, int length, Stream stream)
{
if (length == 0)
return;
int bufferSize = Math.Min(length, 8192);
byte[] buffer = new byte[bufferSize];
int offset = 0;
IntPtr ptr = value;
while (offset < length)
{
int count = (offset + bufferSize > length) ? length - offset : bufferSize;
Marshal.Copy(ptr, buffer, 0, count);
stream.Write(buffer, 0, count);
offset += bufferSize;
ptr = new IntPtr(ptr.ToInt64() + count);
}
}