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");
+