本文整理汇总了C#中MemoryMappedFileAccess.ToMapViewFileAccess方法的典型用法代码示例。如果您正苦于以下问题:C# MemoryMappedFileAccess.ToMapViewFileAccess方法的具体用法?C# MemoryMappedFileAccess.ToMapViewFileAccess怎么用?C# MemoryMappedFileAccess.ToMapViewFileAccess使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MemoryMappedFileAccess
的用法示例。
在下文中一共展示了MemoryMappedFileAccess.ToMapViewFileAccess方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CreateView
internal static MemoryMappedView CreateView(SafeMemoryMappedFileHandle safeMemoryMappedFileHandle, MemoryMappedFileAccess access, long offset, long size)
{
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa366548(v=vs.85).aspx
UnsafeNativeMethods.SYSTEM_INFO info = new UnsafeNativeMethods.SYSTEM_INFO();
UnsafeNativeMethods.GetSystemInfo(ref info);
// To calculate where to start the file mapping, round down the
// offset of the data into the memory-mapped file to the nearest multiple of the
// system allocation granularity.
long fileMapStart = (offset / info.dwAllocationGranularity) * info.dwAllocationGranularity;
// How large will the file mapping object be?
long mapViewSize = (offset % info.dwAllocationGranularity) + size;
// The data of interest is not necessarily at the beginning of the
// view, so determine how far into the view to set the pointer.
long viewDelta = offset - fileMapStart;
SafeMemoryMappedViewHandle safeHandle = UnsafeNativeMethods.MapViewOfFile(safeMemoryMappedFileHandle, access.ToMapViewFileAccess(), (ulong)fileMapStart, new UIntPtr((ulong)mapViewSize));
var lastWin32Error = Marshal.GetLastWin32Error();
if (safeHandle.IsInvalid)
{
if (lastWin32Error == UnsafeNativeMethods.ERROR_FILE_NOT_FOUND)
throw new FileNotFoundException();
throw new System.IO.IOException(UnsafeNativeMethods.GetMessage(lastWin32Error));
}
return new MemoryMappedView(safeHandle, viewDelta, size);
}