MemoryMappedFile.CreateNew メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
システム メモリ内でメモリ マップト ファイルを作成します。
オーバーロード
CreateNew(String, Int64) |
容量が指定されたメモリ マップト ファイルをシステム メモリ内で作成します。 |
CreateNew(String, Int64, MemoryMappedFileAccess) |
容量およびアクセスの種類が指定されたメモリ マップト ファイルをシステム メモリ内で作成します。 |
CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability) |
名前、容量、アクセスの種類、メモリ割り当てオプション、および継承性が指定されたメモリ マップト ファイルを作成します。 |
CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability) |
容量、アクセスの種類、メモリの割り当て、セキュリティ アクセス許可、および継承性が指定されたメモリ マップト ファイルをシステム メモリ内で作成します。 |
CreateNew(String, Int64)
容量が指定されたメモリ マップト ファイルをシステム メモリ内で作成します。
public:
static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateNew(System::String ^ mapName, long capacity);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateNew (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
メモリ マップト ファイルに割り当てる名前。または、プロセス間で共有する意図のない MemoryMappedFile の null
。
- capacity
- Int64
メモリ マップト ファイルに割り当てる最大サイズ (バイト単位)。
戻り値
名前および容量が指定されたメモリ マップト ファイル。
例外
mapName
が空の文字列です。
capacity
が 0 以下です。
.NET Core および .NET 5 以降のみ: 名前付きメモリ マップファイル (つまり null mapName
以外) を使用したメソッドの呼び出しCreateNew
は、Windows オペレーティング システムでのみサポートされています。
例
次の例は、メモリ マップト ファイルに値を書き込む Boolean
3 つの個別のプロセス (コンソール アプリケーション) で構成されています。 次の順序で処理が実行されます。
プロセス A は、メモリ マップされたファイルを作成し、値を書き込みます。
プロセス B は、メモリ マップされたファイルを開き、値を書き込みます。
プロセス C は、メモリ マップされたファイルを開き、値を書き込みます。
プロセス A は、メモリ マップファイルから値を読み取って表示します。
プロセス A がメモリ マップド ファイルで終了すると、ファイルはガベージ コレクションによってすぐに再利用されます。
この例を実行するには、次の手順に従います。
アプリケーションをコンパイルし、3 つのコマンド ウィンドウを開きます。
最初のコマンド ウィンドウで、プロセス A を実行します。
2 番目のコマンド ウィンドウで、プロセス B を実行します。
プロセス A に戻り、Enter キーを押します。
3 番目のコマンド ウィンドウで、プロセス C を実行します。
プロセス A に戻り、Enter キーを押します。
プロセス A の出力は次のとおりです。
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
プロセス 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
プロセス 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
プロセス 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
注釈
このメソッドを使用して、永続化されていない (つまり、ディスク上のファイルに関連付けられていない) メモリ マップファイルを作成します。これは、プロセス間でデータを共有するために使用できます。
こちらもご覧ください
適用対象
CreateNew(String, Int64, MemoryMappedFileAccess)
容量およびアクセスの種類が指定されたメモリ マップト ファイルをシステム メモリ内で作成します。
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);
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
メモリ マップト ファイルに割り当てる名前。または、プロセス間で共有する意図のない MemoryMappedFile の null
。
- capacity
- Int64
メモリ マップト ファイルに割り当てる最大サイズ (バイト単位)。
- access
- MemoryMappedFileAccess
メモリ マップト ファイルに対して許可されたアクセス権の種類を指定する列挙値の 1 つ。 既定値は、ReadWrite です。
戻り値
指定された特性を持つメモリ マップト ファイル。
例外
.NET Core および .NET 5 以降のみ: 名前付きメモリ マップファイル (つまり null mapName
以外) を使用したメソッドの呼び出しCreateNew
は、Windows オペレーティング システムでのみサポートされています。
注釈
このメソッドを使用して、永続化されていない (つまり、ディスク上のファイルに関連付けられていない) メモリ マップファイルを作成します。これは、プロセス間でデータを共有するために使用できます。
こちらもご覧ください
適用対象
CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability)
名前、容量、アクセスの種類、メモリ割り当てオプション、および継承性が指定されたメモリ マップト ファイルを作成します。
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);
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
メモリ マップト ファイルに割り当てる名前。または、プロセス間で共有する意図のない MemoryMappedFile の null
。
- capacity
- Int64
メモリ マップト ファイルに割り当てる最大サイズ (バイト単位)。
- access
- MemoryMappedFileAccess
メモリ マップト ファイルに対して許可されたアクセス権の種類を指定する列挙値の 1 つ。 既定値は、ReadWrite です。
- options
- MemoryMappedFileOptions
メモリ マップト ファイルのメモリ割り当てオプションを指定する列挙値のビットごとの組み合わせ。
- inheritability
- HandleInheritability
メモリ マップト ファイルへのハンドルを子プロセスが継承できるかどうかを指定する値。 既定値は、None です。
戻り値
指定された特性を持つメモリ マップト ファイル。
例外
capacity
が 0 以下です。
- または -
access
が有効な MemoryMappedFileAccess 列挙値ではありません。
- または -
inheritability
は有効な HandleInheritability 値ではありません。
.NET Core および .NET 5 以降のみ: 名前付きメモリ マップファイル (つまり null mapName
以外) を使用したメソッドの呼び出しCreateNew
は、Windows オペレーティング システムでのみサポートされています。
適用対象
CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability)
容量、アクセスの種類、メモリの割り当て、セキュリティ アクセス許可、および継承性が指定されたメモリ マップト ファイルをシステム メモリ内で作成します。
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);
[<System.Security.SecurityCritical>]
static member CreateNew : string * int64 * System.IO.MemoryMappedFiles.MemoryMappedFileAccess * System.IO.MemoryMappedFiles.MemoryMappedFileOptions * System.IO.MemoryMappedFiles.MemoryMappedFileSecurity * System.IO.HandleInheritability -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateNew (mapName As String, capacity As Long, access As MemoryMappedFileAccess, options As MemoryMappedFileOptions, memoryMappedFileSecurity As MemoryMappedFileSecurity, inheritability As HandleInheritability) As MemoryMappedFile
パラメーター
- mapName
- String
メモリ マップト ファイルに割り当てる名前。または、プロセス間で共有する意図のない MemoryMappedFile の null
。
- capacity
- Int64
メモリ マップト ファイルに割り当てる最大サイズ (バイト単位)。
- access
- MemoryMappedFileAccess
メモリ マップト ファイルに対して許可されたアクセス権の種類を指定する列挙値の 1 つ。 既定値は、ReadWrite です。
- options
- MemoryMappedFileOptions
メモリ マップト ファイルのメモリ割り当てオプションを指定する列挙値のビットごとの組み合わせ。
- memoryMappedFileSecurity
- MemoryMappedFileSecurity
メモリ マップト ファイルに対するファイル アクセスと操作に関して付与することのできるアクセス許可。
このパラメーターは、null
に設定できます。
- inheritability
- HandleInheritability
メモリ マップト ファイルへのハンドルを子プロセスが継承できるかどうかを指定する列挙値の 1 つ。 既定値は、None です。
戻り値
指定された特性を持つメモリ マップト ファイル。
- 属性
例外
capacity
が 0 以下です。
- または -
access
が有効な MemoryMappedFileAccess 列挙値ではありません。
- または -
inheritability
が有効な HandleInheritability 列挙値ではありません。
注釈
このメソッドを使用して、永続化されていない (つまり、ディスク上のファイルに関連付けられていない) メモリ マップファイルを作成します。これは、プロセス間でデータを共有するために使用できます。
こちらもご覧ください
適用対象
.NET