Мы уже обсудили, как с помощью QueryInformationJobObject получить информацию о текущих ограничениях, установленных для задания. Этой функцией можно пользо ваться и для получения статистической информации. Например, чтобы выяснить ба зовые учетные сведения, вызовите ее, передав JobObjeсtBasicAccountingInformation во втором параметре и адрес структуры JOBOBJECT_BASIC_ACCOUNTING_INFORMATION:
typedef struct _JOBOBJECT_BASIC_ACCOUNTING_INFORMATION
{
LARGE_INTEGER TotalUserTime;
LARGE_INTEGER TotalKernelTime;
LARGE_INTEGER ThisPeriodTotalUserTime;
LARGE_INTEGER ThisPeriodTotalKernelTime;
DWORD TotalPageFaultCount;
DWORD TotalProcesses;
DWORD ActiveProcesses;
DWORD TotalTerminatedProcesses;
} JOBOBJECT_BASIC_ACCOUNTING_INFORMATION, *PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION;
Элементы этой структуры кратко описаны в таблице 5-3
Элемент |
Описание |
TotalUserTtme |
Процессорное время, израсходованное процессами задания в пользовательском режиме |
TotalKernelTime |
Процессорное время, израсходованное процессами задания в режиме ядра |
ThisPeriodTotalUserTime |
То же, что TotalUserTime, но обнуляется, когда базовые oгpa ничения изменяются вызовом SetIniformationJobObject, а флаг JOB OBJECT_LIMIT_PRESERVE_JOB_TIME не используется |
ThisPeriodTotalKernelTime |
То же, что ThisPeriodTotalUserTime, но относится к процессор ному времени, израсходованному в режиме ядра |
TotalPageFaultCount |
Общее количество ошибок страниц, вызванных процессами задания |
TotalProcesses |
Общее число процессов, когда-либо выполнявшихся в зтом задании |
ActiveProcesses |
Текущее количество процессов в задании |
TotalTermtnatedProcesses |
Количество процессов, завершенных из-за превышения ими отведенного лимита процессорного времени |
Таблица 5-3. Элементы структуры JOBOBJECT_BASIC_ACCOUNTING_INFORMATION
Вы можете извлечь те же сведения вместе с учетной информацией по вводу-выво ду, передав JobObjectBasicAndIoAccountingInformation во втором параметре и адрес структуры JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION: