我想使用MemoryMappedFile来访问现有的二进制文件.如果这甚至可能,或者我是一个疯狂的人?
想法是将现有的二进制文件直接映射到存储器以进行某些优选更高速的操作.或者至少看看这些东西是如何起作用的.
using System.IO.MemoryMappedFiles;
System.IO.FileInfo fi = new System.IO.FileInfo(@"C:\testparsercap.pcap");
MemoryMappedFileSecurity sec = new MemoryMappedFileSecurity();
System.IO.FileStream file = fi.Open(System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite, System.IO.FileShare.ReadWrite);
MemoryMappedFile mf = MemoryMappedFile.CreateFromFile(file, "testpcap", fi.Length, MemoryMappedFileAccess.Read, sec, System.IO.HandleInheritability.Inheritable, true);
MemoryMappedViewAccessor FileMapView = mf.CreateViewAccessor();
PcapHeader head = new PcapHeader();
FileMapView.Read<PcapHeader>(0, out head);
Run Code Online (Sandbox Code Playgroud)
我在mf.CreateViewAccessor()行上未处理System.UnauthorizedAccessException(Message =访问路径被拒绝.).
我不认为它是文件权限,因为我作为一个不安全的管理员用户运行,并且没有任何其他程序打开可能对文件具有读锁定.这是在禁用UAC的Vista上.
如果它根本不可能而我错过了文档中的内容,请告诉我.我几乎找不到任何引用.net 4.0的这个功能的东西
谢谢!