Module: wine Branch: master Commit: 4ed94f7939a21c77bc565d0f697b1cd9aa8b4a74 URL: http://source.winehq.org/git/wine.git/?a=commit;h=4ed94f7939a21c77bc565d0f69...
Author: Jacek Caban jacek@codeweavers.com Date: Thu May 12 12:19:40 2011 +0000
kernel32: Moved GetProcessMemoryInfo implementation to kernel32.
---
dlls/kernel32/kernel32.spec | 1 + dlls/kernel32/process.c | 42 ++++++++++++++++++++++++++++++++++++++++++ dlls/psapi/psapi.spec | 2 +- dlls/psapi/psapi_main.c | 41 ----------------------------------------- 4 files changed, 44 insertions(+), 42 deletions(-)
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec index a4e45d6..458b425 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec @@ -772,6 +772,7 @@ @ stdcall K32GetProcessImageFileNameW(long ptr long) @ stdcall K32EnumProcessModules(long ptr long ptr) @ stdcall K32EnumProcesses(ptr long ptr) +@ stdcall K32GetProcessMemoryInfo(long ptr long) @ stdcall K32QueryWorkingSet(long ptr long) @ stdcall K32QueryWorkingSetEx(long ptr long) @ stdcall -i386 -private -register K32Thk1632Epilog() krnl386.exe16.K32Thk1632Epilog diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c index 5436c06..2ec5905 100644 --- a/dlls/kernel32/process.c +++ b/dlls/kernel32/process.c @@ -46,6 +46,7 @@ #define WIN32_NO_STATUS #include "winternl.h" #include "kernel_private.h" +#include "psapi.h" #include "wine/library.h" #include "wine/server.h" #include "wine/unicode.h" @@ -3622,6 +3623,47 @@ BOOL WINAPI K32QueryWorkingSetEx( HANDLE process, LPVOID buffer, DWORD size ) }
/*********************************************************************** + * K32GetProcessMemoryInfo (KERNEL32.@) + * + * Retrieve memory usage information for a given process + * + */ +BOOL WINAPI K32GetProcessMemoryInfo(HANDLE process, + PPROCESS_MEMORY_COUNTERS pmc, DWORD cb) +{ + NTSTATUS status; + VM_COUNTERS vmc; + + if (cb < sizeof(PROCESS_MEMORY_COUNTERS)) + { + SetLastError(ERROR_INSUFFICIENT_BUFFER); + return FALSE; + } + + status = NtQueryInformationProcess(process, ProcessVmCounters, + &vmc, sizeof(vmc), NULL); + + if (status) + { + SetLastError(RtlNtStatusToDosError(status)); + return FALSE; + } + + pmc->cb = sizeof(PROCESS_MEMORY_COUNTERS); + pmc->PageFaultCount = vmc.PageFaultCount; + pmc->PeakWorkingSetSize = vmc.PeakWorkingSetSize; + pmc->WorkingSetSize = vmc.WorkingSetSize; + pmc->QuotaPeakPagedPoolUsage = vmc.QuotaPeakPagedPoolUsage; + pmc->QuotaPagedPoolUsage = vmc.QuotaPagedPoolUsage; + pmc->QuotaPeakNonPagedPoolUsage = vmc.QuotaPeakNonPagedPoolUsage; + pmc->QuotaNonPagedPoolUsage = vmc.QuotaNonPagedPoolUsage; + pmc->PagefileUsage = vmc.PagefileUsage; + pmc->PeakPagefileUsage = vmc.PeakPagefileUsage; + + return TRUE; +} + +/*********************************************************************** * ProcessIdToSessionId (KERNEL32.@) * This function is available on Terminal Server 4SP4 and Windows 2000 */ diff --git a/dlls/psapi/psapi.spec b/dlls/psapi/psapi.spec index 37d6e80..ad03716 100644 --- a/dlls/psapi/psapi.spec +++ b/dlls/psapi/psapi.spec @@ -18,7 +18,7 @@ @ stdcall GetPerformanceInfo(ptr long) @ stdcall GetProcessImageFileNameA(long ptr long) kernel32.K32GetProcessImageFileNameA @ stdcall GetProcessImageFileNameW(long ptr long) kernel32.K32GetProcessImageFileNameW -@ stdcall GetProcessMemoryInfo(long ptr long) +@ stdcall GetProcessMemoryInfo(long ptr long) kernel32.K32GetProcessMemoryInfo @ stdcall GetWsChanges(long ptr long) @ stdcall InitializeProcessForWsWatch(long) @ stdcall QueryWorkingSet(long ptr long) kernel32.K32QueryWorkingSet diff --git a/dlls/psapi/psapi_main.c b/dlls/psapi/psapi_main.c index 909e7ce..0b8e5b0 100644 --- a/dlls/psapi/psapi_main.c +++ b/dlls/psapi/psapi_main.c @@ -407,47 +407,6 @@ BOOL WINAPI GetPerformanceInfo( PPERFORMANCE_INFORMATION info, DWORD size ) }
/*********************************************************************** - * GetProcessMemoryInfo (PSAPI.@) - * - * Retrieve memory usage information for a given process - * - */ -BOOL WINAPI GetProcessMemoryInfo(HANDLE hProcess, - PPROCESS_MEMORY_COUNTERS pmc, DWORD cb) -{ - NTSTATUS status; - VM_COUNTERS vmc; - - if (cb < sizeof(PROCESS_MEMORY_COUNTERS)) - { - SetLastError(ERROR_INSUFFICIENT_BUFFER); - return FALSE; - } - - status = NtQueryInformationProcess(hProcess, ProcessVmCounters, - &vmc, sizeof(vmc), NULL); - - if (status) - { - SetLastError(RtlNtStatusToDosError(status)); - return FALSE; - } - - pmc->cb = sizeof(PROCESS_MEMORY_COUNTERS); - pmc->PageFaultCount = vmc.PageFaultCount; - pmc->PeakWorkingSetSize = vmc.PeakWorkingSetSize; - pmc->WorkingSetSize = vmc.WorkingSetSize; - pmc->QuotaPeakPagedPoolUsage = vmc.QuotaPeakPagedPoolUsage; - pmc->QuotaPagedPoolUsage = vmc.QuotaPagedPoolUsage; - pmc->QuotaPeakNonPagedPoolUsage = vmc.QuotaPeakNonPagedPoolUsage; - pmc->QuotaNonPagedPoolUsage = vmc.QuotaNonPagedPoolUsage; - pmc->PagefileUsage = vmc.PagefileUsage; - pmc->PeakPagefileUsage = vmc.PeakPagefileUsage; - - return TRUE; -} - -/*********************************************************************** * GetWsChanges (PSAPI.@) */ BOOL WINAPI GetWsChanges( HANDLE process, PPSAPI_WS_WATCH_INFORMATION watchinfo, DWORD size )