2012-05-29 3 views
1

Notre application fonctionne sur WinCE5.0 (écrit en .net cf)MMF (Exclusif/non fichier mappé en mémoire partagée)

En raison de certaines raisons, nous avons dû créer un fichier MMF pour une utilisation par notre application (le fichier MMF devrait être utilisé par notre application seulement).

Maintenant ce que nous avons remarqué à des moments aléatoires (nous ne sommes pas en mesure de trouver exactement quand et dans quelles circonstances) le fichier MMF est utilisé par un autre processus, qui écrit les données sur elle. Cela rend notre fichier MMF corrompu.

S'il vous plaît laissez-nous savoir comment éviter cela. En d'autres termes, nous voulons avoir le MMF exclusivement pour notre application et non partagé.

Merci.

Répondre

1

Les fichiers mappés en mémoire sur Windows CE sont toujours mappés dans une zone de mappage de fichiers partagée de l'espace d'adressage virtuel. Tous les processus ont un accès en lecture-écriture à cette zone. Vous ne pouvez pas protéger cette zone contre l'écrasement par un autre processus. Le .NET Compact Framework lui-même utilise le mappage de la mémoire pour mapper les assemblys chargés dans cette zone, pour éviter de les charger dans le slot de processus. Je m'attendrais à ce que vous rencontriez d'autres problèmes, comme obtenir TypeLoadException, MissingMethodException, ou ExecutionEngineException lorsque .NETCF essaie de code JIT à partir d'un assembly qui a été endommagé. Etes-vous sûr de ne pas fermer la poignée de mappage de fichier ou le handle de fichier sous-jacent? Cela pourrait amener Windows à penser que la mémoire est libre et à la réutiliser à d'autres fins.

Questions connexes