Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.18;
Скачать: 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 вся ветка

Текущий архив: 2004.04.18;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.028 c
4-1076401808
PVOID
2004-02-10 11:30
2004.04.18
SleepEx и два потока.


3-1080051989
Gari
2004-03-23 17:26
2004.04.18
Переход по связан записям таблицы средством компоненты DBComboBox


14-1080228866
Petr V. Abramov
2004-03-25 18:34
2004.04.18
Любителям 3D-стрелялок обращаться в местный военкомат :)


6-1077018955
ORMADA
2004-02-17 14:55
2004.04.18
Ping определённый порт


7-1076629252
Германн
2004-02-13 02:40
2004.04.18
Подскажите, если кто может, направление поиска!