IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

2 страниц V < 1 2  
 Ответить  Открыть новую тему 
> Процессы и "задание", С++ Builder
volvo
сообщение 24.10.2008 20:12
Сообщение #21


Гость






Что показывает ProcessExplorer? Установились твои приоритеты для JobObject?

Вот, смотри:
Прикрепленное изображение

(то, что выделено слева возвращается твоим методом). Устанавливался IDLE_PRIORITY_CLASS...
 К началу страницы 
+ Ответить 
18192123
сообщение 24.10.2008 20:28
Сообщение #22


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Вроде класс введённый (IDLE) установился...






А при получении информации вижу 32..

Сообщение отредактировано: 18192123 - 24.10.2008 20:32


Эскизы прикрепленных изображений
Прикрепленное изображение Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 24.10.2008 21:17
Сообщение #23


Гость






Цитата
Вроде класс введённый (IDLE) установился...
То, что jobli.PriorityClass установился в 64 еще ничего не значит... Я почему и спрашивал у тебя, установилось ли это после вызова SetInformationJobObject в ограничениях твоего задания? Проверь это...
 К началу страницы 
+ Ответить 
18192123
сообщение 24.10.2008 21:19
Сообщение #24


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Цитата(volvo @ 24.10.2008 22:17) *

установилось ли это после вызова SetInformationJobObject в ограничениях твоего задания? Проверь это...

да-да, установилось..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 24.10.2008 21:20
Сообщение #25


Гость






P.S. Возможно, SetInformationJobObject() или QueryInformationJobObject() возвращают признак ошибки (если возвращается 0, значит функция не отработала), тогда придется получить номер ошибки через GetLastError() и смотреть, в чем причина...

Сообщение отредактировано: volvo - 24.10.2008 21:20
 К началу страницы 
+ Ответить 
18192123
сообщение 24.10.2008 21:46
Сообщение #26


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Цитата(volvo @ 24.10.2008 22:20) *

P.S. Возможно, SetInformationJobObject() или QueryInformationJobObject() возвращают признак ошибки (если возвращается 0, значит функция не отработала), тогда придется получить номер ошибки через GetLastError() и смотреть, в чем причина...

Да..действительно - SetInformationJobObject() возвращает 0..
Для SetInformationJobObject() функция GetLastError() вернула код ошибки 87..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 24.10.2008 21:53
Сообщение #27


Гость






ERROR_INVALID_PARAMETER? Показывай вызов функции и заполнение всех ее параметров... Один из них заполнен неправильно...
 К началу страницы 
+ Ответить 
18192123
сообщение 24.10.2008 22:05
Сообщение #28


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Цитата(volvo @ 24.10.2008 22:53) *

ERROR_INVALID_PARAMETER? Показывай вызов функции и заполнение всех ее параметров... Один из них заполнен неправильно...


hjob = CreateJobObject(NULL, TEXT("LAB2"));
// вводим ограничения для процессов в задании
// сначала определяем некоторые базовые ограничения
JOBOBJECT_BASIC_LIMIT_INFORMATION jobli = { 0 };

// процесс всегда выполняется с классом приоритета ...
GetWindowText(hEditPriority,(LPWSTR)lpProcName,50);
if(!wcscmp(lpProcName, L"IDLE"))
{
jobli.PriorityClass = IDLE_PRIORITY_CLASS;
MessageBox(hWndMain,TEXT("IDLE"),TEXT("Class of Priority:"),MB_ICONINFORMATION);
}
if(!wcscmp(lpProcName, L"NORMAL"))
{
jobli.PriorityClass = NORMAL_PRIORITY_CLASS;
MessageBox(hWndMain,TEXT("NORMAL"),TEXT("Class of Priority:"),MB_ICONINFORMATION);
}
if(!wcscmp(lpProcName, L"BELOW_NORMAL"))
{
jobli.PriorityClass = BELOW_NORMAL_PRIORITY_CLASS;
MessageBox(hWndMain,TEXT("BELOW_NORMAL"),TEXT("Class of Priority:"),MB_ICONINFORMATION);
}
if(!wcscmp(lpProcName, L"ABOVE_NORMAL"))
{
jobli.PriorityClass = ABOVE_NORMAL_PRIORITY_CLASS;
MessageBox(hWndMain,TEXT("ABOVE_NORMAL"),TEXT("Class of Priority:"),MB_ICONINFORMATION);
}
// задание не может использовать более одной секунды процессорного времени
//jobli.PerJobUserTimeLimit.QuadPart = 10000000;

// 1 секунда, выраженная в 100-наносекундных интервалах
// два ограничения, которые я налагаю на задание (процесс)
jobli.LimitFlags = JOB_OBJECT_LIMIT_PRIORITY_CLASS | JOB_OBJECT_LIMIT_JOB_TIME;
DWORD fl=0;
if (SetInformationJobObject(hjob, JobObjectBasicLimitInformation, &jobli, sizeof(jobli))==0)
fl=GetLastError();


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 24.10.2008 22:12
Сообщение #29


Гость






Цитата
jobli.LimitFlags = JOB_OBJECT_LIMIT_PRIORITY_CLASS | JOB_OBJECT_LIMIT_JOB_TIME;
, но при этом поле PerJobUserTimeLimit.QuadPart остается незаполненным? Либо заполняй поле, либо меняй маску на
jobli.LimitFlags = JOB_OBJECT_LIMIT_PRIORITY_CLASS;
 К началу страницы 
+ Ответить 
18192123
сообщение 24.10.2008 22:36
Сообщение #30


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Цитата(volvo @ 24.10.2008 23:12) *

либо меняй маску на
jobli.LimitFlags = JOB_OBJECT_LIMIT_PRIORITY_CLASS;


Поменяла - теперь отрабатывает верно!
Спасибо!)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V < 1 2
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 25.07.2025 4:35
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"