MemoryMappedFile.CreateNew MemoryMappedFile.CreateNew MemoryMappedFile.CreateNew MemoryMappedFile.CreateNew Method

定義

システム メモリ内でメモリ マップト ファイルを作成します。Creates a memory-mapped file in system memory.

オーバーロード

CreateNew(String, Int64) CreateNew(String, Int64) CreateNew(String, Int64) CreateNew(String, Int64)

容量が指定されたメモリ マップト ファイルをシステム メモリ内で作成します。Creates a memory-mapped file that has the specified capacity in system memory.

CreateNew(String, Int64, MemoryMappedFileAccess) CreateNew(String, Int64, MemoryMappedFileAccess) CreateNew(String, Int64, MemoryMappedFileAccess) CreateNew(String, Int64, MemoryMappedFileAccess)

容量およびアクセスの種類が指定されたメモリ マップト ファイルをシステム メモリ内で作成します。Creates a memory-mapped file that has the specified capacity and access type in system memory.

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

名前、容量、アクセスの種類、メモリ割り当てオプション、継承性が指定されたメモリ マップト ファイルを作成します。Creates a memory-mapped file that has the specified name, capacity, access type, memory allocation options and inheritability.

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

容量、アクセスの種類、メモリの割り当て、セキュリティ アクセス許可、および継承性が指定されたメモリ マップト ファイルをシステム メモリ内で作成します。Creates a memory-mapped file that has the specified capacity, access type, memory allocation, security permissions, and inheritability in system memory.

CreateNew(String, Int64) CreateNew(String, Int64) CreateNew(String, Int64) CreateNew(String, Int64)

容量が指定されたメモリ マップト ファイルをシステム メモリ内で作成します。Creates a memory-mapped file that has the specified capacity in system memory.

public:
 static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateNew(System::String ^ mapName, long capacity);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateNew (string mapName, long capacity);
static member CreateNew : string * int64 -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateNew (mapName As String, capacity As Long) As MemoryMappedFile

パラメーター

mapName
String String String String

メモリ マップト ファイルに割り当てる名前。または、プロセス間で共有する意図のない MemoryMappedFilenullA name to assign to the memory-mapped file, or null for a MemoryMappedFile that you do not intend to share across processes.

capacity
Int64 Int64 Int64 Int64

メモリ マップト ファイルに割り当てる最大サイズ (バイト単位)。The maximum size, in bytes, to allocate to the memory-mapped file.

戻り値

名前および容量が指定されたメモリ マップト ファイル。A memory-mapped file that has the specified name and capacity.

例外

mapName が空の文字列です。mapName is an empty string.

capacity が 0 以下です。capacity is less than or equal to zero.

.NET Core のみ: 名前付きメモリ マップ ファイル (つまり、null ではない mapName) による CreateNew メソッドへの呼び出しは、Windows オペレーティング システムでのみサポートされています。.NET Core only: Calls to the CreateNew method with a named memory mapped file (that is, a non-null mapName) are supported on Windows operating systems only.

次の例は、メモリマップトファイルに値を書き込むBoolean 3 つの独立したプロセス (コンソールアプリケーション) で構成されています。The following example is composed of three separate processes (console applications) that write Boolean values to a memory-mapped file. 次の順序で処理が実行されます。The following sequence of actions occur:

  1. Process A は、メモリマップトファイルを作成し、値を書き込みます。Process A creates the memory-mapped file and writes a value to it.

  2. プロセス B は、メモリマップトファイルを開き、値を書き込みます。Process B opens the memory-mapped file and writes a value to it.

  3. プロセス C は、メモリマップトファイルを開き、値を書き込みます。Process C opens the memory-mapped file and writes a value to it.

  4. を処理して、メモリマップトファイルの値を読み取り、表示します。Process A reads and displays the values from the memory-mapped file.

  5. メモリマップトファイルの処理が完了すると、ガベージコレクションによってファイルがすぐに解放されます。After Process A is finished with the memory-mapped file, the file is immediately reclaimed by garbage collection.

この例を実行するには、次の手順に従います。To run this example, do the following:

  1. アプリケーションをコンパイルし、3つのコマンドウィンドウを開きます。Compile the applications and open three Command windows.

  2. 最初のコマンドウィンドウで、Process A を実行します。In the first Command window, run Process A.

  3. 2番目のコマンドウィンドウで、プロセス B を実行します。In the second Command window, run Process B.

  4. プロセス A に戻り、ENTER キーを押します。Return to Process A and press ENTER.

  5. 3番目のコマンドウィンドウで、プロセス C を実行します。In the third Command window, run Process C.

  6. プロセス A に戻り、ENTER キーを押します。Return to Process A and press ENTER.

プロセス A の出力は次のとおりです。The output of Process A is as follows:

Start Process B and press ENTER to continue.  
Start Process C and press ENTER to continue.  
Process A says: True  
Process B says: False  
Process C says: True  

プロセス AProcess A

using System;
using System.IO;
using System.IO.MemoryMappedFiles;
using System.Threading;

class Program
{
    // Process A:
    static void Main(string[] args)
    {
        using (MemoryMappedFile mmf = MemoryMappedFile.CreateNew("testmap", 10000))
        {
            bool mutexCreated;
            Mutex mutex = new Mutex(true, "testmapmutex", out mutexCreated);
            using (MemoryMappedViewStream stream = mmf.CreateViewStream())
            {
                BinaryWriter writer = new BinaryWriter(stream);
                writer.Write(1);
            }
            mutex.ReleaseMutex();

            Console.WriteLine("Start Process B and press ENTER to continue.");
            Console.ReadLine();

            Console.WriteLine("Start Process C and press ENTER to continue.");
            Console.ReadLine();

            mutex.WaitOne();
            using (MemoryMappedViewStream stream = mmf.CreateViewStream())
            {
                BinaryReader reader = new BinaryReader(stream);
                Console.WriteLine("Process A says: {0}", reader.ReadBoolean());
                Console.WriteLine("Process B says: {0}", reader.ReadBoolean());
                Console.WriteLine("Process C says: {0}", reader.ReadBoolean());
            }
            mutex.ReleaseMutex();
        }
    }
}
Imports System.IO
Imports System.IO.MemoryMappedFiles
Imports System.Threading

Module Module1

    ' Process A:
    Sub Main()
        Using mmf As MemoryMappedFile = MemoryMappedFile.CreateNew("testmap", 10000)
            Dim mutexCreated As Boolean
            Dim mTex As Mutex = New Mutex(True, "testmapmutex", mutexCreated)
            Using Stream As MemoryMappedViewStream = mmf.CreateViewStream()
                Dim writer As BinaryWriter = New BinaryWriter(Stream)
                writer.Write(1)
            End Using
            mTex.ReleaseMutex()
            Console.WriteLine("Start Process B and press ENTER to continue.")
            Console.ReadLine()

            Console.WriteLine("Start Process C and press ENTER to continue.")
            Console.ReadLine()

            mTex.WaitOne()
            Using Stream As MemoryMappedViewStream = mmf.CreateViewStream()
                Dim reader As BinaryReader = New BinaryReader(Stream)
                Console.WriteLine("Process A says: {0}", reader.ReadBoolean())
                Console.WriteLine("Process B says: {0}", reader.ReadBoolean())
                Console.WriteLine("Process C says: {0}", reader.ReadBoolean())
            End Using
            mTex.ReleaseMutex()

        End Using

    End Sub

End Module

プロセス BProcess B

using System;
using System.IO;
using System.IO.MemoryMappedFiles;
using System.Threading;

class Program
{
    // Process B:
    static void Main(string[] args)
    {
        try
        {
            using (MemoryMappedFile mmf = MemoryMappedFile.OpenExisting("testmap"))
            {

                Mutex mutex = Mutex.OpenExisting("testmapmutex");
                mutex.WaitOne();

                using (MemoryMappedViewStream stream = mmf.CreateViewStream(1, 0))
                {
                    BinaryWriter writer = new BinaryWriter(stream);
                    writer.Write(0);
                }
                mutex.ReleaseMutex();
            }
        }
        catch (FileNotFoundException)
        {
            Console.WriteLine("Memory-mapped file does not exist. Run Process A first.");
        }
    }
}
Imports System.IO
Imports System.IO.MemoryMappedFiles
Imports System.Threading

Module Module1
    ' Process B:
    Sub Main()
        Try
            Using mmf As MemoryMappedFile = MemoryMappedFile.OpenExisting("testmap")
                Dim mTex As Mutex = Mutex.OpenExisting("testmapmutex")
                mTex.WaitOne()
                Using Stream As MemoryMappedViewStream = mmf.CreateViewStream(1, 0)
                    Dim writer As BinaryWriter = New BinaryWriter(Stream)
                    writer.Write(0)
                End Using
                mTex.ReleaseMutex()
            End Using
        Catch noFile As FileNotFoundException
            Console.WriteLine("Memory-mapped file does not exist. Run Process A first." & vbCrLf & noFile.Message)
        End Try

    End Sub

End Module

プロセス CProcess C

using System;
using System.IO;
using System.IO.MemoryMappedFiles;
using System.Threading;

class Program
{
    // Process C:
    static void Main(string[] args)
    {
        try
        {
            using (MemoryMappedFile mmf = MemoryMappedFile.OpenExisting("testmap"))
            {

                Mutex mutex = Mutex.OpenExisting("testmapmutex");
                mutex.WaitOne();

                using (MemoryMappedViewStream stream = mmf.CreateViewStream(2, 0))
                {
                    BinaryWriter writer = new BinaryWriter(stream);
                    writer.Write(1);
                }
                mutex.ReleaseMutex();
            }
        }
        catch (FileNotFoundException)
        {
            Console.WriteLine("Memory-mapped file does not exist. Run Process A first, then B.");
        }
    }
}
Imports System.IO
Imports System.IO.MemoryMappedFiles
Imports System.Threading

Module Module1
    ' Process C:
    Sub Main()
        Try
            Using mmf As MemoryMappedFile = MemoryMappedFile.OpenExisting("testmap")
                Dim mTex As Mutex = Mutex.OpenExisting("testmapmutex")
                mTex.WaitOne()
                Using Stream As MemoryMappedViewStream = mmf.CreateViewStream(2, 0)
                    Dim writer As BinaryWriter = New BinaryWriter(Stream)
                    writer.Write(1)
                End Using
                mTex.ReleaseMutex()
            End Using
        Catch noFile As FileNotFoundException
            Console.WriteLine("Memory-mapped file does not exist. Run Process A first, then B." & vbCrLf & noFile.Message)
        End Try

    End Sub

End Module

注釈

このメソッドを使用して、永続化されていない (ディスク上のファイルに関連付けられていない) メモリマップトファイルを作成します。このファイルは、プロセス間でデータを共有するために使用できます。Use this method to create a memory-mapped file that is not persisted (that is, not associated with a file on disk), which you can use to share data between processes.

こちらもご覧ください

CreateNew(String, Int64, MemoryMappedFileAccess) CreateNew(String, Int64, MemoryMappedFileAccess) CreateNew(String, Int64, MemoryMappedFileAccess) CreateNew(String, Int64, MemoryMappedFileAccess)

容量およびアクセスの種類が指定されたメモリ マップト ファイルをシステム メモリ内で作成します。Creates a memory-mapped file that has the specified capacity and access type in system memory.

public:
 static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateNew(System::String ^ mapName, long capacity, System::IO::MemoryMappedFiles::MemoryMappedFileAccess access);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateNew (string mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access);
static member CreateNew : string * int64 * System.IO.MemoryMappedFiles.MemoryMappedFileAccess -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateNew (mapName As String, capacity As Long, access As MemoryMappedFileAccess) As MemoryMappedFile

パラメーター

mapName
String String String String

メモリ マップト ファイルに割り当てる名前。または、プロセス間で共有する意図のない MemoryMappedFilenullA name to assign to the memory-mapped file, or null for a MemoryMappedFile that you do not intend to share across processes.

capacity
Int64 Int64 Int64 Int64

メモリ マップト ファイルに割り当てる最大サイズ (バイト単位)。The maximum size, in bytes, to allocate to the memory-mapped file.

access
MemoryMappedFileAccess MemoryMappedFileAccess MemoryMappedFileAccess MemoryMappedFileAccess

メモリ マップト ファイルに対して許可されたアクセス権の種類を指定する列挙値の 1 つ。One of the enumeration values that specifies the type of access allowed to the memory-mapped file. 既定値は、ReadWrite です。The default is ReadWrite.

戻り値

指定された特性を持つメモリ マップト ファイル。A memory-mapped file that has the specified characteristics.

例外

mapName が空の文字列です。mapName is an empty string.

または-or- accessWrite 列挙値で書き込み専用に設定されます。access is set to write-only with the Write enumeration value.

capacity が 0 以下です。capacity is less than or equal to zero.

または-or- access が有効な MemoryMappedFileAccess 列挙値ではありません。access is not a valid MemoryMappedFileAccess enumeration value.

.NET Core のみ: 名前付きメモリ マップ ファイル (つまり、null ではない mapName) による CreateNew メソッドへの呼び出しは、Windows オペレーティング システムでのみサポートされています。.NET Core only: Calls to the CreateNew method with a named memory mapped file (that is, a non-null mapName) are supported on Windows operating systems only.

注釈

このメソッドを使用して、永続化されていない (ディスク上のファイルに関連付けられていない) メモリマップトファイルを作成します。このファイルは、プロセス間でデータを共有するために使用できます。Use this method to create a memory-mapped file that is not persisted (that is, not associated with a file on disk), which you can use to share data between processes.

こちらもご覧ください

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

名前、容量、アクセスの種類、メモリ割り当てオプション、継承性が指定されたメモリ マップト ファイルを作成します。Creates a memory-mapped file that has the specified name, capacity, access type, memory allocation options and inheritability.

public:
 static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateNew(System::String ^ mapName, long capacity, System::IO::MemoryMappedFiles::MemoryMappedFileAccess access, System::IO::MemoryMappedFiles::MemoryMappedFileOptions options, System::IO::HandleInheritability inheritability);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateNew (string mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access, System.IO.MemoryMappedFiles.MemoryMappedFileOptions options, System.IO.HandleInheritability inheritability);
static member CreateNew : string * int64 * System.IO.MemoryMappedFiles.MemoryMappedFileAccess * System.IO.MemoryMappedFiles.MemoryMappedFileOptions * System.IO.HandleInheritability -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateNew (mapName As String, capacity As Long, access As MemoryMappedFileAccess, options As MemoryMappedFileOptions, inheritability As HandleInheritability) As MemoryMappedFile

パラメーター

mapName
String String String String

メモリ マップト ファイルに割り当てる名前。または、プロセス間で共有する意図のない MemoryMappedFilenullA name to assign to the memory-mapped file, or null for a MemoryMappedFile that you do not intend to share across processes.

capacity
Int64 Int64 Int64 Int64

メモリ マップト ファイルに割り当てる最大サイズ (バイト単位)。The maximum size, in bytes, to allocate to the memory-mapped file.

access
MemoryMappedFileAccess MemoryMappedFileAccess MemoryMappedFileAccess MemoryMappedFileAccess

メモリ マップト ファイルに対して許可されたアクセス権の種類を指定する列挙値の 1 つ。One of the enumeration values that specifies the type of access allowed to the memory-mapped file. 既定値は、ReadWrite です。The default is ReadWrite.

options
MemoryMappedFileOptions MemoryMappedFileOptions MemoryMappedFileOptions MemoryMappedFileOptions

メモリ マップト ファイルのメモリ割り当てオプションを指定する列挙値のビットごとの組み合わせ。A bitwise combination of enumeration values that specifies memory allocation options for the memory-mapped file.

inheritability
HandleInheritability HandleInheritability HandleInheritability HandleInheritability

メモリ マップト ファイルへのハンドルを子プロセスが継承できるかどうかを指定する値。A value that specifies whether a handle to the memory-mapped file can be inherited by a child process. 既定値は、None です。The default is None.

戻り値

指定された特性を持つメモリ マップト ファイル。A memory-mapped file that has the specified characteristics.

例外

mapName が空の文字列です。mapName is an empty string.

または-or- accessWrite 列挙値で書き込み専用に設定されます。access is set to write-only with the Write enumeration value.

capacity が 0 以下です。capacity is less than or equal to zero.

または-or- access が有効な MemoryMappedFileAccess 列挙値ではありません。access is not a valid MemoryMappedFileAccess enumeration value.

- または --or- inheritability は有効な HandleInheritability 値ではありません。inheritability is not a valid HandleInheritability value.

.NET Core のみ: 名前付きメモリ マップ ファイル (つまり、null ではない mapName) による CreateNew メソッドへの呼び出しは、Windows オペレーティング システムでのみサポートされています。.NET Core only: Calls to the CreateNew method with a named memory mapped file (that is, a non-null mapName) are supported on Windows operating systems only.

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

容量、アクセスの種類、メモリの割り当て、セキュリティ アクセス許可、および継承性が指定されたメモリ マップト ファイルをシステム メモリ内で作成します。Creates a memory-mapped file that has the specified capacity, access type, memory allocation, security permissions, and inheritability in system memory.

public:
 static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateNew(System::String ^ mapName, long capacity, System::IO::MemoryMappedFiles::MemoryMappedFileAccess access, System::IO::MemoryMappedFiles::MemoryMappedFileOptions options, System::IO::MemoryMappedFiles::MemoryMappedFileSecurity ^ memoryMappedFileSecurity, System::IO::HandleInheritability inheritability);
[System.Security.SecurityCritical]
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateNew (string mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access, System.IO.MemoryMappedFiles.MemoryMappedFileOptions options, System.IO.MemoryMappedFiles.MemoryMappedFileSecurity memoryMappedFileSecurity, System.IO.HandleInheritability inheritability);
static member CreateNew : string * int64 * System.IO.MemoryMappedFiles.MemoryMappedFileAccess * System.IO.MemoryMappedFiles.MemoryMappedFileOptions * System.IO.MemoryMappedFiles.MemoryMappedFileSecurity * System.IO.HandleInheritability -> System.IO.MemoryMappedFiles.MemoryMappedFile

パラメーター

mapName
String String String String

メモリ マップト ファイルに割り当てる名前。または、プロセス間で共有する意図のない MemoryMappedFilenullA name to assign to the memory-mapped file, or null for a MemoryMappedFile that you do not intend to share across processes.

capacity
Int64 Int64 Int64 Int64

メモリ マップト ファイルに割り当てる最大サイズ (バイト単位)。The maximum size, in bytes, to allocate to the memory-mapped file.

access
MemoryMappedFileAccess MemoryMappedFileAccess MemoryMappedFileAccess MemoryMappedFileAccess

メモリ マップト ファイルに対して許可されたアクセス権の種類を指定する列挙値の 1 つ。One of the enumeration values that specifies the type of access allowed to the memory-mapped file. 既定値は、ReadWrite です。The default is ReadWrite.

options
MemoryMappedFileOptions MemoryMappedFileOptions MemoryMappedFileOptions MemoryMappedFileOptions

メモリ マップト ファイルのメモリ割り当てオプションを指定する列挙値のビットごとの組み合わせ。A bitwise combination of enumeration values that specifies memory allocation options for the memory-mapped file.

memoryMappedFileSecurity
MemoryMappedFileSecurity MemoryMappedFileSecurity MemoryMappedFileSecurity MemoryMappedFileSecurity

メモリ マップト ファイルに対するファイル アクセスと操作に関して付与することのできるアクセス許可。The permissions that can be granted for file access and operations on memory-mapped files.

このパラメーターは、null に設定できます。This parameter can be null.

inheritability
HandleInheritability HandleInheritability HandleInheritability HandleInheritability

メモリ マップト ファイルへのハンドルを子プロセスが継承できるかどうかを指定する列挙値の 1 つ。One of the enumeration values that specifies whether a handle to the memory-mapped file can be inherited by a child process. 既定値は、None です。The default is None.

戻り値

指定された特性を持つメモリ マップト ファイル。A memory-mapped file that has the specified characteristics.

例外

mapName が空の文字列です。mapName is an empty string.

または-or- accessWrite 列挙値で書き込み専用に設定されます。access is set to write-only with the Write enumeration value.

capacity が 0 以下です。capacity is less than or equal to zero.

または-or- access が有効な MemoryMappedFileAccess 列挙値ではありません。access is not a valid MemoryMappedFileAccess enumeration value.

- または --or- inheritability が有効な HandleInheritability 列挙値ではありません。inheritability is not a valid HandleInheritability enumeration value.

注釈

このメソッドを使用して、永続化されていない (ディスク上のファイルに関連付けられていない) メモリマップトファイルを作成します。このファイルは、プロセス間でデータを共有するために使用できます。Use this method to create a memory-mapped file that is not persisted (that is, not associated with a file on disk), which you can use to share data between processes.

セキュリティ

SecurityPermission
アンマネージコードへのアクセスに使用します。for access to unmanaged code. UnmanagedCode (関連する列挙体)Associated enumeration: UnmanagedCode.

こちらもご覧ください

適用対象