Quería jugar utilizando un MemoryMappedFile para acceder a un archivo binario existente. Si esto es posible o soy una persona loca?UnauthorizedAccessException en MemoryMappedFile en C# 4
La idea sería asignar el archivo binario existente directamente a la memoria para algunas operaciones preferiblemente de mayor velocidad. O al menos ver cómo funcionaban estas cosas.
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);
me sale System.UnauthorizedAccessException era no controlada (Mensaje = acceso a la ruta denegado.) En la línea mf.CreateViewAccessor().
No creo que sea un archivo de permisos, ya que me estoy ejecutando como un buen usuario administrador inseguro, y no hay ningún otro programa abierto que pueda tener un bloqueo de lectura en el archivo. Esto está en Vista con UAC deshabilitado.
Si simplemente no es posible y omití algo en la documentación, házmelo saber. Apenas podía encontrar algo que hiciera referencia a esta función de .net 4.0
¡Gracias!
Para crear un descriptor de acceso para todo el archivo, usar 'CreateViewAccessor (0, 0, MemoryMappedFileAccess.Read)' –