MemoryMappedFile Sınıf

Tanım

Bellek eşlemeli bir dosyayı temsil eder.

public ref class MemoryMappedFile : IDisposable
public class MemoryMappedFile : IDisposable
type MemoryMappedFile = class
    interface IDisposable
Public Class MemoryMappedFile
Implements IDisposable
Devralma
MemoryMappedFile
Uygulamalar

Örnekler

Aşağıdaki örnek, son derece büyük bir dosyanın bir bölümünün bellek eşlemeli bir görünümünü oluşturur ve bir bölümünü işler.

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

Açıklamalar

Bellekle eşlenen dosya, bir dosyanın içeriğini uygulamanın mantıksal adres alanına eşler. Bellek eşlemeli dosyalar, bellek eşzamanlı olarak yönetilebildiği için programcıların son derece büyük dosyalarla çalışmasını sağlar ve aramaya gerek kalmadan bir dosyaya tam, rastgele erişime izin verir. Bellek eşlemeli dosyalar birden çok işlem arasında da paylaşılabilir.

Yöntemler, CreateFromFile belirtilen bir yoldan veya diskte var olan bir dosyadan bellek eşlemeli bir FileStream dosya oluşturur. Dosya eşlenmediğinde değişiklikler diske otomatik olarak yayılır.

Yöntemler, CreateNew diskte var olan bir dosyayla eşlenmeyen ve işlemler arası iletişim (IPC) için paylaşılan bellek oluşturmaya uygun bellek eşlemeli bir dosya oluşturur.

Bellek eşlemeli bir dosya, bellekle eşlenen dosyanın diğer işlemlerle paylaşılmasını sağlayan isteğe bağlı bir adla ilişkilendirilebilir.

Dosya bölümlerinin görünümleri de dahil olmak üzere bellekle eşlenen dosyanın birden çok görünümünü oluşturabilirsiniz. Eşzamanlı bellek oluşturmak için dosyanın aynı bölümünü birden fazla adresle eşleyebilirsiniz. İki görünümün eşzamanlı kalması için aynı bellek eşlemeli dosyadan oluşturulması gerekir. aynı dosyanın iki görünümüyle iki dosya eşlemesi oluşturmak eşzamanlılık sağlamaz.

Özellikler

SafeMemoryMappedFileHandle

Bellekle eşlenen bir dosyanın dosya tanıtıcısını alır.

Yöntemler

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

Belirtilen erişim modu, ad, devralınabilirlik ve kapasiteye sahip mevcut bir dosyadan belleğe eşlenmiş bir dosya oluşturur.

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

Disk üzerindeki bir dosyadan belirtilen ada, kapasiteye, erişim türüne, güvenlik izinlerine, devralınabilirlik ve atma gereksinimine sahip belleğe eşlenmiş bir dosya oluşturur.

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

ve belirtilen erişim modunu, adı, devralınabilirliği ve kapasiteyi kullanarak mevcut bir dosyadan belleğe eşlenmiş bir SafeFileHandle dosya oluşturur.

CreateFromFile(String)

Disk üzerindeki bir dosyadan belleğe eşlenmiş bir dosya oluşturur.

CreateFromFile(String, FileMode)

Disk üzerindeki bir dosyadan belirtilen erişim moduna sahip belleğe eşlenmiş bir dosya oluşturur.

CreateFromFile(String, FileMode, String)

Disk üzerindeki bir dosyadan belirtilen erişim moduna ve ada sahip, belleğe eşlenmiş bir dosya oluşturur.

CreateFromFile(String, FileMode, String, Int64)

Disk üzerindeki bir dosyadan belirtilen erişim moduna, ada ve kapasiteye sahip belleğe eşlenmiş bir dosya oluşturur.

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

Disk üzerindeki bir dosyadan belirtilen erişim moduna, ada, kapasiteye ve erişim türüne sahip belleğe eşlenmiş bir dosya oluşturur.

CreateNew(String, Int64)

Sistem belleğinde belirtilen kapasiteye sahip belleğe eşlenmiş bir dosya oluşturur.

CreateNew(String, Int64, MemoryMappedFileAccess)

Belirtilen kapasiteye ve sistem belleğine erişim türüne sahip, belleğe eşlenmiş bir dosya oluşturur.

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

Belirtilen ada, kapasiteye, erişim türüne, bellek ayırma seçeneklerine ve devralınabilirliğe sahip, belleğe eşlenmiş bir dosya oluşturur.

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

Belirtilen kapasiteye, erişim türüne, bellek ayırmaya, güvenlik izinlerine ve sistem belleğinde devralınabilirliğe sahip belleğe eşlenmiş bir dosya oluşturur.

CreateOrOpen(String, Int64)

Sistem belleğinde belirtilen ada ve kapasiteye sahip bellek eşlemeli bir dosya oluşturur veya açar.

CreateOrOpen(String, Int64, MemoryMappedFileAccess)

Sistem belleğinde belirtilen ada, kapasiteye ve erişim türüne sahip belleğe eşlenmiş bir dosya oluşturur veya açar.

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

Yeni boş bir bellek eşlenmiş dosyası oluşturur veya aynı ada sahip bir dosya varsa var olan bir bellek eşlenmiş dosyasını açar. Mevcut bir dosyayı açarsanız kapasite, seçenekler ve bellek bağımsız değişkenleri yoksayılır.

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

Belirtilen ada, kapasiteye, erişim türüne, bellek ayırmaya, güvenlik izinlerine ve sistem belleğinde devralınabilirliğe sahip belleğe eşlenmiş bir dosya oluşturur veya açar.

CreateViewAccessor()

MemoryMappedViewAccessor Bellekle eşlenen dosyanın görünümüne eşlenen bir oluşturur.

CreateViewAccessor(Int64, Int64)

MemoryMappedViewAccessor Bellekle eşlenen dosyanın görünümüne eşlenen ve belirtilen uzaklık ve boyuta sahip bir oluşturur.

CreateViewAccessor(Int64, Int64, MemoryMappedFileAccess)

Bellekle eşlenen dosyanın görünümüne eşlenen ve belirtilen uzaklık, boyut ve erişim kısıtlamalarına sahip olan bir MemoryMappedViewAccessor oluşturur.

CreateViewStream()

Bellekle eşlenen dosyanın görünümüne eşlenen bir akış oluşturur.

CreateViewStream(Int64, Int64)

Bellekle eşlenen dosyanın görünümüne eşlenen ve belirtilen uzaklık ve boyuta sahip bir akış oluşturur.

CreateViewStream(Int64, Int64, MemoryMappedFileAccess)

Bellekle eşlenen dosyanın görünümüne eşlenen ve belirtilen uzaklık, boyut ve erişim türüne sahip bir akış oluşturur.

Dispose()

MemoryMappedFile tarafından kullanılan tüm kaynakları serbest bırakır.

Dispose(Boolean)

MemoryMappedFile tarafından kullanılan yönetilmeyen kaynakları serbest bırakır ve yönetilen kaynakları isteğe bağlı olarak serbest bırakır.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetAccessControl()

Bellekle eşlenen dosya kaynağına erişim denetimini alır.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
OpenExisting(String)

Sistem belleğinde belirtilen ada sahip, bellekle eşlenmiş mevcut bir dosyayı açar.

OpenExisting(String, MemoryMappedFileRights)

Sistem belleğinde belirtilen ada ve erişim haklarına sahip, bellekle eşlenmiş mevcut bir dosyayı açar.

OpenExisting(String, MemoryMappedFileRights, HandleInheritability)

Belirtilen ada, erişim haklarına ve sistem belleğinde devralınabilirliğe sahip, bellekle eşlenmiş mevcut bir dosyayı açar.

SetAccessControl(MemoryMappedFileSecurity)

Erişim denetimini bellekle eşlenen dosya kaynağına ayarlar.

ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Şunlara uygulanır

Ayrıca bkz.