0
  1. 特定のプロセス内で MiniDumpWriteDump を実行すると、正常なダンプ ファイルが提供されます。

  2. hProcess と processId が前述の特定のプロセスを指す外部プロセスから MiniDumpWriteDump を実行すると、長さゼロのダンプ ファイルが提供されます。

  3. #2 と同じように、たとえば FireFox を指すだけで、正常なダンプ ファイルが提供されます

ダンプしようとしている特定のプロセスは、私が知る限り低い特権で実行されており、外部プロセスは管理者の 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);

ノート:

  • ファイルストリームを正しくフラッシュ、クローズ、破棄しています
  • MiniDumpWriteDump は false を返し、GetLastWin32Error は次を返します: -2147024597
  • 上記の特定のプロセス (ドット ネット サーバー プロジェクト) には、FireFox と同じセキュリティ オプションがあります (たとえば、ダンプは Notepad++ プロセスで機能します)。
4

1 に答える 1