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

> Внимание!

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

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

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


Гость






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

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

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


Профи
****

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

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


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






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

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


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


Гость






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


Профи
****

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

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


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

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

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


Гость






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

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


Профи
****

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

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


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

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

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


Гость






ERROR_INVALID_PARAMETER? Показывай вызов функции и заполнение всех ее параметров... Один из них заполнен неправильно...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #29


Гость






Цитата
jobli.LimitFlags = JOB_OBJECT_LIMIT_PRIORITY_CLASS | JOB_OBJECT_LIMIT_JOB_TIME;
, но при этом поле PerJobUserTimeLimit.QuadPart остается незаполненным? Либо заполняй поле, либо меняй маску на
jobli.LimitFlags = JOB_OBJECT_LIMIT_PRIORITY_CLASS;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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

 





- Текстовая версия 28.03.2024 21:35
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name