2013/4/24 James Eder <jimportal@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