<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">2013/4/24 James Eder <span dir="ltr"><<a href="mailto:jimportal@gmail.com" target="_blank">jimportal@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
This version should either pass or skip on W2KPROSP4.<br>
---<br>
 dlls/kernel32/cpu.c           | 23 ++++++++++++++++++-----<br>
 dlls/psapi/tests/psapi_main.c | 36 ++++++++++++++++++++++++++++++++++++<br>
 2 files changed, 54 insertions(+), 5 deletions(-)<br>
<br>
diff --git a/dlls/kernel32/cpu.c b/dlls/kernel32/cpu.c<br>
index 0ebf8f3..124e5c0 100644<br>
--- a/dlls/kernel32/cpu.c<br>
+++ b/dlls/kernel32/cpu.c<br>
@@ -216,16 +216,29 @@ BOOL WINAPI IsProcessorFeaturePresent (<br>
  */<br>
 BOOL WINAPI K32GetPerformanceInfo(PPERFORMANCE_INFORMATION info, DWORD size)<br>
 {<br>
-    NTSTATUS status;<br>
+    MEMORYSTATUSEX mem_status;<br>
<br>
     TRACE( "(%p, %d)\n", info, size );<br>
<br>
-    status = NtQuerySystemInformation( SystemPerformanceInformation, info, size, NULL );<br>
-<br>
-    if (status)<br>
+    if(size < sizeof(PERFORMANCE_INFORMATION))<br>
     {<br>
-        SetLastError( RtlNtStatusToDosError( status ) );<br>
+        SetLastError(ERROR_BAD_LENGTH);<br>
         return FALSE;<br>
     }<br>
+<br>
+    mem_status.dwLength = sizeof(mem_status);<br>
+    if (!GlobalMemoryStatusEx( &mem_status ))<br>
+        return FALSE;<br>
+<br>
+    memset(info, 0, sizeof(PERFORMANCE_INFORMATION));<br>
+<br>
+    info->cb                = sizeof(PERFORMANCE_INFORMATION);<br>
+    info->CommitLimit       = min((mem_status.ullTotalPageFile / system_info.PageSize), MAXDWORD);<br>
+    info->PhysicalTotal     = min((mem_status.ullTotalPhys / system_info.PageSize), MAXDWORD);<br>
+    info->PhysicalAvailable = min((mem_status.ullAvailPhys / system_info.PageSize), MAXDWORD);<br>
+    info->PageSize          = system_info.PageSize;<br>
+<br>
+    FIXME("stub\n");<br>
+<br></blockquote><div><br></div><div>Hi James,<br></div><div><br>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 );<br>
</div><div>instead of adding another fixme (which is not really correct since it's not a stub).<br><br></div>Christian<br></div><br></div></div>