MemoryMappedFile Osztály

Definíció

Memórialeképezett fájlt jelöl.

public ref class MemoryMappedFile : IDisposable
public class MemoryMappedFile : IDisposable
type MemoryMappedFile = class
    interface IDisposable
Public Class MemoryMappedFile
Implements IDisposable
Öröklődés
MemoryMappedFile
Megvalósítás

Példák

Az alábbi példa egy rendkívül nagy fájl egy részének memórialeképezési nézetét hozza létre, és annak egy részét módosítja.

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

Megjegyzések

Egy memórialeképezett fájl leképezi egy fájl tartalmát egy alkalmazás logikai címterére. A memórialeképezett fájlok lehetővé teszik a programozók számára, hogy rendkívül nagy méretű fájlokkal dolgozhassanak, mivel a memória egyidejűleg kezelhető, és teljes, véletlenszerű hozzáférést tesznek lehetővé a fájlokhoz anélkül, hogy keresniük kellene. A memórialeképezett fájlok több folyamat között is megoszthatóak.

A CreateFromFile metódusok egy memórialeképezett fájlt hoznak létre egy megadott elérési útból vagy egy FileStream meglévő fájlból a lemezen. A rendszer automatikusan propagálja a módosításokat a lemezre, amikor a fájl nincs megfeleltetve.

A CreateNew metódusok létrehoznak egy memórialeképezett fájlt, amely nincs leképezve a lemezen lévő meglévő fájlra, és alkalmas megosztott memória létrehozására a folyamatközi kommunikációhoz (IPC).

A memórialeképezett fájl társítható egy választható névvel, amely lehetővé teszi a memórialeképezett fájl más folyamatokkal való megosztását.

A memórialeképezett fájl több nézetét is létrehozhatja, beleértve a fájl egyes részeinek nézeteit is. Az egyidejű memória létrehozásához a fájl ugyanazon részét több címre is megfeleltetheti. Ahhoz, hogy két nézet egyidejű maradjon, ugyanabból a memórialeképezett fájlból kell létrehozni őket. Ugyanazon fájl két fájlleképezésének két nézettel történő létrehozása nem biztosít egyidejűséget.

Tulajdonságok

Name Description
SafeMemoryMappedFileHandle

Lekéri egy memórialeképezett fájl fájlleíróját.

Metódusok

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

Létrehoz egy memórialeképezett fájlt egy meglévő fájlból a megadott hozzáférési móddal, névvel, öröklődéssel és kapacitással.

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

Létrehoz egy memórialeképezett fájlt, amely a megadott névvel, kapacitással, hozzáférési típussal, biztonsági engedélyekkel, öröklhetőséggel és elidegenítési követelményekvel rendelkezik a lemezen lévő fájlból.

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

Létrehoz egy memórialeképezett fájlt egy meglévő fájlból egy SafeFileHandle és a megadott hozzáférési mód, név, öröklhetőség és kapacitás használatával.

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

Létrehoz egy memórialeképezett fájlt, amely a megadott hozzáférési móddal, névvel, kapacitással és hozzáférési típussal rendelkezik egy lemezen lévő fájlból.

CreateFromFile(String, FileMode, String, Int64)

Létrehoz egy memórialeképezett fájlt, amely a megadott hozzáférési móddal, névvel és kapacitással rendelkezik egy lemezen lévő fájlból.

CreateFromFile(String, FileMode, String)

Létrehoz egy memórialeképezett fájlt, amely a megadott hozzáférési móddal és névvel rendelkezik egy lemezen lévő fájlból.

CreateFromFile(String, FileMode)

Létrehoz egy memórialeképezett fájlt, amely a megadott hozzáférési móddal rendelkezik egy lemezen lévő fájlból.

CreateFromFile(String)

Létrehoz egy memórialeképezett fájlt egy lemezen lévő fájlból.

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

Létrehoz egy memórialeképezett fájlt, amely rendelkezik a megadott névvel, kapacitással, hozzáférési típussal, memórialefoglalási lehetőségekkel és öröklhetőséggel.

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

Létrehoz egy memórialeképezett fájlt, amely rendelkezik a megadott kapacitással, hozzáférési típussal, memóriafoglalással, biztonsági engedélyekkel és a rendszermemória öröklöttségével.

CreateNew(String, Int64, MemoryMappedFileAccess)

Létrehoz egy memórialeképezett fájlt, amely rendelkezik a megadott kapacitással és hozzáférési típussal a rendszermemóriában.

CreateNew(String, Int64)

Létrehoz egy memórialeképezett fájlt, amely rendelkezik a megadott kapacitással a rendszermemóriában.

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

Létrehoz egy új üres memórialeképezett fájlt, vagy megnyit egy meglévő memórialeképezett fájlt, ha ugyanazzal a névvel rendelkezik. Meglévő fájl megnyitásakor a rendszer figyelmen kívül hagyja a kapacitást, a beállításokat és a memóriaargumentumokat.

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

Létrehoz vagy megnyit egy memórialeképezett fájlt, amely rendelkezik a megadott névvel, kapacitással, hozzáférési típussal, memóriafoglalással, biztonsági engedélyekkel és a rendszermemória öröklöttségével.

CreateOrOpen(String, Int64, MemoryMappedFileAccess)

Létrehoz vagy megnyit egy memórialeképezett fájlt, amely a rendszermemória megadott nevével, kapacitásával és hozzáférési típusával rendelkezik.

CreateOrOpen(String, Int64)

Létrehoz vagy megnyit egy memórialeképezett fájlt, amely a megadott névvel és kapacitással rendelkezik a rendszermemóriában.

CreateViewAccessor()

Létrehoz egy MemoryMappedViewAccessor , a memórialeképezett fájl nézetére leképezett fájlt.

CreateViewAccessor(Int64, Int64, MemoryMappedFileAccess)

Létrehoz egy MemoryMappedViewAccessor , a memórialeképezett fájl nézetére leképezett, a megadott eltolást, méretet és hozzáférési korlátozásokat tartalmazó nézetet.

CreateViewAccessor(Int64, Int64)

Létrehoz egy MemoryMappedViewAccessor , a memórialeképezett fájl nézetére leképezett, a megadott eltolást és méretet tartalmazó nézetet.

CreateViewStream()

Létrehoz egy streamet, amely leképezi a memórialeképezett fájl nézetét.

CreateViewStream(Int64, Int64, MemoryMappedFileAccess)

Létrehoz egy adatfolyamot, amely a memórialeképezett fájl nézetére képez le, és amely a megadott eltolást, méretet és hozzáférési típust tartalmazza.

CreateViewStream(Int64, Int64)

Létrehoz egy streamet, amely leképezi a memórialeképezett fájl nézetét, amely a megadott eltolással és méretmel rendelkezik.

Dispose()

Felszabadítja a .-hez használt összes erőforrást MemoryMappedFile.

Dispose(Boolean)

Felszabadítja a felügyelt erőforrások által MemoryMappedFile használt nem felügyelt erőforrásokat, és opcionálisan felszabadítja a felügyelt erőforrásokat.

Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
GetAccessControl()

Lekéri a hozzáférés-vezérlést a memórialeképezett fájlerőforráshoz.

GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
OpenExisting(String, MemoryMappedFileRights, HandleInheritability)

Megnyit egy meglévő memórialeképezett fájlt, amely rendelkezik a megadott névvel, hozzáférési jogosultságokkal és öröklhetőséggel a rendszermemóriában.

OpenExisting(String, MemoryMappedFileRights)

Megnyit egy meglévő memórialeképezett fájlt, amely a megadott névvel és hozzáférési jogosultságokkal rendelkezik a rendszermemóriában.

OpenExisting(String)

Megnyitja a rendszermemória megadott nevét tartalmazó meglévő memórialeképezett fájlt.

SetAccessControl(MemoryMappedFileSecurity)

Beállítja a hozzáférés-vezérlést a memórialeképezett fájlerőforrásra.

ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)

A következőre érvényes:

Lásd még