Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2002.07.29;
Скачать: [xml.tar.bz2];

Вниз

Производительность Win2000   Найти похожие ветки 

 
Igor345   (2002-04-30 03:47) [0]

Уважаемы Знатоки и Магистры! Помогите разобраться, как мне в Delphi из ключа HKEY_PERFORMANCE_DATA получить инф. по производительности?


 
PGM   (2002-04-30 11:45) [1]

Еще под НТ для этих целей я использовал библиотеку PSAPI.DLL из SDK. Под 2000 она так же отлично работает. Там есть GetPerformanceInfo, которая возвращает значение из реестра как раз того ключа который нуже, а потом его нужно разбирать по кусочкам в поиске конкретного счетчика, который тебе нужен. Там все не очень прозрачно и много кода. Вот основная часть для получения значения ключа.

const
gPerfDataSize : DWORD = 50*1024; // start with 50K
var
gpPerfData : PPERF_DATA;
const
ghPerfKey : HKEY = HKEY_PERFORMANCE_DATA; // get perf data from this key

// GetPerfData
//
// Get a new set of performance data.
//
// *ppData should be NULL initially.
// This function will allocate a buffer big enough to hold the
// data requested by szObjectIndex.
//
// *pDataSize specifies the initial buffer size. If the size is
// too small, the function will increase it until it is big enough
// then return the size through *pDataSize. Caller should
// deallocate *ppData if it is no longer being used.
//
// Returns ERROR_SUCCESS if no error occurs.
//
// Note: the trial and error loop is quite different from the normal
// registry operation. Normally if the buffer is too small,
// RegQueryValueEx returns the required size. In this case,
// the perflib, since the data is dynamic, a buffer big enough
// for the moment may not be enough for the next. Therefor,
// the required size is not returned.
//
// One should start with a resonable size to avoid the overhead
// of reallocation of memory.
//
function GetPerfData ( hPerfKey : HKEY ;
szObjectIndex : LPSTR ;
var ppData : PPERF_DATA;
var pDataSize : DWORD) : DWORD;
var
DataSize : DWORD ;
dwR : DWORD ;
T : DWORD ;

begin
if (ppData = nil) then
ppData := PPERF_DATA( LocalAlloc (LMEM_FIXED, pDataSize));


repeat
DataSize := pDataSize;
dwR := RegQueryValueEx (hPerfKey,
szObjectIndex,
nil,
@T,
PBYTE(ppData),
@DataSize);

if (dwR = ERROR_MORE_DATA) then begin
LocalFree (DWORD(ppData));
pDataSize := pDataSize + 1024;
ppData := PPERF_DATA(LocalAlloc (LMEM_FIXED, pDataSize));
end;

if (ppData = nil) then begin
LocalFree (DWORD(ppData));
Result := ERROR_NOT_ENOUGH_MEMORY;
Exit;
end;
until (dwR <> ERROR_MORE_DATA);

Result := dwR;
end;


 
PGM   (2002-04-30 11:48) [2]

Если нужна более подробная информация, то через почту. А то опасаюсь здесь занять слишком много места кодом, а на пальцах объяснять не получится.


 
cdaDmitriy   (2002-04-30 16:05) [3]

> PGM
Если можно тестоый пример


 
PGM   (2002-05-04 18:49) [4]

Слишком много места займет и конкретных счетчиков очень много. Могу, если интересно, прислать для получения CPU Perfomance (как в TaskManager). Если интересует, пишите.


 
P_Igorek   (2002-05-12 18:48) [5]

Hi, Если не сложно, то про производительность CPU и время работы винды. Санкс. P_Igorek



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

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

Наверх





Память: 0.45 MB
Время: 0.009 c
14-95520
adogg
2002-07-02 20:38
2002.07.29
Проблема с установкой компонент


1-95412
c0pYc@t
2002-07-16 11:07
2002.07.29
Закрытие программы


3-95203
alexvan
2002-07-06 16:57
2002.07.29
Как в SQL запрос вставить переменную


1-95371
xyz
2002-07-15 21:02
2002.07.29
objects а что это такое?


1-95440
DARS73
2002-07-17 00:59
2002.07.29
Уважаемые мастера, Как обработать ошибку???





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский