本文整理汇总了C#中System.IO.MemoryMappedFiles.MemoryMappedViewAccessor类的典型用法代码示例。如果您正苦于以下问题:C# MemoryMappedViewAccessor类的具体用法?C# MemoryMappedViewAccessor怎么用?C# MemoryMappedViewAccessor使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
MemoryMappedViewAccessor类属于System.IO.MemoryMappedFiles命名空间,在下文中一共展示了MemoryMappedViewAccessor类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetPrivateOffset
// This is a Reflection hack to workaround clr bug 6441.
//
// MemoryMappedViewAccessor.SafeMemoryMappedViewHandle.AcquirePointer returns a pointer
// that has been aligned to SYSTEM_INFO.dwAllocationGranularity. Unfortunately the
// offset from this pointer to our requested offset into the MemoryMappedFile is only
// available through the UnmanagedMemoryStream._offset field which is not exposed publicly.
//
private long GetPrivateOffset(MemoryMappedViewAccessor stream)
{
System.Reflection.FieldInfo unmanagedMemoryStreamOffset = typeof(MemoryMappedViewAccessor).GetField("m_view", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.GetField);
object memoryMappedView = unmanagedMemoryStreamOffset.GetValue(stream);
System.Reflection.PropertyInfo memoryMappedViewPointerOffset = memoryMappedView.GetType().GetProperty("PointerOffset", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.GetProperty);
return (long)memoryMappedViewPointerOffset.GetValue(memoryMappedView);
}
示例2: CVarBuf
public CVarBuf(MemoryMappedViewAccessor mapView, CiRSDKHeader header)
{
FileMapView = mapView;
Header = header;
VarHeaderSize = Marshal.SizeOf(typeof(VarHeader));
VarBufSize = Marshal.SizeOf(typeof(VarBuf));
}
示例3: MappedBuffer
public MappedBuffer(MemoryMappedViewAccessor view, int pos, int len)
{
this.view = view;
this.pos = pos;
this.len = len;
Check.Slice(pos, len, view.Capacity);
}
示例4: MemoryMappedFileBlock
internal unsafe MemoryMappedFileBlock(MemoryMappedViewAccessor accessor)
{
byte* ptr = null;
accessor.SafeMemoryMappedViewHandle.AcquirePointer(ref ptr);
ptr += GetPrivateOffset(accessor);
this.accessor = accessor;
this.pointer = (IntPtr)ptr;
}
示例5: MemoryMappedReadWriteContext
public MemoryMappedReadWriteContext(MemoryMappedViewAccessor viewAccessor,
MemoryMappedViewStream viewStream, Mutex accessMutex, bool lockOnCreate)
{
ViewAccessor = viewAccessor;
ViewStream = viewStream;
_accessMutex = accessMutex;
if (lockOnCreate)
Lock();
}
示例6: MapContent
void MapContent()
{
if (_accessor != null) return;
_memoryMappedFile = MemoryMappedFile.CreateFromFile(_stream, null, 0, MemoryMappedFileAccess.ReadWrite, null, HandleInheritability.None, true);
_accessor = _memoryMappedFile.CreateViewAccessor();
_accessor.SafeMemoryMappedViewHandle.AcquirePointer(ref _pointer);
}
示例7: BitmapBroadcaster
public BitmapBroadcaster()
{
file = MemoryMappedFile.CreateOrOpen("OpenNiVirtualCamFrameData", fileSize, MemoryMappedFileAccess.ReadWrite);
memoryAccessor = file.CreateViewAccessor(0, fileSize, MemoryMappedFileAccess.ReadWrite);
if (hasServer())
throw new Exception("Only one server is allowed.");
}
示例8: MemoryMapReader
public MemoryMapReader(string file)
{
var fileInfo = new FileInfo(file);
Length = (int)fileInfo.Length;
// Ideally we would use the file ID in the mapName, but it is not
// easily available from C#.
var mapName = $"{fileInfo.FullName.Replace("\\", "-")}-{Length}";
lock (FileLocker)
{
try
{
_memoryMappedFile = MemoryMappedFile.OpenExisting(mapName, MemoryMappedFileRights.Read);
}
catch (Exception ex) when (ex is IOException || ex is NotImplementedException)
{
using (
var stream = new FileStream(file, FileMode.Open, FileAccess.Read,
FileShare.Delete | FileShare.Read))
{
_memoryMappedFile = MemoryMappedFile.CreateFromFile(stream, mapName, Length,
MemoryMappedFileAccess.Read, null, HandleInheritability.None, false);
}
}
}
_view = _memoryMappedFile.CreateViewAccessor(0, Length, MemoryMappedFileAccess.Read);
}
示例9: MemoryMappedFileCheckpoint
public MemoryMappedFileCheckpoint(string filename, string name, bool cached, bool mustExist = false, long initValue = 0)
{
_filename = filename;
_name = name;
_cached = cached;
var old = File.Exists(_filename);
_fileStream = new FileStream(_filename,
mustExist ? FileMode.Open : FileMode.OpenOrCreate,
FileAccess.ReadWrite,
FileShare.ReadWrite);
_file = MemoryMappedFile.CreateFromFile(_fileStream,
Guid.NewGuid().ToString(),
sizeof(long),
MemoryMappedFileAccess.ReadWrite,
new MemoryMappedFileSecurity(),
HandleInheritability.None,
false);
_accessor = _file.CreateViewAccessor(0, 8);
if (old)
_last = _lastFlushed = ReadCurrent();
else
{
_last = initValue;
Flush();
}
}
示例10: SRHSharedData
public SRHSharedData()
{
m_Mmf = MemoryMappedFile.CreateNew(@"SimpleROHook1008",
Marshal.SizeOf(typeof(StSHAREDMEMORY)),
MemoryMappedFileAccess.ReadWrite);
if (m_Mmf == null)
MessageBox.Show("CreateOrOpen MemoryMappedFile Failed.");
m_Accessor = m_Mmf.CreateViewAccessor();
byte* p = null;
m_Accessor.SafeMemoryMappedViewHandle.AcquirePointer(ref p);
m_pSharedMemory = (StSHAREDMEMORY*)p;
write_packetlog = false;
freemouse = false;
m2e = false;
fix_windowmode_vsyncwait = false;
show_framerate = false;
objectinformation = false;
_44khz_audiomode = false;
cpucoolerlevel = 0;
configfilepath = "";
musicfilename = "";
executeorder = false;
g_hROWindow = 0;
}
示例11: Dispose
public void Dispose()
{
if (_accessor != null)
_accessor.Dispose();
_accessor = null;
}
示例12: Startup
//List<CVarHeader> VarHeaders = new List<CVarHeader>();
public bool Startup()
{
if (IsInitialized) return true;
try
{
iRacingFile = MemoryMappedFile.OpenExisting(Defines.MemMapFileName);
FileMapView = iRacingFile.CreateViewAccessor();
VarHeaderSize = Marshal.SizeOf(typeof(VarHeader));
var hEvent = OpenEvent(Defines.DesiredAccess, false, Defines.DataValidEventName);
var are = new AutoResetEvent(false);
are.Handle = hEvent;
var wh = new WaitHandle[1];
wh[0] = are;
WaitHandle.WaitAny(wh);
Header = new CiRSDKHeader(FileMapView);
GetVarHeaders();
IsInitialized = true;
}
catch (Exception)
{
return false;
}
return true;
}
示例13: MumbleLink
public MumbleLink()
{
if (mmFile == null)
{
mmFile = MemoryMappedFile.CreateOrOpen("MumbleLink", Marshal.SizeOf(data), MemoryMappedFileAccess.ReadWrite);
mmAccessor = mmFile.CreateViewAccessor(0, Marshal.SizeOf(data));
}
}
示例14: cFileMap
public cFileMap(FileStream stream, FileMapProtect protect, int offset, int length)
{
MemoryMappedFileAccess cProtect = (protect == FileMapProtect.ReadWrite) ? MemoryMappedFileAccess.ReadWrite : MemoryMappedFileAccess.Read;
_length = length;
_mappedFile = MemoryMappedFile.CreateFromFile(stream, stream.Name, _length, cProtect, null, HandleInheritability.None, true);
_mappedFileAccessor = _mappedFile.CreateViewAccessor(offset, _length, cProtect);
_addr = _mappedFileAccessor.SafeMemoryMappedViewHandle.DangerousGetHandle();
}
示例15: MemoryMappedFileCommunicator
public MemoryMappedFileCommunicator(MemoryMappedFile rpMemoryMappedFile, long rpOffset, long rpSize, MemoryMappedFileAccess rpAccess)
{
r_MemoryMappedFile = rpMemoryMappedFile;
r_ViewAccessor = rpMemoryMappedFile.CreateViewAccessor(rpOffset, rpSize, rpAccess);
ReadPosition = -1;
r_WritePosition = -1;
}