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

Definition

Erstellt eine Speicherabbilddatei im Systemspeicher.Creates a memory-mapped file in system memory.

Überlädt

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

Erstellt eine im Speicher abgebildete Datei mit der angegebenen Kapazität im Systemspeicher.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)

Erstellt eine im Speicher abgebildete Datei mit den angegebenen Werten für Kapazität und Zugriffstyp im Systemspeicher.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)

Erstellt eine im Speicher abgebildete Datei mit den angegebenen Werten für Name, Kapazität, Zugriffstyp, Speicherbelegung und Vererbbarkeit.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)

Erstellt eine im Speicher abgebildete Datei mit den angegebenen Werten für Kapazität, Zugriffstyp, Speicherbelegung, Sicherheitsberechtigungen und Vererbbarkeit im Systemspeicher.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)

Erstellt eine im Speicher abgebildete Datei mit der angegebenen Kapazität im Systemspeicher.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

Parameter

mapName
String String String String

Ein Name, der der im Speicher abgebildeten Datei zugewiesen werden soll, oder null für eine MemoryMappedFile, die Sie nicht für mehrere Vorgänge freigeben möchten.A 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

Die maximale Größe (in Bytes), die für die Speicherabbilddatei reserviert werden soll.The maximum size, in bytes, to allocate to the memory-mapped file.

Gibt zurück

Eine im Speicher abgebildete Datei mit den angegebenen Werten für Name und Kapazität.A memory-mapped file that has the specified name and capacity.

Ausnahmen

mapName ist eine leere Zeichenfolge.mapName is an empty string.

capacity ist kleiner oder gleich 0 (null).capacity is less than or equal to zero.

Beispiele

Das folgende Beispiel besteht aus drei separate Prozesse (konsolenanwendungen) auf, die schreiben Boolean Werte für eine Speicherabbilddatei.The following example is composed of three separate processes (console applications) that write Boolean values to a memory-mapped file. Die folgende Sequenz von Aktionen wird ausgeführt:The following sequence of actions occur:

  1. Prozess A erstellt die Speicherabbilddatei und schreibt einen Wert zuzuweisen.Process A creates the memory-mapped file and writes a value to it.

  2. Prozess B öffnet die Datei mit zugewiesenem Speicher und schreibt einen Wert zuzuweisen.Process B opens the memory-mapped file and writes a value to it.

  3. Prozess C öffnet die Datei mit zugewiesenem Speicher und schreibt einen Wert zuzuweisen.Process C opens the memory-mapped file and writes a value to it.

  4. Prozess A liest und zeigt die Werte aus der Datei mit zugewiesenem Speicher.Process A reads and displays the values from the memory-mapped file.

  5. Nach dem Prozess A mit der Datei mit zugewiesenem Speicher ist die Datei sofort von der Garbagecollection wieder zugänglich gemacht wird.After Process A is finished with the memory-mapped file, the file is immediately reclaimed by garbage collection.

Gehen Sie folgendermaßen vor, um dieses Beispiel auszuführen:To run this example, do the following:

  1. Kompilieren Sie die Anwendungen aus, und öffnen Sie die drei Befehlsfenster.Compile the applications and open three Command windows.

  2. Führen Sie der erste Befehl im Prozess aIn the first Command window, run Process A.

  3. Führen Sie der zweite Befehl im Prozess bIn the second Command window, run Process B.

  4. Zurück zum Prozess ein, und drücken Sie die EINGABETASTE.Return to Process A and press ENTER.

  5. Führen Sie der dritte Befehl im Prozess cIn the third Command window, run Process C.

  6. Zurück zum Prozess ein, und drücken Sie die EINGABETASTE.Return to Process A and press ENTER.

Die Ausgabe von Prozess A lautet wie folgt aus: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  

Prozess 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

Prozess 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

Prozess 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

Hinweise

Mit dieser Methode können Sie um eine Datei mit zugewiesenem Speicher zu erstellen, die nicht dauerhaft gespeichert werden (d. h. keine Datei auf dem Datenträger zugeordnet), die Sie zum Freigeben von Daten zwischen Prozessen verwenden können.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.

Siehe auch

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

Erstellt eine im Speicher abgebildete Datei mit den angegebenen Werten für Kapazität und Zugriffstyp im Systemspeicher.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

Parameter

mapName
String String String String

Ein Name, der der im Speicher abgebildeten Datei zugewiesen werden soll, oder null für eine MemoryMappedFile, die Sie nicht für mehrere Vorgänge freigeben möchten.A 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

Die maximale Größe (in Bytes), die für die Speicherabbilddatei reserviert werden soll.The maximum size, in bytes, to allocate to the memory-mapped file.

access
MemoryMappedFileAccess MemoryMappedFileAccess MemoryMappedFileAccess MemoryMappedFileAccess

Einer der Enumerationswerte, der den zulässigen Zugriffstyp für die Speicherabbilddatei angibt.One of the enumeration values that specifies the type of access allowed to the memory-mapped file. Der Standardwert ist ReadWrite.The default is ReadWrite.

Gibt zurück

Eine Speicherabbilddatei, die die angegebenen Merkmale aufweist.A memory-mapped file that has the specified characteristics.

Ausnahmen

mapName ist eine leere Zeichenfolge.mapName is an empty string.

- oder --or- access wird mit dem Write-Enumerationswert auf lesegeschützt festgelegt.access is set to write-only with the Write enumeration value.

capacity ist kleiner oder gleich 0 (null).capacity is less than or equal to zero.

- oder - -or- access ist kein gültiger MemoryMappedFileAccess-Enumerationswert.access is not a valid MemoryMappedFileAccess enumeration value.

Hinweise

Mit dieser Methode können Sie um eine Datei mit zugewiesenem Speicher zu erstellen, die nicht dauerhaft gespeichert werden (d. h. keine Datei auf dem Datenträger zugeordnet), die Sie zum Freigeben von Daten zwischen Prozessen verwenden können.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.

Siehe auch

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

Erstellt eine im Speicher abgebildete Datei mit den angegebenen Werten für Name, Kapazität, Zugriffstyp, Speicherbelegung und Vererbbarkeit.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

Parameter

mapName
String String String String

Ein Name, der der im Speicher abgebildeten Datei zugewiesen werden soll, oder null für eine MemoryMappedFile, die Sie nicht für mehrere Vorgänge freigeben möchten.A 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

Die maximale Größe (in Bytes), die für die Speicherabbilddatei reserviert werden soll.The maximum size, in bytes, to allocate to the memory-mapped file.

access
MemoryMappedFileAccess MemoryMappedFileAccess MemoryMappedFileAccess MemoryMappedFileAccess

Einer der Enumerationswerte, der den zulässigen Zugriffstyp für die Speicherabbilddatei angibt.One of the enumeration values that specifies the type of access allowed to the memory-mapped file. Der Standardwert ist ReadWrite.The default is ReadWrite.

options
MemoryMappedFileOptions MemoryMappedFileOptions MemoryMappedFileOptions MemoryMappedFileOptions

Eine bitweise Kombination von Enumerationswerten, die Speicherbelegungsoptionen für die Speicherabbilddatei angeben.A bitwise combination of enumeration values that specifies memory allocation options for the memory-mapped file.

inheritability
HandleInheritability HandleInheritability HandleInheritability HandleInheritability

Ein Wert, der angibt, ob ein Handle auf die Speicherabbilddatei von einem untergeordneten Prozess geerbt werden kann.A value that specifies whether a handle to the memory-mapped file can be inherited by a child process. Der Standardwert ist None.The default is None.

Gibt zurück

Eine Speicherabbilddatei, die die angegebenen Merkmale aufweist.A memory-mapped file that has the specified characteristics.

Ausnahmen

mapName ist eine leere Zeichenfolge.mapName is an empty string.

- oder --or- access wird mit dem Write-Enumerationswert auf lesegeschützt festgelegt.access is set to write-only with the Write enumeration value.

capacity ist kleiner oder gleich 0 (null).capacity is less than or equal to zero.

- oder - -or- access ist kein gültiger MemoryMappedFileAccess-Enumerationswert.access is not a valid MemoryMappedFileAccess enumeration value.

- oder --or- inheritability ist kein gültiger HandleInheritability-Wert.inheritability is not a valid HandleInheritability value.

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

Erstellt eine im Speicher abgebildete Datei mit den angegebenen Werten für Kapazität, Zugriffstyp, Speicherbelegung, Sicherheitsberechtigungen und Vererbbarkeit im Systemspeicher.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

Parameter

mapName
String String String String

Ein Name, der der im Speicher abgebildeten Datei zugewiesen werden soll, oder null für eine MemoryMappedFile, die Sie nicht für mehrere Vorgänge freigeben möchten.A 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

Die maximale Größe (in Bytes), die für die Speicherabbilddatei reserviert werden soll.The maximum size, in bytes, to allocate to the memory-mapped file.

access
MemoryMappedFileAccess MemoryMappedFileAccess MemoryMappedFileAccess MemoryMappedFileAccess

Einer der Enumerationswerte, der den zulässigen Zugriffstyp für die Speicherabbilddatei angibt.One of the enumeration values that specifies the type of access allowed to the memory-mapped file. Der Standardwert ist ReadWrite.The default is ReadWrite.

options
MemoryMappedFileOptions MemoryMappedFileOptions MemoryMappedFileOptions MemoryMappedFileOptions

Eine bitweise Kombination von Enumerationswerten, die Speicherbelegungsoptionen für die Speicherabbilddatei angeben.A bitwise combination of enumeration values that specifies memory allocation options for the memory-mapped file.

memoryMappedFileSecurity
MemoryMappedFileSecurity MemoryMappedFileSecurity MemoryMappedFileSecurity MemoryMappedFileSecurity

Die Berechtigungen, die für den Dateizugriff und für Vorgänge für Speicherabbilddateien gewährt werden können.The permissions that can be granted for file access and operations on memory-mapped files.

Dieser Parameter kann null sein.This parameter can be null.

inheritability
HandleInheritability HandleInheritability HandleInheritability HandleInheritability

Einer der Enumerationswerte, der angibt, ob ein Handle auf die Speicherabbilddatei von einem untergeordneten Prozess geerbt werden kann.One of the enumeration values that specifies whether a handle to the memory-mapped file can be inherited by a child process. Der Standardwert ist None.The default is None.

Gibt zurück

Eine Speicherabbilddatei, die die angegebenen Merkmale aufweist.A memory-mapped file that has the specified characteristics.

Ausnahmen

mapName ist eine leere Zeichenfolge.mapName is an empty string.

- oder --or- access wird mit dem Write-Enumerationswert auf lesegeschützt festgelegt.access is set to write-only with the Write enumeration value.

capacity ist kleiner oder gleich 0 (null).capacity is less than or equal to zero.

- oder - -or- access ist kein gültiger MemoryMappedFileAccess-Enumerationswert.access is not a valid MemoryMappedFileAccess enumeration value.

- oder --or- inheritability ist kein gültiger HandleInheritability-Enumerationswert.inheritability is not a valid HandleInheritability enumeration value.

Hinweise

Mit dieser Methode können Sie um eine Datei mit zugewiesenem Speicher zu erstellen, die nicht dauerhaft gespeichert werden (d. h. keine Datei auf dem Datenträger zugeordnet), die Sie zum Freigeben von Daten zwischen Prozessen verwenden können.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.

Sicherheit

SecurityPermission
für den Zugriff von nicht verwaltetem Code.for access to unmanaged code. Zugeordnete Enumeration: UnmanagedCodeAssociated enumeration: UnmanagedCode.

Siehe auch

Gilt für: