我想玩弄使用MemoryMappedFile访问现有二进制文件。 如果这甚至在所有可能的还是我一个疯狂的人?
该想法是将现有的二进制文件直接映射到存储器,用于一些优选更高速度的操作。 或ATLEAST看到这些东西是如何工作的。
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);
我得到System.UnauthorizedAccessException的是未处理(消息=对路径的访问被拒绝。)在mf.CreateViewAccessor()线。
我不认为这是文件的权限,因为我正在为一个不错的不安全管理员用户,有没有打开任何其它程序可能对文件的读锁。 这是在Vista UAC的禁用。
如果这是根本不可能的,我错过了一些文档中,请让我知道。 我几乎找不到在.NET 4.0的所有引用这个功能什么
谢谢!