2013/4/24 James Eder <jimportal(a)gmail.com>
This version should either pass or skip on W2KPROSP4. --- dlls/kernel32/cpu.c | 23 ++++++++++++++++++----- dlls/psapi/tests/psapi_main.c | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 5 deletions(-)
diff --git a/dlls/kernel32/cpu.c b/dlls/kernel32/cpu.c index 0ebf8f3..124e5c0 100644 --- a/dlls/kernel32/cpu.c +++ b/dlls/kernel32/cpu.c @@ -216,16 +216,29 @@ BOOL WINAPI IsProcessorFeaturePresent ( */ BOOL WINAPI K32GetPerformanceInfo(PPERFORMANCE_INFORMATION info, DWORD size) { - NTSTATUS status; + MEMORYSTATUSEX mem_status;
TRACE( "(%p, %d)\n", info, size );
- status = NtQuerySystemInformation( SystemPerformanceInformation, info, size, NULL ); - - if (status) + if(size < sizeof(PERFORMANCE_INFORMATION)) { - SetLastError( RtlNtStatusToDosError( status ) ); + SetLastError(ERROR_BAD_LENGTH); return FALSE; } + + mem_status.dwLength = sizeof(mem_status); + if (!GlobalMemoryStatusEx( &mem_status )) + return FALSE; + + memset(info, 0, sizeof(PERFORMANCE_INFORMATION)); + + info->cb = sizeof(PERFORMANCE_INFORMATION); + info->CommitLimit = min((mem_status.ullTotalPageFile / system_info.PageSize), MAXDWORD); + info->PhysicalTotal = min((mem_status.ullTotalPhys / system_info.PageSize), MAXDWORD); + info->PhysicalAvailable = min((mem_status.ullAvailPhys / system_info.PageSize), MAXDWORD); + info->PageSize = system_info.PageSize; + + FIXME("stub\n"); +
Hi James, That would be better to change the trace at the beginning by FIXME( "(%p, %d): semi-stub\n", info, size ); or FIXME( "(%p, %d): partial stub\n", info, size ); instead of adding another fixme (which is not really correct since it's not a stub). Christian