Was hast du denn im Taskmanager ausgewählt? Privater Arbeitssatz (was der Standard ist), Arbeitssatz, ...? Im Standard wird nämlich nur der Arbeitsspeicher angezeigt, der exklusiv von dem Prozess verwendet wird, nicht aber der, den der Prozess zwar nutzt, aber der nicht als MEM_PRIVATE markiert ist.
Diesen privaten Arbeitssatz bekommst du mit GetProcessMemoryInfo und PROCESS_MEMORY_COUNTERS_EX (in PrivateUsage, im Gegensatz zum WorkingSetSize, das den gesamten Arbeitssatz enthält), nicht mit PROCESS_MEMORY_COUNTERS.
http://msdn.microsoft.com/en-us/libr.../ms684874.aspx
Bei Mehrkernprozessoren gibt es was die CPU-Auslastung angeht verschiedene Berechnungsmethoden. Der Taskmanager rechnet diese um auf alle vier Kerne. Die meisten Quelltexte, die ich kenne, rechnen hingegen pro Kern, so dass du durch die Anzahl der Kerne teilen musst um auf die selben Werte zu kommen.
Beim Process Explorer kann ich mir die kumulierten Werte für alle Kerne nicht so recht erklären. Die einzelnen Kerne stimmen aber mit dem Taskmanager von Messungenauigkeiten abgesehen überein.