Вы можете использовать UnmanagedMemoryStream, например, так:
byte[] message = UnicodeEncoding.Unicode.GetBytes("Here is some data.");
IntPtr memIntPtr = Marshal.AllocHGlobal(message.Length);
byte* memBytePtr = (byte*) memIntPtr.ToPointer();
UnmanagedMemoryStream writeStream = new UnmanagedMemoryStream(memBytePtr, message.Length, message.Length, FileAccess.Write);
writeStream.Write(message, 0, message.Length);
writeStream.Close();
Обратный маршрут, примерно:
UnmanagedMemoryStream readStream = new UnmanagedMemoryStream(memBytePtr, message.Length, message.Length, FileAccess.Read);
byte[] outMessage = new byte[message.Length];
readStream.Read(outMessage, 0, message.Length);
readStream.Close();
// Convert back into string for this example
string converted = UnicodeEncoding.Unicode.GetString(outMessage);
Marshal.FreeHGlobal(memIntPtr);
Я уверен, что у MSDN будет больше ресурсов