Я хотел поиграть с использованием 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);
Я получаю исключение System.UnauthorizedAccessException (сообщение = доступ к пути запрещен.) В строке mf.CreateViewAccessor ().
Я не думаю, что это права доступа к файлам, так как я работаю как хороший незащищенный пользователь-администратор, и нет никаких других открытых программ, которые могли бы иметь блокировку чтения файла. Это на Vista с отключенным UAC.
Если это просто невозможно, и я что-то пропустил в документации, пожалуйста, дайте мне знать. Я едва мог найти что-либо вообще, ссылаясь на эту функцию .net 4.0
Спасибо!