MemoryMappedFile クラス

定義

メモリ マップト ファイルを表します。

public ref class MemoryMappedFile : IDisposable
public class MemoryMappedFile : IDisposable
type MemoryMappedFile = class
    interface IDisposable
Public Class MemoryMappedFile
Implements IDisposable
継承
MemoryMappedFile
実装

次の例では、きわめて大きなファイルの一部のメモリ マップト ビューを作成し、その一部分を操作します。

using System;
using System.IO;
using System.IO.MemoryMappedFiles;
using System.Runtime.InteropServices;

class Program
{
    static void Main(string[] args)
    {
        long offset = 0x10000000; // 256 megabytes
        long length = 0x20000000; // 512 megabytes

        // Create the memory-mapped file.
        using (var mmf = MemoryMappedFile.CreateFromFile(@"c:\ExtremelyLargeImage.data", FileMode.Open,"ImgA"))
        {
            // Create a random access view, from the 256th megabyte (the offset)
            // to the 768th megabyte (the offset plus length).
            using (var accessor = mmf.CreateViewAccessor(offset, length))
            {
                int colorSize = Marshal.SizeOf(typeof(MyColor));
                MyColor color;

                // Make changes to the view.
                for (long i = 0; i < length; i += colorSize)
                {
                    accessor.Read(i, out color);
                    color.Brighten(10);
                    accessor.Write(i, ref color);
                }
            }
        }
    }
}

public struct MyColor
{
    public short Red;
    public short Green;
    public short Blue;
    public short Alpha;

    // Make the view brighter.
    public void Brighten(short value)
    {
        Red = (short)Math.Min(short.MaxValue, (int)Red + value);
        Green = (short)Math.Min(short.MaxValue, (int)Green + value);
        Blue = (short)Math.Min(short.MaxValue, (int)Blue + value);
        Alpha = (short)Math.Min(short.MaxValue, (int)Alpha + value);
    }
}
Imports System.IO
Imports System.IO.MemoryMappedFiles
Imports System.Runtime.InteropServices

Class Program

    Sub Main()
        Dim offset As Long = &H10000000 ' 256 megabytes
        Dim length As Long = &H20000000 ' 512 megabytes

        ' Create the memory-mapped file.
        Using mmf = MemoryMappedFile.CreateFromFile("c:\ExtremelyLargeImage.data", FileMode.Open, "ImgA")
            ' Create a random access view, from the 256th megabyte (the offset)
            ' to the 768th megabyte (the offset plus length).
            Using accessor = mmf.CreateViewAccessor(offset, length)
                Dim colorSize As Integer = Marshal.SizeOf(GetType(MyColor))
                Dim color As MyColor
                Dim i As Long = 0

                ' Make changes to the view.
                Do While (i < length)
                    accessor.Read(i, color)
                    color.Brighten(10)
                    accessor.Write(i, color)
                    i += colorSize
                Loop
            End Using
        End Using
    End Sub
End Class

Public Structure MyColor
    Public Red As Short
    Public Green As Short
    Public Blue As Short
    Public Alpha As Short

    ' Make the view brighter.
    Public Sub Brighten(ByVal value As Short)
        Red = CType(Math.Min(Short.MaxValue, (CType(Red, Integer) + value)), Short)
        Green = CType(Math.Min(Short.MaxValue, (CType(Green, Integer) + value)), Short)
        Blue = CType(Math.Min(Short.MaxValue, (CType(Blue, Integer) + value)), Short)
        Alpha = CType(Math.Min(Short.MaxValue, (CType(Alpha, Integer) + value)), Short)
    End Sub
End Structure

注釈

メモリ マップファイルは、ファイルの内容をアプリケーションの論理アドレス空間にマップします。 メモリ マップファイルを使用すると、プログラマは非常に大きなファイルを操作できます。メモリは同時に管理でき、シークを必要とせずにファイルに完全にランダムにアクセスできるためです。 メモリ マップファイルは、複数のプロセス間で共有することもできます。

メソッドは CreateFromFile 、指定したパスまたは FileStream ディスク上の既存のファイルの からメモリ マップファイルを作成します。 ファイルがマップ解除されると、変更は自動的にディスクに反映されます。

メソッドは CreateNew 、ディスク上の既存のファイルにマップされていないメモリ マップド ファイルを作成します。これは、プロセス間通信 (IPC) 用の共有メモリを作成するのに適しています。

メモリ マップファイルは、メモリマップファイルを他のプロセスと共有できるようにする省略可能な名前に関連付けることができます。

メモリ マップされたファイルの複数のビュー (ファイルの一部のビューを含む) を作成できます。 ファイルの同じ部分を複数のアドレスにマップして、同時実行メモリを作成できます。 2 つのビューが同時実行されるには、それらのビューを同じメモリ マップト ファイルから作成する必要があります。 同じファイルの 2 つのファイル マッピングを 2 つのビューで作成しても、コンカレンシーは提供されません。

プロパティ

SafeMemoryMappedFileHandle

メモリ マップト ファイルのファイル ハンドルを取得します。

メソッド

CreateFromFile(FileStream, String, Int64, MemoryMappedFileAccess, HandleInheritability, Boolean)

既存のファイルから、アクセス モード、名前、継承性、および容量が指定されたメモリ マップト ファイルを作成します。

CreateFromFile(FileStream, String, Int64, MemoryMappedFileAccess, MemoryMappedFileSecurity, HandleInheritability, Boolean)

ディスク上のファイルから、名前、容量、アクセスの種類、セキュリティ アクセス許可、継承性、および破棄要件が指定されたメモリ マップト ファイルを作成します。

CreateFromFile(SafeFileHandle, String, Int64, MemoryMappedFileAccess, HandleInheritability, Boolean)

と指定したアクセス モード、名前、継承可能性、および容量を使用して SafeFileHandle 、既存のファイルからメモリ マップファイルを作成します。

CreateFromFile(String)

ディスク上のファイルからメモリ マップト ファイルを作成します。

CreateFromFile(String, FileMode)

ディスク上のファイルから、アクセス モードが指定されたメモリ マップト ファイルを作成します。

CreateFromFile(String, FileMode, String)

ディスク上のファイルから、アクセス モードと名前が指定されたメモリ マップト ファイルを作成します。

CreateFromFile(String, FileMode, String, Int64)

ディスク上のファイルから、アクセス モード、名前、および容量が指定されたメモリ マップト ファイルを作成します。

CreateFromFile(String, FileMode, String, Int64, MemoryMappedFileAccess)

ディスク上のファイルから、アクセス モード、名前、容量、およびアクセスの種類が指定されたメモリ マップト ファイルを作成します。

CreateNew(String, Int64)

容量が指定されたメモリ マップト ファイルをシステム メモリ内で作成します。

CreateNew(String, Int64, MemoryMappedFileAccess)

容量およびアクセスの種類が指定されたメモリ マップト ファイルをシステム メモリ内で作成します。

CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability)

名前、容量、アクセスの種類、メモリ割り当てオプション、および継承性が指定されたメモリ マップト ファイルを作成します。

CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability)

容量、アクセスの種類、メモリの割り当て、セキュリティ アクセス許可、および継承性が指定されたメモリ マップト ファイルをシステム メモリ内で作成します。

CreateOrOpen(String, Int64)

名前と容量が指定されたメモリ マップト ファイルをシステム メモリ内で作成するか、開きます。

CreateOrOpen(String, Int64, MemoryMappedFileAccess)

名前、容量、アクセスの種類が指定されたメモリ マップト ファイルをシステム メモリ内で作成するか、開きます。

CreateOrOpen(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability)

新しい空のメモリ マップト ファイルを作成するか、同じ名前のファイルが存在する場合は既存のメモリ マップト ファイルを開きます。 既存のファイルを開く場合、容量、オプション、およびメモリ引数は無視されます。

CreateOrOpen(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability)

名前、容量、アクセスの種類、メモリの割り当て、セキュリティ アクセス許可、継承性が指定されたメモリ マップト ファイルをシステム メモリ内で作成するか、開きます。

CreateViewAccessor()

メモリ マップト ファイルのビューに対応する MemoryMappedViewAccessor を作成します。

CreateViewAccessor(Int64, Int64)

メモリ マップト ファイルのビューに対応する、オフセットとサイズが指定された MemoryMappedViewAccessor を作成します。

CreateViewAccessor(Int64, Int64, MemoryMappedFileAccess)

メモリ マップト ファイルのビューに対応するオフセット、サイズ、およびアクセス制限が指定された MemoryMappedViewAccessor を作成します。

CreateViewStream()

メモリ マップト ファイルのビューに対応するストリームを作成します。

CreateViewStream(Int64, Int64)

メモリ マップト ファイルのビューに対応する、オフセットとサイズが指定されたストリームを作成します。

CreateViewStream(Int64, Int64, MemoryMappedFileAccess)

メモリ マップト ファイルのビューに対応するオフセット、サイズ、およびアクセスの種類が指定されたストリームを作成します。

Dispose()

MemoryMappedFile によって使用されているすべてのリソースを解放します。

Dispose(Boolean)

MemoryMappedFile によって使用されているアンマネージド リソースを解放し、オプションでマネージド リソースも解放します。

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetAccessControl()

メモリ マップト ファイル リソースへのアクセス制御を取得します。

GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
OpenExisting(String)

システム メモリ内で名前が指定されたメモリ マップト ファイルを開きます。

OpenExisting(String, MemoryMappedFileRights)

システム メモリ内で名前およびアクセス権が指定されたメモリ マップト ファイルを開きます。

OpenExisting(String, MemoryMappedFileRights, HandleInheritability)

システム メモリ内で名前、アクセス権、および継承性が指定されたメモリ マップト ファイルを開きます。

SetAccessControl(MemoryMappedFileSecurity)

メモリ マップト ファイル リソースへのアクセス制御を設定します。

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

適用対象

こちらもご覧ください