+
+ // This converts a MemoryMappedFileAccess to a FileAccess. MemoryMappedViewStream and
+ // MemoryMappedViewAccessor subclass UnmanagedMemoryStream and UnmanagedMemoryAccessor, which both use
+ // FileAccess to determine whether they are writable and/or readable.
+ internal static FileAccess GetFileAccess (MemoryMappedFileAccess access) {
+
+ if (access == MemoryMappedFileAccess.Read) {
+ return FileAccess.Read;
+ }
+ if (access == MemoryMappedFileAccess.Write) {
+ return FileAccess.Write;
+ }
+ else if (access == MemoryMappedFileAccess.ReadWrite) {
+ return FileAccess.ReadWrite;
+ }
+ else if (access == MemoryMappedFileAccess.CopyOnWrite) {
+ return FileAccess.ReadWrite;
+ }
+ else if (access == MemoryMappedFileAccess.ReadExecute) {
+ return FileAccess.Read;
+ }
+ else if (access == MemoryMappedFileAccess.ReadWriteExecute) {
+ return FileAccess.ReadWrite;
+ }
+
+ // If we reached here, access was invalid.
+ throw new ArgumentOutOfRangeException ("access");
+ }