Je voulais jouer avec un MemoryMappedFile pour accéder à un fichier binaire existant. Si c'est même possible ou suis-je une folle?UnauthorizedAccessException sur MemoryMappedFile en C# 4
L'idée serait de mapper le fichier binaire existant directement à la mémoire pour certaines opérations de préférence à vitesse plus élevée. Ou pour voir au moins comment ces choses ont fonctionné.
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);
je reçois System.UnauthorizedAccessException était unhandled (Message = L'accès au chemin d'accès est refusé.) Sur la ligne mf.CreateViewAccessor().
Je ne pense pas que ce soit des permissions de fichiers, car je cours en tant qu'utilisateur administrateur non sécurisé, et il n'y a pas d'autres programmes ouverts qui pourraient avoir un verrou en lecture sur le fichier. C'est sur Vista avec UAC désactivé.
Si ce n'est tout simplement pas possible et que j'ai manqué quelque chose dans la documentation, faites-le moi savoir. Je pouvais à peine trouver quoi que ce soit référençant cette fonctionnalité de .net 4.0
Merci!
Pour créer un accesseur pour le fichier entier, utilisez 'CreateViewAccessor (0, 0, MemoryMappedFileAccess.Read)' –