Форум: "KOL";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
Внизкак прочитать 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 вся ветка
Форум: "KOL";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.038 c