MemoryMappedFile 클래스

정의

메모리 매핑된 파일을 나타냅니다.Represents a memory-mapped file.

public ref class MemoryMappedFile : IDisposable
public class MemoryMappedFile : IDisposable
type MemoryMappedFile = class
    interface IDisposable
Public Class MemoryMappedFile
Implements IDisposable
상속
MemoryMappedFile
구현

예제

다음 예제에서는 매우 큰 파일의 일부에 대한 메모리 매핑된 보기를 만들고 보기의 일부를 조작합니다.The following example creates a memory-mapped view of a part of an extremely large file and manipulates a portion of it.

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 memory-mapped file maps the contents of a file to an application's logical address space. 메모리 매핑된 파일을 프로그래머가 메모리 동시에 관리할 수 있고 검색할 필요 없이 파일에 대 한 완전 한 임의 액세스를 허용 하기 때문에 매우 큰 파일을 사용 하 여 작업을 사용 하도록 설정 합니다.Memory-mapped files enable programmers to work with extremely large files because memory can be managed concurrently, and they allow complete, random access to a file without the need for seeking. 또한 여러 프로세스에서 메모리 매핑된 파일을 공유할 수 있습니다.Memory-mapped files can also be shared across multiple processes.

합니다 CreateFromFile 메서드는 지정된 된 경로에서 메모리 매핑된 파일을 만듭니다 또는 FileStream 디스크에 기존 파일의 합니다.The CreateFromFile methods create a memory-mapped file from a specified path or a FileStream of an existing file on disk. 경우 디스크에 변경 내용을 자동으로 전파 됩니다 파일이 매핑된 아닙니다.Changes are automatically propagated to disk when the file is unmapped.

CreateNew 메서드 디스크에 있는 기존 파일에 매핑되지 않은 메모리 매핑된 파일을 만들고 프로세스 간 통신 (IPC)에 대 한 공유 메모리를 만들기에 적합 합니다.The CreateNew methods create a memory-mapped file that is not mapped to an existing file on disk; and are suitable for creating shared memory for interprocess communication (IPC).

메모리 매핑된 파일을 메모리 매핑된 파일을 다른 프로세스와 공유할 수 있도록 선택적 이름으로 연결할 수 있습니다.A memory-mapped file can be associated with an optional name that allows the memory-mapped file to be shared with other processes.

파일의 부분 뷰를 포함 하는 메모리 매핑된 파일의 여러 뷰를 만들 수 있습니다.You can create multiple views of the memory-mapped file, including views of parts of the file. 둘 이상의 주소 동시 메모리를 만들 파일의 한 부분을 매핑할 수 있습니다.You can map the same part of a file to more than one address to create concurrent memory. 두 보기를 동시에 유지하려면 동일한 메모리 매핑된 파일에서 보기를 만들어야 합니다.For two views to remain concurrent, they have to be created from the same memory-mapped file. 두 가지 보기를 사용 하 여 동일한 파일의 두 파일 매핑 만들기 동시성을 제공 하지 않습니다.Creating two file mappings of the same file with two views does not provide concurrency.

속성

SafeMemoryMappedFileHandle

메모리 매핑된 파일의 파일 핸들을 가져옵니다.Gets the file handle of a memory-mapped file.

메서드

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

지정된 액세스 모드, 이름, 상속 및 용량을 사용하여 기존 파일에서 메모리 매핑된 파일을 만듭니다.Creates a memory-mapped file from an existing file with the specified access mode, name, inheritability, and capacity.

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

디스크의 파일에서 지정된 이름, 용량, 액세스 형식, 보안 권한, 상속 가능성 및 삭제 요구 사항을 가진 메모리 매핑된 파일을 만듭니다.Creates a memory-mapped file that has the specified name, capacity, access type, security permissions, inheritability, and disposal requirement from a file on disk.

CreateFromFile(String)

디스크의 파일에서 메모리 매핑된 파일을 만듭니다.Creates a memory-mapped file from a file on disk.

CreateFromFile(String, FileMode)

디스크의 파일에서 지정된 액세스 모드를 가진 메모리 매핑된 파일을 만듭니다.Creates a memory-mapped file that has the specified access mode from a file on disk.

CreateFromFile(String, FileMode, String)

디스크의 파일에서 지정된 액세스 모드와 이름을 가진 메모리 매핑된 파일을 만듭니다.Creates a memory-mapped file that has the specified access mode and name from a file on disk.

CreateFromFile(String, FileMode, String, Int64)

디스크의 파일에서 지정된 액세스 모드, 이름 및 용량을 가진 메모리 매핑된 파일을 만듭니다.Creates a memory-mapped file that has the specified access mode, name, and capacity from a file on disk.

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

디스크의 파일에서 지정된 액세스 모드, 이름, 용량 및 액세스 형식을 가진 메모리 매핑된 파일을 만듭니다.Creates a memory-mapped file that has the specified access mode, name, capacity, and access type from a file on disk.

CreateNew(String, Int64)

시스템 메모리에서 지정된 용량을 가진 메모리 매핑된 파일을 만듭니다.Creates a memory-mapped file that has the specified capacity in system memory.

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)

지정된 이름, 용량, 액세스 형식, 메모리 할당 옵션 및 상속을 가진 메모리 매핑된 파일을 만듭니다.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)

시스템 메모리에서 지정된 용량, 액세스 형식, 메모리 할당, 보안 권한 및 상속 가능성을 가진 메모리 매핑된 파일을 만듭니다.Creates a memory-mapped file that has the specified capacity, access type, memory allocation, security permissions, and inheritability in system memory.

CreateOrOpen(String, Int64)

시스템 메모리에서 지정된 이름 및 용량을 가진 메모리 매핑된 파일을 만들거나 엽니다.Creates or opens a memory-mapped file that has the specified name and capacity in system memory.

CreateOrOpen(String, Int64, MemoryMappedFileAccess)

시스템 메모리에서 지정된 이름, 용량 및 액세스 형식을 가진 메모리 매핑된 파일을 만들거나 엽니다.Creates or opens a memory-mapped file that has the specified name, capacity and access type in system memory.

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

동일한 이름의 파일이 있는 경우 비어 있는 새 메모리 매핑된 파일을 만들거나 기존의 메모리 매핑된 파일을 엽니다.Creates a new empty memory mapped file or opens an existing memory mapped file if one exists with the same name. 기존 파일을 여는 경우 용량, 옵션 및 메모리 인수가 무시됩니다.If opening an existing file, the capacity, options, and memory arguments will be ignored.

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

시스템 메모리에서 지정된 이름, 용량, 액세스 형식, 메모리 할당, 보안 권한 및 상속 가능성을 가진 메모리 매핑된 파일을 만들거나 엽니다.Creates or opens a memory-mapped file that has the specified name, capacity, access type, memory allocation, security permissions, and inheritability in system memory.

CreateViewAccessor()

메모리 매핑된 파일의 뷰에 매핑되는 MemoryMappedViewAccessor를 만듭니다.Creates a MemoryMappedViewAccessor that maps to a view of the memory-mapped file.

CreateViewAccessor(Int64, Int64)

지정된 오프셋과 크기를 가지고 메모리 매핑된 파일의 뷰에 매핑되는 MemoryMappedViewAccessor를 만듭니다.Creates a MemoryMappedViewAccessor that maps to a view of the memory-mapped file, and that has the specified offset and size.

CreateViewAccessor(Int64, Int64, MemoryMappedFileAccess)

지정된 오프셋, 크기 및 액세스 제한을 가지고 메모리 매핑된 파일의 뷰에 매핑되는 MemoryMappedViewAccessor를 만듭니다.Creates a MemoryMappedViewAccessor that maps to a view of the memory-mapped file, and that has the specified offset, size, and access restrictions.

CreateViewStream()

메모리 매핑된 파일의 뷰에 매핑되는 스트림을 만듭니다.Creates a stream that maps to a view of the memory-mapped file.

CreateViewStream(Int64, Int64)

지정된 오프셋과 크기를 가지고 메모리 매핑된 파일의 뷰에 매핑되는 스트림을 만듭니다.Creates a stream that maps to a view of the memory-mapped file, and that has the specified offset and size.

CreateViewStream(Int64, Int64, MemoryMappedFileAccess)

지정된 오프셋, 크기 및 액세스 형식을 가지고 메모리 매핑된 파일의 뷰에 매핑되는 스트림을 만듭니다.Creates a stream that maps to a view of the memory-mapped file, and that has the specified offset, size, and access type.

Dispose()

MemoryMappedFile에서 사용하는 모든 리소스를 해제합니다.Releases all resources used by the MemoryMappedFile.

Dispose(Boolean)

MemoryMappedFile에서 사용하는 관리되지 않는 리소스를 해제하고, 관리되는 리소스를 선택적으로 해제할 수 있습니다.Releases the unmanaged resources used by the MemoryMappedFile and optionally releases the managed resources.

Equals(Object)

지정한 개체와 현재 개체가 같은지 여부를 확인합니다.Determines whether the specified object is equal to the current object.

(다음에서 상속됨 Object)
GetAccessControl()

메모리 매핑된 파일 리소스에 대한 액세스 제어를 가져옵니다.Gets the access control to the memory-mapped file resource.

GetHashCode()

기본 해시 함수로 작동합니다.Serves as the default hash function.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(다음에서 상속됨 Object)
OpenExisting(String)

시스템 메모리에서 지정된 이름을 가진 기존의 메모리 매핑된 파일을 엽니다.Opens an existing memory-mapped file that has the specified name in system memory.

OpenExisting(String, MemoryMappedFileRights)

시스템 메모리에서 지정된 이름과 액세스 권한을 가진 기존의 메모리 매핑된 파일을 엽니다.Opens an existing memory-mapped file that has the specified name and access rights in system memory.

OpenExisting(String, MemoryMappedFileRights, HandleInheritability)

시스템 메모리에서 지정된 이름, 액세스 권한 및 상속 가능성을 가진 기존의 메모리 매핑된 파일을 엽니다.Opens an existing memory-mapped file that has the specified name, access rights, and inheritability in system memory.

SetAccessControl(MemoryMappedFileSecurity)

메모리 매핑된 파일 리소스에 대한 액세스 제어를 설정합니다.Sets the access control to the memory-mapped file resource.

ToString()

현재 개체를 나타내는 문자열을 반환합니다.Returns a string that represents the current object.

(다음에서 상속됨 Object)

적용 대상

추가 정보