Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.08;
Скачать: [xml.tar.bz2];




Вниз

Определение загрузки процессора перед запуском проги 


Sergy   (2002-02-06 18:05) [10]

> всем
Использовал код Tosov
Вопрос возник в процессе:
При перенесе кода в тело dll (ISAPI dll) вызвыаю ее припомощи запроса к веб серверу. При проверке оказывается, что
Round(dbIdleTime) возвращает -9223372036854775808.
В обычном приложении код работает идеально и возвращает то что нужно.
Вот код, правда я его немного изменил:

liOldIdleTime.QuadPart:=0;
liOldSystemTime.QuadPart:=0;
if NtQuerySystemInformation(SystemBasicInformation,@SysBaseInfo,sizeof(SysBaseInfo),0)<>NO_ERROR
then exit;
i:=0;
repeat
if NtQuerySystemInformation(SystemTimeInformation,@SysTimeInfo,sizeof(SysTimeInfo),0)<>NO_ERROR
then exit;
if NtQuerySystemInformation(SystemPerformanceInformation,@SysPerfInfo,sizeof(SysPerfInfo),0)<>NO_ERROR
then exit;
if liOldIdleTime.QuadPart <> 0
then begin
// CurrentValue = NewValue - OldValue
dbIdleTime := Li2Double(SysPerfInfo.liIdleTime) - Li2Double(liOldIdleTime);
dbSystemTime := Li2Double(SysTimeInfo.liKeSystemTime) - Li2Double(liOldSystemTime);

// CurrentCpuIdle = IdleTime / SystemTime

dbIdleTime := dbIdleTime / dbSystemTime;

// CurrentCpuUsage% = 100 - (CurrentCpuIdle * 100) / NumberOfProcessors
dbIdleTime := 100.0 - dbIdleTime * 100.0 / SysBaseInfo.bKeNumberProcessors + 0.5;

response.Content:=Response.Content + "<br>"+ inttostr(Round(dbIdleTime));
inc(i);
end;
// store new CPU"s idle and system time
liOldIdleTime := SysPerfInfo.liIdleTime;
liOldSystemTime := SysTimeInfo.liKeSystemTime;
if i=1000 then
begin
Response.Content :=Response.Content+"<br>!!!" ;
Handled:=true;
exit;


end;
until false;




Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.08;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.71 MB
Время: 0.031 c
3-22589           Malder                2002-03-15 16:25  2002.04.08  
НЕсовершенство Interbase ?


7-22854           Pasha                 2001-09-21 15:44  2002.04.08  
Порты в Win2000


6-22784           Kirill_               2002-01-25 00:47  2002.04.08  
Net


4-22879           Sergy                 2002-02-06 10:27  2002.04.08  
Определение загрузки процессора перед запуском проги


1-22744           Yuraz                 2002-03-27 08:20  2002.04.08  
Мастера, помогите с написанием функции удаления лишних пробелов в строке,