mirror of
https://github.com/reactos/reactos.git
synced 2024-12-25 16:50:57 +00:00
- fixed definition of IO_COUNTERS structure to make it binary compatible with Windows (and make EPSAPI enumerate threads correctly on Windows)
- cleaned up some makefiles, added dependency tracking - tlist now uses EPSAPI, and, incidentally, a bug has also been fixed svn path=/trunk/; revision=4535
This commit is contained in:
parent
e7940ebdad
commit
1bd4ae1455
16 changed files with 144 additions and 136 deletions
|
@ -619,9 +619,9 @@ typedef struct _QUOTA_LIMITS
|
|||
// Information class 2
|
||||
typedef struct _IO_COUNTERS
|
||||
{
|
||||
ULONG ReadOperationCount;
|
||||
ULONG WriteOperationCount;
|
||||
ULONG OtherOperationCount;
|
||||
LARGE_INTEGER ReadOperationCount;
|
||||
LARGE_INTEGER WriteOperationCount;
|
||||
LARGE_INTEGER OtherOperationCount;
|
||||
LARGE_INTEGER ReadTransferCount;
|
||||
LARGE_INTEGER WriteTransferCount;
|
||||
LARGE_INTEGER OtherTransferCount;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# $Id: makefile,v 1.25 2003/02/02 19:24:15 hyperion Exp $
|
||||
# $Id: makefile,v 1.26 2003/04/14 01:19:06 hyperion Exp $
|
||||
|
||||
PATH_TO_TOP = ../..
|
||||
|
||||
|
@ -50,13 +50,11 @@ TARGET_OBJECTS = \
|
|||
$(SERVICE_OBJECTS) \
|
||||
$(TOKEN_OBJECTS)
|
||||
|
||||
TARGET_CLEAN = \
|
||||
misc/*.o \
|
||||
reg/*.o \
|
||||
sec/*.o \
|
||||
service/*.o \
|
||||
token/*.o
|
||||
DEP_OBJECTS = $(TARGET_OBJECTS)
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
include $(TOOLS_PATH)/depend.mk
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# $Id: makefile,v 1.17 2003/04/13 03:24:26 hyperion Exp $
|
||||
# $Id: makefile,v 1.18 2003/04/14 01:19:06 hyperion Exp $
|
||||
|
||||
PATH_TO_TOP = ../..
|
||||
|
||||
|
@ -24,11 +24,15 @@ TARGET_OBJECTS = \
|
|||
init.o \
|
||||
label.o \
|
||||
media.o
|
||||
|
||||
|
||||
DEP_OBJECTS = $(TARGET_OBJECTS)
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
include $(TOOLS_PATH)/depend.mk
|
||||
|
||||
TARGET_FILES = misc/*.o
|
||||
|
||||
# EOF
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# $Id: makefile,v 1.25 2003/03/20 03:02:07 mtempel Exp $
|
||||
# $Id: makefile,v 1.26 2003/04/14 01:19:06 hyperion Exp $
|
||||
|
||||
PATH_TO_TOP = ../..
|
||||
|
||||
|
@ -18,23 +18,28 @@ TARGET_LFLAGS = -nostartfiles -nostdlib
|
|||
|
||||
TARGET_SDKLIBS = ntdll.a kernel32.a advapi32.a
|
||||
|
||||
TARGET_OBJECTS = $(TARGET_NAME).o
|
||||
MAIN_OBJECTS = main/dllmain.o
|
||||
|
||||
TARGET_CLEAN = main/*.o misc/*.o objects/*.o
|
||||
MISC_OBJECTS = misc/stubs.o misc/stubsa.o misc/stubsw.o misc/win32k.o
|
||||
|
||||
OBJECTS_OBJECTS = \
|
||||
objects/dc.o \
|
||||
objects/line.o \
|
||||
objects/pen.o \
|
||||
objects/bitblt.o \
|
||||
objects/text.o \
|
||||
objects/region.o \
|
||||
objects/brush.o \
|
||||
objects/fillshap.o
|
||||
|
||||
TARGET_OBJECTS = $(MAIN_OBJECTS) $(MISC_OBJECTS) $(OBJECTS_OBJECTS)
|
||||
|
||||
DEP_OBJECTS = $(TARGET_OBJECTS)
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
MAIN_OBJECTS = main/dllmain.o
|
||||
|
||||
MISC_OBJECTS = misc/stubs.o misc/stubsa.o misc/stubsw.o misc/win32k.o
|
||||
|
||||
OBJECTS_OBJECTS = objects/dc.o objects/line.o objects/pen.o objects/bitblt.o objects/text.o objects/region.o objects/brush.o objects/fillshap.o
|
||||
|
||||
OBJECTS = $(MAIN_OBJECTS) $(MISC_OBJECTS) $(OBJECTS_OBJECTS)
|
||||
|
||||
$(TARGET_NAME).o: $(OBJECTS)
|
||||
$(LD) -r $(OBJECTS) -o $(TARGET_NAME).o
|
||||
include $(TOOLS_PATH)/depend.mk
|
||||
|
||||
# EOF
|
||||
|
|
|
@ -14,6 +14,11 @@ TARGET_SDKLIBS = ntdll.a kernel32.a
|
|||
|
||||
TARGET_OBJECTS = $(TARGET_NAME).o
|
||||
|
||||
DEP_OBJECTS = $(TARGET_OBJECTS)
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
include $(TOOLS_PATH)/depend.mk
|
||||
|
||||
|
|
|
@ -14,6 +14,11 @@ TARGET_SDKLIBS = ntdll.a kernel32.a
|
|||
|
||||
TARGET_OBJECTS = $(TARGET_NAME).o
|
||||
|
||||
DEP_OBJECTS = $(TARGET_OBJECTS)
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
include $(TOOLS_PATH)/depend.mk
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# $Id: makefile,v 1.62 2003/04/02 00:23:12 hyperion Exp $
|
||||
# $Id: makefile,v 1.63 2003/04/14 01:19:06 hyperion Exp $
|
||||
|
||||
PATH_TO_TOP = ../..
|
||||
|
||||
|
@ -98,11 +98,14 @@ TARGET_OBJECTS = $(MISC_OBJECTS) $(FILE_OBJECTS) $(THREAD_OBJECTS) \
|
|||
|
||||
#$(NLS_OBJECTS)
|
||||
|
||||
DEP_OBJECTS = $(TARGET_OBJECTS)
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
include $(TOOLS_PATH)/depend.mk
|
||||
|
||||
$(TARGET_NAME).coff: errcodes.rc
|
||||
|
||||
errcodes.rc: $(TARGET_NAME).mc
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# $Id: makefile,v 1.8 2003/02/02 19:24:15 hyperion Exp $
|
||||
# $Id: makefile,v 1.9 2003/04/14 01:19:07 hyperion Exp $
|
||||
|
||||
PATH_TO_TOP = ../..
|
||||
|
||||
|
@ -20,23 +20,18 @@ TARGET_CFLAGS = \
|
|||
|
||||
TARGET_LFLAGS = -nostartfiles -nostdlib
|
||||
|
||||
TARGET_OBJECTS = $(TARGET_NAME).o
|
||||
MISC_OBJECTS = \
|
||||
misc/dllmain.o misc/event.o misc/helpers.o \
|
||||
misc/sndrcv.o misc/stubs.o
|
||||
|
||||
TARGET_CLEAN = misc/*.o
|
||||
TARGET_OBJECTS = $(MISC_OBJECTS)
|
||||
|
||||
DEP_OBJECTS = $(TARGET_OBJECTS)
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
|
||||
MISC_OBJECTS = \
|
||||
misc/dllmain.o misc/event.o misc/helpers.o \
|
||||
misc/sndrcv.o misc/stubs.o
|
||||
|
||||
OBJECTS = $(MISC_OBJECTS)
|
||||
|
||||
$(TARGET_NAME).o: $(OBJECTS)
|
||||
$(LD) -r $(OBJECTS) -o $(TARGET_NAME).o
|
||||
include $(TOOLS_PATH)/depend.mk
|
||||
|
||||
# EOF
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# $Id: makefile,v 1.6 2003/04/13 03:24:26 hyperion Exp $
|
||||
# $Id: makefile,v 1.7 2003/04/14 01:19:07 hyperion Exp $
|
||||
|
||||
PATH_TO_TOP = ../..
|
||||
|
||||
|
@ -20,8 +20,12 @@ TARGET_OBJECTS = \
|
|||
misc/stubs.o \
|
||||
misc/win32.o
|
||||
|
||||
DEP_OBJECTS = $(TARGET_OBJECTS)
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
include $(TOOLS_PATH)/depend.mk
|
||||
|
||||
# EOF
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# $Id: Makefile,v 1.11 2003/02/02 19:24:16 hyperion Exp $
|
||||
# $Id: Makefile,v 1.12 2003/04/14 01:19:07 hyperion Exp $
|
||||
|
||||
PATH_TO_TOP = ../..
|
||||
|
||||
|
@ -19,14 +19,6 @@ TARGET_CFLAGS = \
|
|||
|
||||
TARGET_LFLAGS = -nostartfiles -nostdlib
|
||||
|
||||
TARGET_OBJECTS = $(TARGET_NAME).o
|
||||
|
||||
TARGET_CLEAN = controls/*.o misc/*.o windows/*.o
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
CONTROLS_OBJECTS = \
|
||||
controls/combobox.o \
|
||||
controls/listbox.o \
|
||||
|
@ -72,12 +64,17 @@ WINDOWS_OBJECTS = \
|
|||
windows/rect.o \
|
||||
windows/text.o
|
||||
|
||||
OBJECTS = \
|
||||
TARGET_OBJECTS = \
|
||||
$(MISC_OBJECTS) \
|
||||
$(WINDOWS_OBJECTS) \
|
||||
$(CONTROLS_OBJECTS)
|
||||
|
||||
$(TARGET_NAME).o: $(OBJECTS)
|
||||
$(LD) -r $(OBJECTS) -o $(TARGET_NAME).o
|
||||
DEP_OBJECTS = $(TARGET_OBJECTS)
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
include $(TOOLS_PATH)/depend.mk
|
||||
|
||||
# EOF
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# $Id: makefile,v 1.10 2003/02/02 19:24:16 hyperion Exp $
|
||||
# $Id: makefile,v 1.11 2003/04/14 01:19:07 hyperion Exp $
|
||||
|
||||
PATH_TO_TOP = ../..
|
||||
|
||||
|
@ -26,10 +26,12 @@ TARGET_OBJECTS = \
|
|||
misc/event.o misc/handle.o misc/ns.o \
|
||||
misc/sndrcv.o misc/stubs.o misc/upcall.o
|
||||
|
||||
DEP_OBJECTS = $(TARGET_OBJECTS)
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
TARGET_CLEAN = misc/*.o
|
||||
include $(TOOLS_PATH)/depend.mk
|
||||
|
||||
# EOF
|
||||
|
|
|
@ -21,6 +21,10 @@ TARGET_SDKLIBS = ntdll.a kernel32.a ws2_32.a
|
|||
|
||||
TARGET_OBJECTS = $(TARGET_NAME).o
|
||||
|
||||
DEP_OBJECTS = $(TARGET_OBJECTS)
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
include $(TOOLS_PATH)/depend.mk
|
||||
|
|
|
@ -14,6 +14,10 @@ TARGET_SDKLIBS = ntdll.a kernel32.a
|
|||
|
||||
TARGET_OBJECTS = $(TARGET_NAME).o
|
||||
|
||||
DEP_OBJECTS = $(TARGET_OBJECTS)
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
include $(TOOLS_PATH)/depend.mk
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# $Id: Makefile,v 1.3 2003/04/13 03:24:26 hyperion Exp $
|
||||
# $Id: Makefile,v 1.4 2003/04/14 01:19:08 hyperion Exp $
|
||||
|
||||
PATH_TO_TOP = ../..
|
||||
|
||||
|
@ -14,8 +14,12 @@ TARGET_OBJECTS = \
|
|||
adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.o zutil.o \
|
||||
inflate.o infblock.o inftrees.o infcodes.o infutil.o inffast.o
|
||||
|
||||
DEP_OBJECTS = $(TARGET_OBJECTS)
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
include $(TOOLS_PATH)/depend.mk
|
||||
|
||||
# EOF
|
||||
|
|
|
@ -12,12 +12,16 @@ TARGET_APPTYPE = console
|
|||
|
||||
TARGET_NAME = tlist
|
||||
|
||||
TARGET_SDKLIBS = kernel32.a user32.a ntdll.a
|
||||
TARGET_SDKLIBS = epsapi.a kernel32.a user32.a ntdll.a
|
||||
|
||||
TARGET_OBJECTS = $(TARGET_NAME).o
|
||||
|
||||
DEP_OBJECTS = $(TARGET_OBJECTS)
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
include $(TOOLS_PATH)/depend.mk
|
||||
|
||||
# EOF
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: tlist.c,v 1.3 2003/03/31 21:03:42 hyperion Exp $
|
||||
/* $Id: tlist.c,v 1.4 2003/04/14 01:19:08 hyperion Exp $
|
||||
*
|
||||
* ReactOS Project
|
||||
* TList
|
||||
|
@ -14,6 +14,8 @@
|
|||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include <epsapi.h>
|
||||
|
||||
#ifndef PAGE_SIZE
|
||||
#define PAGE_SIZE 4096
|
||||
#endif
|
||||
|
@ -33,7 +35,31 @@ LPWSTR ThreadStateName [] =
|
|||
NULL
|
||||
};
|
||||
|
||||
void *PsaiMalloc(SIZE_T size)
|
||||
{
|
||||
void * pBuf = NULL;
|
||||
NTSTATUS nErrCode;
|
||||
|
||||
nErrCode = NtAllocateVirtualMemory
|
||||
(
|
||||
NtCurrentProcess(),
|
||||
&pBuf,
|
||||
0,
|
||||
(PULONG)&size,
|
||||
MEM_COMMIT,
|
||||
PAGE_READWRITE
|
||||
);
|
||||
|
||||
if(NT_SUCCESS(nErrCode)) return pBuf;
|
||||
else return NULL;
|
||||
}
|
||||
|
||||
void PsaiFree(void *ptr)
|
||||
{
|
||||
ULONG nSize = 0;
|
||||
|
||||
NtFreeVirtualMemory(NtCurrentProcess(), &ptr, &nSize, MEM_RELEASE);
|
||||
}
|
||||
|
||||
int STDCALL PrintBanner (VOID)
|
||||
{
|
||||
|
@ -78,56 +104,6 @@ BOOL STDCALL AcquirePrivileges (VOID)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
PSYSTEM_PROCESSES STDCALL
|
||||
GetProcessAndThreadsInfo (PULONG Size)
|
||||
{
|
||||
NTSTATUS Status = STATUS_SUCCESS;
|
||||
PSYSTEM_PROCESSES pInfo = NULL;
|
||||
ULONG Length = PAGE_SIZE;
|
||||
ULONG RequiredLength = 0;
|
||||
|
||||
while (TRUE)
|
||||
{
|
||||
Status = NtAllocateVirtualMemory (
|
||||
NtCurrentProcess(),
|
||||
(PVOID) & pInfo,
|
||||
0,
|
||||
& Length,
|
||||
(MEM_RESERVE | MEM_COMMIT),
|
||||
PAGE_READWRITE
|
||||
);
|
||||
if (!NT_SUCCESS(Status) || (NULL == pInfo))
|
||||
{
|
||||
fprintf (stderr, "%s(%d): Status = 0x%08lx\n",__FUNCTION__,__LINE__,Status);
|
||||
return NULL;
|
||||
}
|
||||
/*
|
||||
* Obtain required buffer size (well, try to...)
|
||||
*/
|
||||
if (NtQuerySystemInformation (
|
||||
SystemProcessesAndThreadsInformation,
|
||||
pInfo,
|
||||
Length,
|
||||
& RequiredLength
|
||||
) != STATUS_INFO_LENGTH_MISMATCH)
|
||||
{
|
||||
break;
|
||||
}
|
||||
NtFreeVirtualMemory (NtCurrentProcess(), (PVOID)&pInfo, & Length, MEM_RELEASE);
|
||||
Length += PAGE_SIZE;
|
||||
}
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
NtFreeVirtualMemory (NtCurrentProcess(), (PVOID)&pInfo, & Length, MEM_RELEASE);
|
||||
return NULL;
|
||||
}
|
||||
if (NULL != Size)
|
||||
{
|
||||
*Size = Length;
|
||||
}
|
||||
return pInfo;
|
||||
}
|
||||
|
||||
int STDCALL
|
||||
ProcessHasDescendants (
|
||||
ULONG Pid,
|
||||
|
@ -239,11 +215,13 @@ int STDCALL PrintProcessList (BOOL DisplayTree)
|
|||
LPWSTR Module = L"";
|
||||
LPWSTR Title = L"";
|
||||
|
||||
|
||||
pInfo = GetProcessAndThreadsInfo (& Length);
|
||||
if (NULL == pInfo) return EXIT_FAILURE;
|
||||
pInfoBase = pInfo;
|
||||
do {
|
||||
if (!NT_SUCCESS(PsaCaptureProcessesAndThreads(&pInfoBase)))
|
||||
return EXIT_FAILURE;
|
||||
|
||||
pInfo = PsaWalkFirstProcess(pInfoBase);
|
||||
|
||||
while (pInfo)
|
||||
{
|
||||
if (FALSE == DisplayTree)
|
||||
{
|
||||
GetProcessInfo (pInfo, & Module, & Title);
|
||||
|
@ -262,16 +240,11 @@ int STDCALL PrintProcessList (BOOL DisplayTree)
|
|||
PrintProcessAndDescendants (pInfo, pInfoBase, 0);
|
||||
}
|
||||
}
|
||||
(PBYTE) pInfo += pInfo->NextEntryDelta;
|
||||
|
||||
} while (0 != pInfo->NextEntryDelta);
|
||||
pInfo = PsaWalkNextProcess(pInfo);
|
||||
}
|
||||
|
||||
NtFreeVirtualMemory (
|
||||
NtCurrentProcess(),
|
||||
(PVOID) & pInfoBase,
|
||||
& Length,
|
||||
MEM_RELEASE
|
||||
);
|
||||
PsaFreeCapture(pInfoBase);
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
@ -279,25 +252,28 @@ int STDCALL PrintProcessList (BOOL DisplayTree)
|
|||
|
||||
int STDCALL PrintThreads (PSYSTEM_PROCESSES pInfo)
|
||||
{
|
||||
ULONG ThreadIndex = 0;
|
||||
ULONG i = 0;
|
||||
NTSTATUS Status = STATUS_SUCCESS;
|
||||
HANDLE hThread = INVALID_HANDLE_VALUE;
|
||||
OBJECT_ATTRIBUTES Oa = {0};
|
||||
PVOID Win32StartAddress = NULL;
|
||||
THREAD_BASIC_INFORMATION tInfo = {0};
|
||||
ULONG ReturnLength = 0;
|
||||
PSYSTEM_THREADS CurThread;
|
||||
|
||||
if (NULL == pInfo) return EXIT_FAILURE;
|
||||
|
||||
CurThread = PsaWalkFirstThread(pInfo);
|
||||
|
||||
wprintf (L" NumberOfThreads: %d\n", pInfo->ThreadCount);
|
||||
|
||||
for (ThreadIndex = 0; ThreadIndex < pInfo->ThreadCount; ThreadIndex ++)
|
||||
for (i = 0; i < pInfo->ThreadCount; i ++, CurThread = PsaWalkNextThread(CurThread))
|
||||
{
|
||||
Status = NtOpenThread (
|
||||
& hThread,
|
||||
THREAD_QUERY_INFORMATION,
|
||||
& Oa,
|
||||
& pInfo->Threads[ThreadIndex].ClientId
|
||||
& CurThread->ClientId
|
||||
);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
|
@ -334,10 +310,10 @@ int STDCALL PrintThreads (PSYSTEM_PROCESSES pInfo)
|
|||
|
||||
/* Now print the collected information */
|
||||
wprintf (L" %4d Win32StartAddr:0x%08x LastErr:0x%08x State:%s\n",
|
||||
pInfo->Threads[ThreadIndex].ClientId.UniqueThread,
|
||||
CurThread->ClientId.UniqueThread,
|
||||
Win32StartAddress,
|
||||
0 /* FIXME: ((PTEB) tInfo.TebBaseAddress)->LastErrorValue */,
|
||||
ThreadStateName[pInfo->Threads[ThreadIndex].State]
|
||||
ThreadStateName[CurThread->State]
|
||||
);
|
||||
}
|
||||
return EXIT_SUCCESS;
|
||||
|
@ -356,15 +332,18 @@ GetProcessInfoPid (
|
|||
)
|
||||
{
|
||||
if (NULL == pInfoBase) return NULL;
|
||||
do {
|
||||
|
||||
pInfoBase = PsaWalkFirstProcess(pInfoBase);
|
||||
|
||||
while(pInfoBase)
|
||||
{
|
||||
if (Pid == pInfoBase->ProcessId)
|
||||
{
|
||||
return pInfoBase;
|
||||
}
|
||||
(PBYTE) pInfoBase += pInfoBase->NextEntryDelta;
|
||||
|
||||
} while (0 != pInfoBase->NextEntryDelta);
|
||||
pInfoBase = PsaWalkNextProcess(pInfoBase);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
@ -424,8 +403,8 @@ int STDCALL PrintProcess (char * PidStr)
|
|||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
pInfoBase = GetProcessAndThreadsInfo (& pInfoBaseLength);
|
||||
if (NULL == pInfoBase) return EXIT_FAILURE;
|
||||
if (!NT_SUCCESS(PsaCaptureProcessesAndThreads (&pInfoBase)))
|
||||
return EXIT_FAILURE;
|
||||
|
||||
pInfo = GetProcessInfoPid (pInfoBase, (DWORD) ClientId.UniqueProcess);
|
||||
if (NULL == pInfo) return EXIT_FAILURE;
|
||||
|
@ -449,13 +428,8 @@ int STDCALL PrintProcess (char * PidStr)
|
|||
PrintThreads (pInfo);
|
||||
|
||||
PrintModules ();
|
||||
|
||||
NtFreeVirtualMemory (
|
||||
NtCurrentProcess(),
|
||||
(PVOID) & pInfoBase,
|
||||
& pInfoBaseLength,
|
||||
MEM_RELEASE
|
||||
);
|
||||
|
||||
PsaFreeCapture(pInfoBase);
|
||||
|
||||
NtClose (hProcess);
|
||||
|
||||
|
|
Loading…
Reference in a new issue