我想尝试使用 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);
我在 mf.CreateViewAccessor() 行上得到 System.UnauthorizedAccessException was unhandled (Message=Access to the path is denied.)。
我不认为这是文件权限,因为我作为一个很好的不安全管理员用户运行,并且没有打开任何其他可能对文件具有读锁的程序。这是在禁用 UAC 的 Vista 上。
如果这根本不可能并且我错过了文档中的某些内容,请告诉我。我几乎找不到任何引用 .net 4.0 的这个特性的东西
谢谢!