Volevo giocare con l'utilizzo di un MemoryMappedFile per accedere a un file binario esistente. Se questo è anche possibile o sono una persona pazza?Non autorizzatoAccessException su MemoryMappedFile in C# 4
L'idea sarebbe quella di mappare il file binario esistente direttamente in memoria per alcune operazioni preferibilmente più veloci. O almeno vedere come funzionavano queste cose.
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);
ottengo System.UnauthorizedAccessException è stata gestita (Messaggio = L'accesso al percorso è negato.) Sulla linea mf.CreateViewAccessor().
Non penso sia un file-permessi, dato che sto correndo come un simpatico utente amministratore insicuro, e non ci sono altri programmi aperti che potrebbero avere un blocco di lettura sul file. Questo è su Vista con UAC disabilitato.
Se semplicemente non è possibile e ho perso qualcosa nella documentazione, fatemelo sapere. Riuscivo a malapena a trovare niente affatto riferimento a questa funzionalità di .NET 4.0
Grazie!
Per creare una funzione di accesso per l'intero file, utilizzare 'CreateViewAccessor (0, 0, MemoryMappedFileAccess.Read)' –