12. [pywin32] GetProcess... 관련 함수 - 2
1. int = GetGuiResources(Process, Flags )
프로세스의 GDI 혹은 USER Object 핸들 갯수를 반환하는 함수입니다.
GDI Object는 그래픽 출력과 관련있는 Object를 말하는 듯 합니다.(ex. bitmap, brush...)
- MSDN 사이트의 GDI Objects 참조
USER Object는 사용자 인터페이스와 관련있는 Object를 말하는 듯 합니다.(ex. window, menu...)
- MSDN 사이트의 USER Objects 참조
인자로는 Process : PyHANDLE, Flags : int 가 있습니다.
Process: 프로세스의 핸들값입니다. (PROCESS_QUERY_INFORMATION 권한 필요)
Flags: 어떤 Object를 반환할지 정하는 값입니다.
- win32con.GR_GDIOBJECTS: GDI Object의 갯수
- win32con.GR_USEROBJECTS: USER Object의 갯수
리턴값은 GUI Object의 갯수입니다.
2. dict = GetProcessIoCounters(hProcess)
프로세스의 I/O 통계를 반환합니다. IO_COUNTERS 구조체에 맵핑됩니다.
인자로는 hProcess : PyHANDLE 가 있습니다.
hProcess: 프로세스의 핸들값입니다. (PROCESS_QUERY_INFORMATION 권한 or PROCESS_QUERY_LIMITED_INFORMATION 권한 필요)
리턴값은 dict 형으로 IO_COUNTERS 구조체에 맵핑됩니다.
- ReadOperationCount: 읽기 동작이 수행된 횟수
- WriteOperationCount: 쓰기 동작이 수행된 횟수
- OtherOperationCount: 읽기와 쓰기를 제외한 I/O 동작이 수행된 횟수
- ReadTransferCount: 읽기 동작에 사용된 바이트 수
- WriteTransferCount: 쓰기 동작에 사용된 바이트 수
- OtherTransferCount: 읽기와 쓰기를 제외한 I/O 동작에 사용된 바이트 수
3. dict = GetProcessMemoryInfo(hProcess)
프로세스의 메모리 통계를 반환합니다. PROCESS_MEMORY_COUNTERS 구조체에 맵핑됩니다.
인자로는 hProcess : PyHANDLE 가 있습니다.
hProcess: 프로세스의 핸들값입니다. (PROCESS_QUERY_INFORMATION 권한 or PROCESS_QUERY_LIMITED_INFORMATION 권한 필요)
리턴값은 dict 형으로 PROCESS_MEMORY_COUNTERS 구조체에 맵핑됩니다.
- PageFaultCount: 페이지 폴트의 수
- PeakWorkingSetSize: 최대 워킹 셋 사이즈 (바이트)
- WorkingSetSize: 현재 워킹 셋 사이즈 (바이트)
- QuotaPeakPagedPoolUsage: 최대 페이징 풀 사용량 (바이트)
- QuotaPagedPoolUsage: 현재 페이징 풀 사용량 (바이트)
- QuotaPeakNonPagedPoolUsage: 최대 non 페이징 풀 사용량 (바이트)
- QuotaNonPagedPoolUsage: 현재 non 페이징 풀 사용량 (바이트)
- PagefileUsage: 메모리 관리자가 실행중인 메모리에 커밋한 총 메모리(Commit Charge) 양 (바이트)
- PeakPagefileUsage: 이 프로세스의 동작 중 Commit Charge 최대 값 (바이트)
4. dict = GetProcessTimes(hProcess)
프로세스의 시간정보를 반환하는 함수입니다.
인자로는 hProcess : PyHANDLE가 있습니다.
hProcess: 프로세스의 핸들값입니다.
리턴값은 dict 형태로, 4개의 값을 리턴합니다.
- CreationTim: 프로세스가 생성된 시간입니다.
- ExitTime: 프로세스가 종료된 시간입니다.
- KernelTime: 프로세스가 커널모드에서 동작한 시간입니다.
- UserTime: 프로세스가 유저모드에서 동작한 시간입니다.
5. int = GetProcessVersion(processId)
프로세스가 실행되는 시스템의 메이저, 마이너 번호를 반환합니다.
인자로는 processId : int 가 있습니다.
리턴값은 메이저, 마이너 번호가 합쳐진 값이며, high word 부분이 메이저 번호, low word 부분이 마이너 번호입니다. 이를 나누기 위해서 win32api의 HIWORD, LOWORD 함수를 사용하였습니다.
import win32process
import win32con
import win32api
curPs = win32process.GetCurrentProcess()
curPsId = win32process.GetCurrentProcessId()
gdiCnt = win32process.GetGuiResources(curPs, win32con.GR_GDIOBJECTS)
userCnt = win32process.GetGuiResources(curPs, win32con.GR_USEROBJECTS)
ioConuters = win32process.GetProcessIoCounters(curPs)
psMemInfo = win32process.GetProcessMemoryInfo(curPs)
psTime = win32process.GetProcessTimes(curPs)
psVer = win32process.GetProcessVersion(curPsId)
majorPsVer = win32api.HIWORD(psVer)
minorPsVer = win32api.LOWORD(psVer)
print(f"GDI Objects count : {gdiCnt}")
print(f"USER Objects count : {userCnt}")
print(f"IO Counters : {ioConuters}")
print(f"Memory Info : {psMemInfo}")
print(f"Procsss Time : {psTime}")
print(f"Process Major Version : {majorPsVer}")
print(f"Process Minor Version : {minorPsVer}")
위의 코드를 실행한 결과입니다.
'pywin32 > win32process' 카테고리의 다른 글
14. [pywin32] SetProcess... 관련 함수 (0) | 2020.12.30 |
---|---|
13. [pywin32] GetProcess... 관련 함수 - 3 (0) | 2020.12.29 |
11. [pywin32] EnumProcess 관련 함수 (0) | 2020.12.27 |
10. [pywin32] GetProcess... 관련 함수 - 1 (0) | 2020.12.26 |
9. [pywin32] ExitProcess & TerminateProcee 및 관련 함수 (0) | 2020.12.25 |