Index: perfdata.c =================================================================== --- perfdata.c (revision 39743) +++ perfdata.c (working copy) @@ -155,15 +155,21 @@ * We don't know how much data there is so just keep * increasing the buffer size until the call succeeds */ - BufferSize = 0; + BufferSize = 0x10000; do { - BufferSize += 0x10000; pBuffer = (LPBYTE)HeapAlloc(GetProcessHeap(), 0, BufferSize); status = NtQuerySystemInformation(SystemProcessInformation, pBuffer, BufferSize, &ulSize); if (status == STATUS_INFO_LENGTH_MISMATCH) { + if(ulSize <= BufferSize) { + //Old NT4 (?) interface + BufferSize += 0x10000; + } else { + //New XP interface + BufferSize = ulSize; + } HeapFree(GetProcessHeap(), 0, pBuffer); }