virus131 Ответов: 1

Получение значения заряда фиксации


Как получить значение заряда фиксации диспетчера задач с помощью приложения MFC VC++ 6.0.
Я пробую какой-то код, но не получаю того же значения заряда фиксации, что и в Диспетчере задач. Ценность, которую я получаю, намного меньше, чем у диспетчера задач. Я не знаю, какой спецификатор формата мне нужно использовать, чтобы получить точное значение. Пожалуйста, помогите мне...
Спасибо...

Что я уже пробовал:

char CommitChargeInfo[10];

PERFORMANCE_INFORMATION PerfmncInfo;

GetPerformanceInfo(& PerfmncInfo, sizeof(PerfmncInfo));

функции sprintf(CommitChargeInfo, "%U", а PerfmncInfo.CommitTotal);

m_CommitCharge.SetWindowText ((CString)CommitChargeInfo);

1 Ответов

Рейтинг:
8

Jochen Arndt

При наличии 64-битной операционной системы размеры памяти могут превышать 4 ГБ. Но при использовании VC6 вы создадите 32-битное приложение. Тогда вы получите только нижние 32 бита из 64-битных размеров памяти.

Поэтому при использовании 64-битной операции вы должны создать 64-битное приложение, в котором SIZE_T тип CommitTotal член имеет ширину 64 бита. Это требует использования новейшего компилятора, который может создавать 64-битные приложения.


virus131

ок.. это означает, что мы не можем использовать CommitTotal в 32-битном приложении VC6? Если это так, то как я могу получить значение заряда фиксации в 32-битном приложении VC6?

Jochen Arndt

Вы можете использовать его, но вы можете получить неправильное значение. При использовании 64-битной Windows вы получите только нижние 32-битные. Это будет неправильно, если значение, сообщаемое системой, больше 4 ГБ, и нет никакого способа определить, происходит ли это.

Диспетчер задач 64-разрядной версии Windows - это 64-разрядное приложение. Если вы хотите создать что-то подобное, вы также должны создать 64-битную версию.

Как уже предлагалось в моем ответе на ваш предыдущий вопрос:
Используйте более свежую версию Visual Studio. Вы можете получить его бесплатно:
https://beta.visualstudio.com/visual-studio-community-vs/