2015-11-23 1 views
0
  1. L'exécution de MiniDumpWriteDump dans le processus spécifique fournit un fichier de vidage sain.MiniDumpWriteDump (C#) produit des fichiers de vidage de longueur nulle pour un processus spécifique

  2. exécution MiniDumpWriteDump du processus externe, où le point hProcess et processId au processus spécifique mentionné, fournit un fichier de vidage de longueur zéro

  3. Identique # 2 montrant juste FireFox par exemple fournit le fichier de vidage sain

Le processus spécifique que j'essaye de sauvegarder est exécuté avec des privilèges faibles autant que je sache, et mon processus externe est exécuté à partir de la fenêtre Administrateur CMD.

[DllImport("dbghelp.dll", 
      EntryPoint = "MiniDumpWriteDump", 
      CallingConvention = CallingConvention.Winapi, 
      CharSet = CharSet.Unicode, 
      ExactSpelling = true, 
      SetLastError = true)] 
     private static extern bool MiniDumpWriteDump(IntPtr hProcess, 
      uint processId, 
      SafeHandle hFile, 
      uint dumpType, 
      IntPtr expParam, 
      IntPtr userStreamParam, 
      IntPtr callbackParam); 

Notes:

  • Je rinçage, la fermeture et à bien le flux de fichiers
  • MiniDumpWriteDump return false et retourne GetLastWin32Error: -2147024597
  • Le processus spécifique mentionné (un point net server project) a les mêmes options de sécurité que FireFox (le vidage fonctionne sur le processus Notepad ++ par exemple).

Répondre

0

Ok .. trouvé la solution pour que ..

Le projet de processus externe a été construit pour la plate-forme « de AnyCPU » (et comme il n'exécute non seulement 64 les commandes de bits, il a été en cours d'exécution pour 32 -bit). Le réglage en x64 a permis de sauvegarder un autre processus de 64 bits.

Et je recommande à tous ceux qui rencontrent ce problème, de créer des projets séparés, un pour 32 bits et un pour 64 bits.