Вниз
Скачать: CL | DM;

как прочитать KERNEL CPUUsage   Найти похожие ветки 

← →
Igit ©   (2003-09-01 11:30) [0]

Никак не могу прочитать из
"HKEY_DYN_DATA\PerfStats\StatData" раздела значение парамтра "KERNEL\CPUUsage"... пробовал по всякому, но никак не получается :(


← →
Igit ©   (2003-09-01 13:43) [1]

Все, вроде сам разобрался... на апи:

function GetCPUUsage : string;
var key:hkey;
   tmp:dword;
   regtype:pdword;
   vsize:dword;
   d:dword;
begin
vsize:=4;
d:=0;
RegOpenKeyEx(HKEY_DYN_DATA,"PerfStats\StartStat",0,KEY_ALL_ACCESS,key) ;
RegQueryValueEx(key,"KERNEL\CPUUsage",nil,regtype,@tmp,@vsize);
RegCloseKey(key);
RegOpenKeyEx(HKEY_DYN_DATA,"PerfStats\StatData",0,KEY_ALL_ACCESS,key);
RegQueryValueEx(key,"KERNEL\CPUUsage",nil,regtype,@d,@vsize);
RegCloseKey(key);
RegOpenKeyEx(HKEY_DYN_DATA,"PerfStats\StopStat",0,KEY_ALL_ACCESS,key);
RegQueryValueEx(key,"KERNEL\CPUUsage",nil,regtype,@tmp,@vsize);
RegCloseKey(key);
result:=Int2Str(d);
end;


← →
Igit ©   (2003-09-01 15:27) [2]

млин, что-то у меня фигня какая-то: если эта процедура хоть раз вызывалась, тогда при выходе из программы вылетает ошибка, в

procedure TObj.DoDestroy;
asm
       MOV       EDX, [EAX].fRefCount
       SAR       EDX, 1
       JZ        @@1
       JC        @@exit
       DEC       [EAX].fRefCount
       STC

@@1:    JC        @@exit
       MOV       EDX, [EAX]

       CALL      dword ptr [EDX + 4]
@@exit:
end;


← →
savva ©   (2003-09-01 15:38) [3]

а вот это
regtype - зачем тип указатель? сделай его как DWORD а передавай указатель на него. Ну или в твоем случае - надо хоть память под него выделить а потом освободить...
я бы сделал так:
> function GetCPUUsage : string;
> var key:hkey;
>    tmp:dword;
>    regtype:dword;
>    vsize:dword;
>    d:dword;
> begin
> vsize:=4;
> d:=0;
> RegOpenKeyEx(HKEY_DYN_DATA,"PerfStats\StartStat",0,KEY_ALL_ACCESS,key)  
> ;
> RegQueryValueEx(key,"KERNEL\CPUUsage",nil,@regtype,@tmp,@vsize) ;
> RegCloseKey(key);
> RegOpenKeyEx(HKEY_DYN_DATA,"PerfStats\StatData",0,KEY_ALL_ACCESS,key);  
>
> RegQueryValueEx(key,"KERNEL\CPUUsage",nil,@regtype,@d,@vsize);
> RegCloseKey(key);
> RegOpenKeyEx(HKEY_DYN_DATA,"PerfStats\StopStat",0,KEY_ALL_ACCESS,key);  
>
> RegQueryValueEx(key,"KERNEL\CPUUsage",nil,@regtype,@tmp,@vsize) ;
> RegCloseKey(key);
> result:=Int2Str(d);
> end;

а вообще: "The lpType parameter can be NULL if the type is not required."


← →
Igit ©   (2003-09-01 16:49) [4]

2savva ©   (01.09.03 15:38) [3]
Спасибо! но что-то я не понял в чем разница, наверно я ошибаюсь на счет pdword=@dword... или... когда задаешь переменную типа dword - память сама выделяется, и освобождается при выходе из процедуры, а когда задаешь указатель, то нужно вручную выделять и освобождать память под то место, куда он указывает? Я правильно понял?


← →
savva ©   (2003-09-01 17:02) [5]

если без тонкостей - то верно.

когда ты обзываешь переменную типа указатель - то она указывает неизвестно куда.. отсюда все проблемы



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.024 c
14-1080364923
able
2004-03-27 08:22
2004.04.18
Книга по сетям. (можно бумажную :))


6-1076263145
Захар
2004-02-08 20:59
2004.04.18
Как построить почтовый (SMTP & POP3) сервер?


1-1080646824
Basilio
2004-03-30 15:40
2004.04.18
Перебрать все элементы множества


14-1080209662
Dmitriy O.
2004-03-25 13:14
2004.04.18
Кто нить работал с Morfit ?


11-1063175599
dataMaster
2003-09-10 10:33
2004.04.18
Как очистить PaintBox?




   Наверх