=D2=D1=D6=AA=D2=BB=B8=F6=BD=F8=B3=CC=B5=C4pid,=C8=E7=BA=
=CE=BB=F1=B5=C3=C4=B3=CA=B1=BF=CC=B8=C3=BD=F8=B3=CC=D5=BC=D3=C3=B5=C4CPU=A1=
=A2=C4=DA=B4=E6=A1=A2=D0=E9=C4=E2=C4=DA=B4=E6=A1=A2=BE=E4=B1=FA=CA=FD=B5=C8=
=D0=C5=CF=A2=A3=A1 |
=
=D2=D1=D6=AA=D2=BB=B8=F6=BD=F8=B3=CC=B5=C4pid,=C8=E7=BA=CE=BB=F1=B5=
=C3=C4=B3=CA=B1=BF=CC=B8=C3=BD=F8=B3=CC=D5=BC=D3=C3=B5=C4CPU=A1=A2=C4=DA=B4=
=E6=A1=A2=D0=E9=C4=E2=C4=DA=B4=E6=A1=A2=BE=E4=B1=FA=CA=FD=B5=C8=D0=C5=CF=A2=
=A3=A1 =D3=C3c=BB=F2Java =CA=B5=CF=D6=A1=A3=BB=F2=B8=F8=B3=F6c=B4=
=FA=C2=EB
| |
|
=BB=D8=B8=B4=C4=DA=C8=DD |
=
=A1=BEiu_81=A1=BF: #include <windows.h> #include&nbs=
p;<stdio.h> #include <stdlib.h>
#ifndef S=
TATUS_INFO_LENGTH_MISMATCH #define STATUS_INFO_LENGTH_MISMATCH&nb=
sp;((DWORD )0xC0000004L) #endif
typedef struct {FILETIME ftCreationTime; DWORD dwUnknown1; DWORD d=
wStartAddress; DWORD dwOwningPID; DWORD dwThreadID; DW=
ORD dwCurrentPriority; DWORD dwBasePriority; DWORD d=
wContextSwitches; DWORD dwThreadState; DWORD dwWaitReason=
; DWORD dwUnknown2[5]; } THREADINFO, *PTHREADINFO; #pragma warning( disable:4200 ) // Zero&nb=
sp;sized array typedef struct { DWORD dwRelativeO=
ffset; //=CF=E0=B6=D4=C6=AB=D2=C6=C1=BF DWORD dwThreadCount;=
//=CF=DF=B3=CC=CA=FD=C4=BF DWORD dwUnknown1[6]; FILETIME=
pfCreateTime; DWORD dwUnknown2[5]; WCHAR* psz=
ProcessName; //=B2=BB=B4=F8=C2=B7=BE=B6=B5=C4=C3=FB=B3=C6 DWORD&n=
bsp;dwBasePriority; //=D3=C5=CF=C8=BC=B6 DWORD dwProce=
ssID; //=BD=F8=B3=CCID DWORD dwParentProcessID; //=B8=B8=
=BD=F8=B3=CCID DWORD dwHandleCount; //=BE=E4=B1=FA=CA=FD=C4=BF=
DWORD dwUnknown3; DWORD dwUnknown4; DWORD dwVirt=
ualBytesPeak; DWORD dwTotalVirtualBytes; DWORD dwPageFaul=
ts; DWORD dwWorkingSetPeak; DWORD dwTotalWorkingSet=
; //=D5=BC=D3=C3=CE=EF=C0=ED=C4=DA=B4=E6=B4=F3=D0=A1 DWORD&=
nbsp;dwPeakPagedPoolUsagePages; DWORD dwTotalPagedPoolUsagePages;=
DWORD dwPeakNonPagedPoolUsagePages; DWORD dwTotalNonPage=
dPoolUsagePages; DWORD dwPageFileBytesPeak; DWORD dwPriva=
teBytes; DWORD dwPageFileBytes; DWORD dwUnknown7[4]; T=
HREADINFO ti[0]; } _PROCESSINFO, *PPROCESSINFO; #pra=
gma warning( default:4200 )
DWORD (__stdcall&n=
bsp;*NtQuerySystemInformation )(ULONG,PVOID,ULONG,ULONG);
voi=
d ShowPI(void) { PBYTE pbyInfo =3D NULL; PPR=
OCESSINFO pProcessInfo; DWORD dwSize =3D 0x4000;WCHAR *pname;
if (!NtQuerySystemInformation) NtQuer=
ySystemInformation=3D(DWORD (__stdcall*)(ULONG,PVOID,ULONG,ULONG)) GetProcAddress(GetModuleHandle("ntdll.dll"),"NtQuerySystemInformati=
on");
pbyInfo=3D(PBYTE) malloc(dwSize);
if (pbyIn=
fo) { for(;;) { memset(pbyInfo,0,dwSize);
if(NtQue=
rySystemInformation(5,pbyInfo,dwSize,0)!=3DSTATUS_INFO_LENGTH_MISMATCH ) break;
dwSize +=3D 0x1000;
pbyInfo=3D(PBYTE=
) realloc(pbyInfo,dwSize); }
pProcessInfo =3D (&=
nbsp;PPROCESSINFO ) pbyInfo;
for(;;) { pname=3DpPr=
ocessInfo->pszProcessName;
if (!pname) pname=3D(L"I=
dle");
printf("%-40ls %-12lu %12luK\n", pname, pPr=
ocessInfo->dwProcessID, pProcessInfo->dwTotalWorkingSet/=
1024ul );
if ( pProcessInfo->dwRelativeOffset&=
nbsp;=3D=3D 0 ) break;
pProcessInfo=3D(PPROCESSIN=
FO)((PBYTE)pProcessInfo+pProcessInfo->dwRelativeOffset); } <=
BR>free( pbyInfo ); } }
int main(void)<=
BR>{ ShowPI(); getchar(); return 0; }
=A1=BEt=
odototry=A1=BF: mark =CE=B4=B9=AB=BF=AA=B5=C4api =C7=BF
=A1=
=BEzhang1007=A1=BF: =C8=E7=BA=CE=B5=C3=B5=BDIO=BA=CDcpu=B5=C4=CA=B9=D3=
=C3=C2=CA=C4=C7
=A1=BEYanYin=A1=BF: mark
=A1=BElaiwushen=
g=A1=BF: mark
=A1=BEjixingzhong=A1=BF: http://topic.csdn=
.net/t/20050510/16/3995670.html
=A1=BEjixingzhong=A1=BF: Perfor=
mace counters & To=
olhelp API.
| | <=
/TBODY> |
|
|
=D7=EE=D0=C2=D5=D0=C6=B8=D0=C5=CF=A2 |
=
| | |