MemoryMappedFile.CreateFromFile メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
既存のファイルからメモリ マップト ファイルを作成します。
オーバーロード
CreateFromFile(String)
ディスク上のファイルからメモリ マップト ファイルを作成します。
public:
static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateFromFile(System::String ^ path);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile (string path);
static member CreateFromFile : string -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateFromFile (path As String) As MemoryMappedFile
パラメーター
- path
- String
割り当てるファイルのパス。
戻り値
メモリ マップト ファイル。
例外
path
が、空の文字列であるか、空白しか含んでいないか、GetInvalidFileNameChars() メソッドで定義されている無効な文字を 1 つ以上含んでいます。
- または -
path
が無効なデバイスを参照しています。
path
が null
です。
I/O エラーが発生しました。
path
がオペレーティング システムで定義されている最大長を超えています。
呼び出し元に、ファイルに対する必要なアクセス許可がありません。
例
次の例では、 メソッドを CreateFromFile 使用してメモリ マップファイルを作成し、非常に大きなファイルの一部にメモリマップビューを作成します。
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
こちらもご覧ください
適用対象
CreateFromFile(String, FileMode)
ディスク上のファイルから、アクセス モードが指定されたメモリ マップト ファイルを作成します。
public:
static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateFromFile(System::String ^ path, System::IO::FileMode mode);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile (string path, System.IO.FileMode mode);
static member CreateFromFile : string * System.IO.FileMode -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateFromFile (path As String, mode As FileMode) As MemoryMappedFile
パラメーター
- path
- String
割り当てるファイルのパス。
戻り値
アクセス モードが指定されたメモリ マップト ファイル。
例外
path
が、空の文字列であるか、空白しか含んでいないか、GetInvalidFileNameChars() メソッドで定義されている無効な文字を 1 つ以上含んでいます。
- または -
path
が無効なデバイスを参照しています。
- または -
mode
は Append です。
path
が null
です。
mode
が Create、CreateNew、または Truncate です。
- または -
mode
が OpenOrCreate で、ディスク上のファイルが存在しません。
- または -
I/O エラーが発生しました。
path
がオペレーティング システムで定義されている最大長を超えています。
呼び出し元に、ファイルに対する必要なアクセス許可がありません。
注釈
パラメーターは mode
、ディスク上のソース ファイルに関連します。 列挙値のみを Open 使用して、ディスク上のソース ファイルからメモリ マップファイルを作成できます。
こちらもご覧ください
適用対象
CreateFromFile(String, FileMode, String)
ディスク上のファイルから、アクセス モードと名前が指定されたメモリ マップト ファイルを作成します。
public:
static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateFromFile(System::String ^ path, System::IO::FileMode mode, System::String ^ mapName);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile (string path, System.IO.FileMode mode, string? mapName);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile (string path, System.IO.FileMode mode, string mapName);
static member CreateFromFile : string * System.IO.FileMode * string -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateFromFile (path As String, mode As FileMode, mapName As String) As MemoryMappedFile
パラメーター
- path
- String
割り当てるファイルのパス。
- mapName
- String
メモリ マップト ファイルに割り当てる名前。または、プロセス間で共有する意図のない MemoryMappedFile の null
。
戻り値
名前およびアクセス モードが指定されたメモリ マップト ファイル。
例外
path
が、空の文字列であるか、空白しか含んでいないか、GetInvalidFileNameChars() メソッドで定義されている無効な文字を 1 つ以上含んでいます。
- または -
path
が無効なデバイスを参照しています。
- または -
mapName
が空の文字列です。
または
mode
は Append です。
path
が null
です。
mode
が Create、CreateNew、または Truncate です。
- または -
mode
が OpenOrCreate で、ディスク上のファイルが存在しません。
- または -
I/O エラーが発生しました。
path
がオペレーティング システムで定義されている最大長を超えています。
呼び出し元に、ファイルに対する必要なアクセス許可がありません。
注釈
パラメーターは mode
、ディスク上のソース ファイルに関連します。 列挙値のみを Open 使用して、ディスク上のソース ファイルからメモリ マップファイルを作成できます。
適用対象
CreateFromFile(String, FileMode, String, Int64)
ディスク上のファイルから、アクセス モード、名前、および容量が指定されたメモリ マップト ファイルを作成します。
public:
static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateFromFile(System::String ^ path, System::IO::FileMode mode, System::String ^ mapName, long capacity);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile (string path, System.IO.FileMode mode, string? mapName, long capacity);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile (string path, System.IO.FileMode mode, string mapName, long capacity);
static member CreateFromFile : string * System.IO.FileMode * string * int64 -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateFromFile (path As String, mode As FileMode, mapName As String, capacity As Long) As MemoryMappedFile
パラメーター
- path
- String
割り当てるファイルのパス。
- mapName
- String
メモリ マップト ファイルに割り当てる名前。または、プロセス間で共有する意図のない MemoryMappedFile の null
。
- capacity
- Int64
メモリ マップト ファイルに割り当てる最大サイズ (バイト単位)。 容量をディスク上のファイルのサイズに設定するには、0 を指定します。
戻り値
指定された特性を持つメモリ マップト ファイル。
例外
path
が、空の文字列であるか、空白しか含んでいないか、GetInvalidFileNameChars() メソッドで定義されている無効な文字を 1 つ以上含んでいます。
- または -
path
が無効なデバイスを参照しています。
- または -
mapName
が空の文字列です。
または
mode
は Append です。
path
が null
です。
capacity
が論理アドレス空間のサイズを超えています。
- または -
capacity
が 0 未満です。
- または -
capacity
がファイル サイズを下回っています (ゼロではない)。
- または -
capacity
がゼロで、ディスク上のファイルのサイズもゼロです。
I/O エラーが発生しました。
path
がオペレーティング システムで定義されている最大長を超えています。
呼び出し元に、ファイルに対する必要なアクセス許可がありません。
注釈
パラメーターは mode
、ディスク上のソース ファイルに関連します。
がディスク上のファイルのサイズより大きい場合 capacity
、メモリ マップト ファイルにデータが書き込まれていなくても、ディスク上のファイルは指定された容量に合わせて増やされます。 この問題が発生しないようにするには、既定の容量に 0 (ゼロ) を指定します。この容量は、ディスク上のファイルのサイズに内部的に設定 capacity
されます。
適用対象
CreateFromFile(String, FileMode, String, Int64, MemoryMappedFileAccess)
ディスク上のファイルから、アクセス モード、名前、容量、およびアクセスの種類が指定されたメモリ マップト ファイルを作成します。
public:
static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateFromFile(System::String ^ path, System::IO::FileMode mode, System::String ^ mapName, long capacity, System::IO::MemoryMappedFiles::MemoryMappedFileAccess access);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile (string path, System.IO.FileMode mode, string? mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile (string path, System.IO.FileMode mode, string mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access);
[System.Security.SecurityCritical]
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile (string path, System.IO.FileMode mode, string mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access);
static member CreateFromFile : string * System.IO.FileMode * string * int64 * System.IO.MemoryMappedFiles.MemoryMappedFileAccess -> System.IO.MemoryMappedFiles.MemoryMappedFile
[<System.Security.SecurityCritical>]
static member CreateFromFile : string * System.IO.FileMode * string * int64 * System.IO.MemoryMappedFiles.MemoryMappedFileAccess -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateFromFile (path As String, mode As FileMode, mapName As String, capacity As Long, access As MemoryMappedFileAccess) As MemoryMappedFile
パラメーター
- path
- String
割り当てるファイルのパス。
- mapName
- String
メモリ マップト ファイルに割り当てる名前。または、プロセス間で共有する意図のない MemoryMappedFile の null
。
- capacity
- Int64
メモリ マップト ファイルに割り当てる最大サイズ (バイト単位)。 容量をディスク上のファイルのサイズに設定するには、0 を指定します。
- access
- MemoryMappedFileAccess
メモリ マップト ファイルに対して許可されたアクセス権の種類を指定する列挙値の 1 つ。
戻り値
指定された特性を持つメモリ マップト ファイル。
- 属性
例外
mapName
が空の文字列です。
- または -
access
が許可値ではありません。
- または -
path
が空のファイルを指定しています。
- または -
access
が Read として指定され、容量が path
によって指定されたファイルのサイズを超えています。
- または -
mode
は Append です。
path
が null
です。
capacity
が論理アドレス空間のサイズを超えています。
- または -
capacity
が 0 未満です。
- または -
capacity
がファイル サイズを下回っています (ゼロではない)。
- または -
capacity
がゼロで、ディスク上のファイルのサイズもゼロです。
- または -
access
が定義された MemoryMappedFileAccess 値ではありません。
- または -
path
によって示されるファイルのサイズが capacity
を超える値です。
path
がオペレーティング システムで定義されている最大長を超えています。
呼び出し元に、ファイルに対する必要なアクセス許可がありません。
注釈
パラメーターは mode
、ディスク上のソース ファイルに関連します。
がディスク上のファイルのサイズより大きい場合 capacity
、メモリ マップト ファイルにデータが書き込まれていなくても、ディスク上のファイルは指定された容量に合わせて増やされます。 この問題が発生しないようにするには、既定の容量に 0 (ゼロ) を指定します。この容量は、ディスク上のファイルのサイズに内部的に設定 capacity
されます。
こちらもご覧ください
適用対象
CreateFromFile(SafeFileHandle, String, Int64, MemoryMappedFileAccess, HandleInheritability, Boolean)
と指定したアクセス モード、名前、継承可能性、および容量を使用して SafeFileHandle 、既存のファイルからメモリ マップファイルを作成します。
public:
static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateFromFile(Microsoft::Win32::SafeHandles::SafeFileHandle ^ fileHandle, System::String ^ mapName, long capacity, System::IO::MemoryMappedFiles::MemoryMappedFileAccess access, System::IO::HandleInheritability inheritability, bool leaveOpen);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile (Microsoft.Win32.SafeHandles.SafeFileHandle fileHandle, string? mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access, System.IO.HandleInheritability inheritability, bool leaveOpen);
static member CreateFromFile : Microsoft.Win32.SafeHandles.SafeFileHandle * string * int64 * System.IO.MemoryMappedFiles.MemoryMappedFileAccess * System.IO.HandleInheritability * bool -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateFromFile (fileHandle As SafeFileHandle, mapName As String, capacity As Long, access As MemoryMappedFileAccess, inheritability As HandleInheritability, leaveOpen As Boolean) As MemoryMappedFile
パラメーター
- fileHandle
- SafeFileHandle
SafeFileHandle既存のファイルの 。 が の場合leaveOpen
、呼び出し元は true
を破棄するfileHandle
必要があります (それ以外の場合は、 MemoryMappedFileによって自動的に破棄されます)。
- mapName
- String
メモリ マップト ファイルに割り当てる名前。または、プロセス間で共有する意図のない MemoryMappedFile の null
。
- capacity
- Int64
メモリ マップト ファイルに割り当てる最大サイズ (バイト単位)。 容量をファイルのサイズに設定するには、0 を指定します。
- access
- MemoryMappedFileAccess
メモリ マップト ファイルに対して許可されたアクセス権の種類を指定する列挙値の 1 つ。
このパラメーターは Write に設定できません。
- inheritability
- HandleInheritability
メモリ マップト ファイルへのハンドルを子プロセスが継承できるかどうかを指定する列挙値の 1 つ。 既定値は、None です。
- leaveOpen
- Boolean
が破棄されたときに MemoryMappedFile ソース ファイル ハンドルを閉じるかどうかを示す 値。
戻り値
指定された特性を持つメモリ マップト ファイル。
例外
mapName
が null
または空の文字列です。
- または -
capacity
とファイルの長さがゼロです。
- または -
access
が に Write設定されています。これは許可されていません。
または
access
は に Read 設定され、 capacity
ファイルの長さよりも大きくなります。
fileHandle
は null
です。
capacity
が 0 未満です。
- または -
capacity
がファイル サイズ未満です。
- または -
access
が有効な MemoryMappedFileAccess 列挙値ではありません。
- または -
inheritability
が有効な HandleInheritability 列挙値ではありません。
適用対象
CreateFromFile(FileStream, String, Int64, MemoryMappedFileAccess, HandleInheritability, Boolean)
既存のファイルから、アクセス モード、名前、継承性、および容量が指定されたメモリ マップト ファイルを作成します。
public:
static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateFromFile(System::IO::FileStream ^ fileStream, System::String ^ mapName, long capacity, System::IO::MemoryMappedFiles::MemoryMappedFileAccess access, System::IO::HandleInheritability inheritability, bool leaveOpen);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile (System.IO.FileStream fileStream, string? mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access, System.IO.HandleInheritability inheritability, bool leaveOpen);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile (System.IO.FileStream fileStream, string mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access, System.IO.HandleInheritability inheritability, bool leaveOpen);
static member CreateFromFile : System.IO.FileStream * string * int64 * System.IO.MemoryMappedFiles.MemoryMappedFileAccess * System.IO.HandleInheritability * bool -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateFromFile (fileStream As FileStream, mapName As String, capacity As Long, access As MemoryMappedFileAccess, inheritability As HandleInheritability, leaveOpen As Boolean) As MemoryMappedFile
パラメーター
- fileStream
- FileStream
既存のファイルのファイル ストリーム。
- mapName
- String
メモリ マップト ファイルに割り当てる名前。または、プロセス間で共有する意図のない MemoryMappedFile の null
。
- capacity
- Int64
メモリ マップト ファイルに割り当てる最大サイズ (バイト単位)。 容量を の filestream
サイズに設定するには、0 を指定します。
- access
- MemoryMappedFileAccess
メモリ マップト ファイルに対して許可されたアクセス権の種類を指定する列挙値の 1 つ。
このパラメーターは Write に設定できません。
- inheritability
- HandleInheritability
メモリ マップト ファイルへのハンドルを子プロセスが継承できるかどうかを指定する列挙値の 1 つ。 既定値は、None です。
- leaveOpen
- Boolean
MemoryMappedFile が破棄されるときにソース ファイル ストリームを閉じるかどうかを示す値。
戻り値
指定された特性を持つメモリ マップト ファイル。
例外
mapName
が null
または空の文字列です。
- または -
capacity
とファイルの長さがゼロです。
- または -
access
が Write 列挙値または Write 列挙値に設定されていますが、これは許可されません。
- または -
access
が Read に設定されており、capacity
が filestream
より長くなっています。
fileStream
が null
です。
capacity
が 0 未満です。
- または -
capacity
がファイル サイズ未満です。
- または -
access
が有効な MemoryMappedFileAccess 列挙値ではありません。
- または -
inheritability
が有効な HandleInheritability 列挙値ではありません。
適用対象
CreateFromFile(FileStream, String, Int64, MemoryMappedFileAccess, MemoryMappedFileSecurity, HandleInheritability, Boolean)
ディスク上のファイルから、名前、容量、アクセスの種類、セキュリティ アクセス許可、継承性、および破棄要件が指定されたメモリ マップト ファイルを作成します。
public:
static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateFromFile(System::IO::FileStream ^ fileStream, System::String ^ mapName, long capacity, System::IO::MemoryMappedFiles::MemoryMappedFileAccess access, System::IO::MemoryMappedFiles::MemoryMappedFileSecurity ^ memoryMappedFileSecurity, System::IO::HandleInheritability inheritability, bool leaveOpen);
[System.Security.SecurityCritical]
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile (System.IO.FileStream fileStream, string mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access, System.IO.MemoryMappedFiles.MemoryMappedFileSecurity memoryMappedFileSecurity, System.IO.HandleInheritability inheritability, bool leaveOpen);
[<System.Security.SecurityCritical>]
static member CreateFromFile : System.IO.FileStream * string * int64 * System.IO.MemoryMappedFiles.MemoryMappedFileAccess * System.IO.MemoryMappedFiles.MemoryMappedFileSecurity * System.IO.HandleInheritability * bool -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateFromFile (fileStream As FileStream, mapName As String, capacity As Long, access As MemoryMappedFileAccess, memoryMappedFileSecurity As MemoryMappedFileSecurity, inheritability As HandleInheritability, leaveOpen As Boolean) As MemoryMappedFile
パラメーター
- fileStream
- FileStream
メモリ マップト ファイルを作成する既存のファイルへの fileStream
。
- mapName
- String
メモリ マップト ファイルに割り当てる名前。または、プロセス間で共有する意図のない MemoryMappedFile の null
。
- capacity
- Int64
メモリ マップト ファイルに割り当てる最大サイズ (バイト単位)。 容量をディスク上のファイルのサイズに設定するには、0 を指定します。
- access
- MemoryMappedFileAccess
メモリ マップト ファイルに対して許可されたアクセス権の種類を指定する列挙値の 1 つ。
このパラメーターは Write に設定できません。
- memoryMappedFileSecurity
- MemoryMappedFileSecurity
メモリ マップト ファイルに対するファイル アクセスと操作に関して付与することのできるアクセス許可。
このパラメーターは、null
に設定できます。
- inheritability
- HandleInheritability
メモリ マップト ファイルへのハンドルを子プロセスが継承できるかどうかを指定する列挙値の 1 つ。 既定値は、None です。
- leaveOpen
- Boolean
MemoryMappedFile を閉じた後で fileStream
を破棄しない場合は true
。fileStream
を破棄する場合は false
。
戻り値
指定された特性を持つメモリ マップト ファイル。
- 属性
例外
mapName
が空の文字列です。
- または -
capacity
とファイルの長さがゼロです。
- または -
fileStream
が null
です。
capacity
が 0 未満です。
- または -
capacity
がファイル サイズ未満です。
- または -
access
が有効な MemoryMappedFileAccess 列挙値ではありません。
- または -
inheritability
が有効な HandleInheritability 列挙値ではありません。
fileStream
が閉じられました。
mapName
が既に存在します。
注釈
がディスク上のファイルのサイズより大きい場合 capacity
、メモリ マップト ファイルにデータが書き込まれていなくても、ディスク上のファイルは指定された容量に合わせて増やされます。 これが発生しないようにするには、既定の容量に 0 (ゼロ) を指定します。この容量は、内部的にディスク上のファイルのサイズに設定 capacity
されます。
こちらもご覧ください
適用対象
.NET