Skip to content

Commit f3d42f8

Browse files
committed
Update PhSvcApiWriteMiniDumpProcess with PhCreateSnapshot support
1 parent ee94188 commit f3d42f8

File tree

1 file changed

+13
-57
lines changed

1 file changed

+13
-57
lines changed

ProcessHacker/phsvc/svcapi.c

Lines changed: 13 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* server API
44
*
55
* Copyright (C) 2011-2015 wj32
6-
* Copyright (C) 2019-2021 dmex
6+
* Copyright (C) 2019-2022 dmex
77
*
88
* This file is part of Process Hacker.
99
*
@@ -32,7 +32,6 @@
3232

3333
#include <accctrl.h>
3434
#include <dbghelp.h>
35-
#include <processsnapshot.h>
3635
#include <symprv.h>
3736

3837
typedef struct _PHSVCP_CAPTURED_RUNAS_SERVICE_PARAMETERS
@@ -1430,31 +1429,18 @@ NTSTATUS PhSvcApiWriteMiniDumpProcess(
14301429
MINIDUMP_CALLBACK_INFORMATION callbackInfo = { 0 };
14311430
HANDLE processHandle = UlongToHandle(Payload->u.WriteMiniDumpProcess.i.LocalProcessHandle);
14321431
ULONG processDumpType = Payload->u.WriteMiniDumpProcess.i.DumpType;
1433-
HPSS snapshotHandle = NULL;
1432+
HANDLE snapshotHandle = NULL;
14341433

1435-
if (PssCaptureSnapshot_Import())
1434+
if (NT_SUCCESS(PhCreateProcessSnapshot(&snapshotHandle, processHandle, NULL)))
14361435
{
1437-
PssCaptureSnapshot_Import()(
1438-
processHandle,
1439-
PSS_CAPTURE_VA_CLONE | PSS_CAPTURE_VA_SPACE | PSS_CAPTURE_VA_SPACE_SECTION_INFORMATION |
1440-
PSS_CAPTURE_IPT_TRACE | PSS_CAPTURE_HANDLE_TRACE | PSS_CAPTURE_HANDLES | PSS_CAPTURE_HANDLE_BASIC_INFORMATION |
1441-
PSS_CAPTURE_HANDLE_TYPE_SPECIFIC_INFORMATION | PSS_CAPTURE_HANDLE_NAME_INFORMATION |
1442-
PSS_CAPTURE_THREADS | PSS_CAPTURE_THREAD_CONTEXT | PSS_CREATE_USE_VM_ALLOCATIONS,
1443-
CONTEXT_ALL,
1444-
&snapshotHandle
1445-
);
1446-
1447-
if (snapshotHandle)
1448-
{
1449-
processDumpType =
1450-
MiniDumpWithFullMemory |
1451-
MiniDumpWithHandleData |
1452-
MiniDumpWithUnloadedModules |
1453-
MiniDumpWithFullMemoryInfo |
1454-
MiniDumpWithThreadInfo |
1455-
MiniDumpIgnoreInaccessibleMemory |
1456-
MiniDumpWithIptTrace;
1457-
}
1436+
processDumpType =
1437+
MiniDumpWithFullMemory |
1438+
MiniDumpWithHandleData |
1439+
MiniDumpWithUnloadedModules |
1440+
MiniDumpWithFullMemoryInfo |
1441+
MiniDumpWithThreadInfo |
1442+
MiniDumpIgnoreInaccessibleMemory |
1443+
MiniDumpWithIptTrace;
14581444
}
14591445

14601446
callbackInfo.CallbackRoutine = PhpProcessMiniDumpCallback;
@@ -1472,22 +1458,7 @@ NTSTATUS PhSvcApiWriteMiniDumpProcess(
14721458
{
14731459
if (snapshotHandle)
14741460
{
1475-
PSS_VA_CLONE_INFORMATION processInfo;
1476-
1477-
if (PssQuerySnapshot_Import() && PssQuerySnapshot_Import()(
1478-
snapshotHandle,
1479-
PSS_QUERY_VA_CLONE_INFORMATION,
1480-
&processInfo,
1481-
sizeof(PSS_VA_CLONE_INFORMATION)
1482-
) == ERROR_SUCCESS)
1483-
{
1484-
NtClose(processInfo.VaCloneHandle);
1485-
}
1486-
1487-
if (PssFreeSnapshot_Import())
1488-
{
1489-
PssFreeSnapshot_Import()(processHandle, snapshotHandle);
1490-
}
1461+
PhFreeProcessSnapshot(snapshotHandle, processHandle);
14911462
}
14921463

14931464
return STATUS_SUCCESS;
@@ -1498,22 +1469,7 @@ NTSTATUS PhSvcApiWriteMiniDumpProcess(
14981469

14991470
if (snapshotHandle)
15001471
{
1501-
PSS_VA_CLONE_INFORMATION processInfo;
1502-
1503-
if (PssQuerySnapshot_Import() && PssQuerySnapshot_Import()(
1504-
snapshotHandle,
1505-
PSS_QUERY_VA_CLONE_INFORMATION,
1506-
&processInfo,
1507-
sizeof(PSS_VA_CLONE_INFORMATION)
1508-
) == ERROR_SUCCESS)
1509-
{
1510-
NtClose(processInfo.VaCloneHandle);
1511-
}
1512-
1513-
if (PssFreeSnapshot_Import())
1514-
{
1515-
PssFreeSnapshot_Import()(processHandle, snapshotHandle);
1516-
}
1472+
PhFreeProcessSnapshot(snapshotHandle, processHandle);
15171473
}
15181474

15191475
if (error == HRESULT_FROM_WIN32(ERROR_INVALID_PARAMETER))

0 commit comments

Comments
 (0)