Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2011, 16:05   #1
RAZOR1703
Пользователь
 
Регистрация: 15.12.2010
Сообщений: 74
По умолчанию Создание задания, добавление процессов, удаление процессов

Здравствуйте.
Уже который день бьюсь со своей лабораторной работой - не получается, и все. Идея следующая. При запуске, программа должна создать задание "MyJob" и, по нажатии клавиши, вносить в это задание процесс, точно так же, как и удалять из него процессы процессы по нажатии другой клавиши. На процессы должны быть наложены ограничения на количество (не более 10), за запись и чтение буфера.
Задание создается, процессы вносятся, ограничения на запись/считывание буфера работают. А вот ограничение на количество - ни в какую. Точно так же, как и не закрываются процессы по нажатии клавиши.
В предыдущей версии я сделал примитивный массив с информацией по каждому процессу, и при его помощи закрывал их, но преподавателя не устроило, и он сказал мне использовать QueryInformationJobObject. Вот тут-то и появились мои проблемы. Очень нужна ваша помощь.
Проект прикрепил, так как кода не очень мало. Возможно наличие ненужной белиберды.
Надеюсь на вас, спасибо.
Вложения
Тип файла: rar SPZLAB1.rar (236.1 Кб, 18 просмотров)

Последний раз редактировалось RAZOR1703; 16.10.2011 в 16:11.
RAZOR1703 вне форума Ответить с цитированием
Старый 17.10.2011, 19:02   #2
RAZOR1703
Пользователь
 
Регистрация: 15.12.2010
Сообщений: 74
По умолчанию

Люди, очень нужна помощь. Не бросайте.
RAZOR1703 вне форума Ответить с цитированием
Старый 23.10.2011, 18:10   #3
RAZOR1703
Пользователь
 
Регистрация: 15.12.2010
Сообщений: 74
По умолчанию

Неужели здесь нет никого, кто разбирается в Job-ах?
RAZOR1703 вне форума Ответить с цитированием
Старый 24.10.2011, 10:54   #4
Блуд
Пользователь
 
Регистрация: 23.05.2010
Сообщений: 53
По умолчанию

Код:
int CControl::AddProcess2Job()
{
    ZeroMemory(&si, sizeof(si));
    si.cb = sizeof(si);
    ZeroMemory(&pi, sizeof(pi));
    if (!CreateProcess(NULL, tchBuff, NULL, NULL,
        FALSE, CREATE_SUSPENDED, NULL, NULL, &si, &pi))
            return 0;

    AssignProcessToJobObject(hJob, pi.hProcess);
    ResumeThread(pi.hThread);
}
так попробуй, кажется работает.

Последний раз редактировалось Блуд; 24.10.2011 в 11:00.
Блуд вне форума Ответить с цитированием
Старый 24.10.2011, 11:48   #5
RAZOR1703
Пользователь
 
Регистрация: 15.12.2010
Сообщений: 74
По умолчанию

Блуд отлично, спасибо. Только почему-то ограничение на количество одновременно запущенных процессов не срабатывает. На запись/считывание из буфера - все отлично.
RAZOR1703 вне форума Ответить с цитированием
Старый 24.10.2011, 12:04   #6
Блуд
Пользователь
 
Регистрация: 23.05.2010
Сообщений: 53
По умолчанию

попробуй exe файл который я прикрепил, более 10 не запускает
P.S если ты запускаешь процесс не через прогу, то ограничения на данные процессы не будут действовать(и не должны)

upd:

на завершение процессов:
Код:
void CControl::CloseProgram()
{
	
    //jInfo2 = {0};
    jInfo2.NumberOfAssignedProcesses = MAX_PROCESS_IDS;

    QueryInformationJobObject(hJob, JobObjectBasicProcessIdList, &jInfo2, sizeof(jInfo2), NULL);

	while(jInfo2.NumberOfProcessIdsInList>0){
	    HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,0,jInfo2.ProcessIdList[0]);
	    TerminateProcess(hProcess, 0);
	    CloseHandle(hProcess);
	    QueryInformationJobObject(hJob, JobObjectBasicProcessIdList, &jInfo2, sizeof(jInfo2), NULL);
	}
    
}
Вложения
Тип файла: zip Архив ZIP - WinRAR.zip (56.2 Кб, 9 просмотров)

Последний раз редактировалось Блуд; 24.10.2011 в 13:13.
Блуд вне форума Ответить с цитированием
Старый 24.10.2011, 18:29   #7
RAZOR1703
Пользователь
 
Регистрация: 15.12.2010
Сообщений: 74
По умолчанию

С блокнотом работает, да, все замечательно. А как быть с wordpad.exe?
Насколько мне известно, он несколько проблемный. Сначала пытался открывать его через write.exe, а потом оказалось, что write.exe вызывает wordpad, что мешало добавлять его в Job. Но вот поменял именно на wordpad.exe, и все равно не хочет добавлять.
Прикрепил.
Вложения
Тип файла: rar SPZLAB1.rar (3.3 Кб, 7 просмотров)
RAZOR1703 вне форума Ответить с цитированием
Старый 24.10.2011, 19:19   #8
Блуд
Пользователь
 
Регистрация: 23.05.2010
Сообщений: 53
По умолчанию

Попробуй, больше 10 не запускает.
Во 2 архиве исходник
Вложения
Тип файла: zip Архив ZIP - WinRAR (2).zip (2.3 Кб, 9 просмотров)
Тип файла: zip Архив ZIP - WinRAR.zip (56.3 Кб, 10 просмотров)
Блуд вне форума Ответить с цитированием
Старый 24.10.2011, 19:59   #9
RAZOR1703
Пользователь
 
Регистрация: 15.12.2010
Сообщений: 74
По умолчанию

Загвоздка, видимо, в моей Win 7 x64. На старом ноуте на ХР все работает. А здесь - экзешник, который ты кинул пишет, что невозможно создать документ, а когда перекомпилирую - не заносятся процессы в Job и, соответственно, ограничения не работают.
RAZOR1703 вне форума Ответить с цитированием
Старый 26.10.2011, 20:53   #10
RAZOR1703
Пользователь
 
Регистрация: 15.12.2010
Сообщений: 74
По умолчанию

Так, что я выяснил. Преподаватель сказал, что нужно приделать к проекту манифест. Текст он мне дал, и я видел, что с этим манифестом у него на ноуте работает (разве что, не удаляются-таки под Семеркой последовательно процессы из задания, но это, как он сказал, решается динамическим выделением памяти под Jinfo2.ProcessIDList). Но проблема в том, что сам я не могу прикрутить этот манифест. Кто может помочь?
И заодно и с динамической памятью помогите, пожалуйста. Я тут кое-что пытался, не совсем динамически, но QueryInformationJobObject возвращает 1, что есть хорошо.
Результаты экспериментов прикрепил. Подсобите, пожалуйста. Завтра последний день сдачи
Вложения
Тип файла: rar SPZLAB1(Query).rar (476.1 Кб, 8 просмотров)
RAZOR1703 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отслеживание процессов. NSUstudent Безопасность, Шифрование 0 22.09.2010 19:41
Связка процессов MCLotos Операционные системы общие вопросы 2 10.04.2010 20:22
Убивание процессов! Nice42ru Помощь студентам 27 20.12.2009 19:47
Планировщик процессов. Артин Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 05.05.2009 23:21
Память процессов Carbon Безопасность, Шифрование 2 05.05.2007 23:59