Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1] 2  Все   Вниз
  Печать  
Автор Тема: Отключение многозадачности Windows  (Прочитано 20988 раз)
0 Пользователей и 1 Гость смотрят эту тему.
CTAPOBEP
Постоялец

ru
Offline Offline
Пол: Мужской

« : 10-03-2008 15:30 » 

Здравствуйте, люди добрые. Доброго вам дня али вечера. Бог в помощь. Намедни в Интернете зловонном нашел я клад золотой, вещицу чудесную. "Отключение многозадачности Windows" называется. И возрадовался я, ибо и на ужасное порождение сатансовтово управа нашлась. И написал я функцию, поразить гада способную. Функция сия проста, как козявка безгрешная, но сила страшная в ней заключается:

void TackSwitchOff(void)
{
   __asm
   {
      mov ax,0x1681
      int 0x2F
   }
}

То, что зверь, "XP" именуемый, чихнул токмо от оружия моего не удивило меня, но и братья его меньшие, цифры "95" и "98" на борту имеющие, отрыжкой на меня дохнули. Помогите, люди добрые, заточить мое оружие, много добра смогу посеять я в мире с его помощью.
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 10-03-2008 15:47 » 

Оооо. Намечается еше один экспонат в нашу кунткамеру.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #2 : 10-03-2008 16:16 » 

CTAPOBEP, кто к нам из лесу придёт , тот от леса и погибнет Улыбаюсь
Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #3 : 10-03-2008 16:46 » 

CTAPOBEP, это ж давно известный код для программного переключения Windows 2000 Professional в Windows 2000 Server.

А отключение многозадачности подобным способом работает только с официально зарегистрированной и активированной версией Vista Enterprise, у которой после специальной активации можно действительно отключать многозадачность таким способом.
Поскольку производитель в ближайшем будущем прекращает поддержку систем до версии 6.0, в них отключение многозадачности не предусмотрено. В случае острой необходимости необходимо обратиться к производителю. Уверен, они пойдут на встречу.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
CTAPOBEP
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 10-03-2008 17:07 » 

Джон, спасибо ! Хоть какие-то подробности. А то я в нескольких местах этот трюк видел, но никто толком сказать ничего не может. Оно, конечно, и под DOS'ом неплохо работает... Но нет предела совершенству ! Пойду копать дальше.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 10-03-2008 17:35 » 

CTAPOBEP, а что, в досе тоже "Отключение многозадачности Windows" работает ? ))
Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #6 : 10-03-2008 22:50 » 

Лёш, конечно работает. Надо только соответствующий драйвер процессора установить. Если не ошибаюсь для 80286 это был multtask.sys
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #7 : 11-03-2008 07:16 » 

я, кажется, нашёл причину, почему не работает функция. Всё дело в досадной опечатке
void TackSwitchOff(void)

теперь работает( по крайней мере на бумаге)
Записан

Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #8 : 11-03-2008 09:03 » 

Что-то у меня мозг разрывает от фразы "Отключение многозадачности Windows"
Что сие вообще значит?
Записан

Странно всё это....
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #9 : 11-03-2008 09:25 » 

Лёшка, МОЛОДЕЦ!!! Конечно же надо TaSk.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #10 : 11-03-2008 09:34 » 

LogRus, это есть всем известный "подрыв работоспособности компании" при помощи подрыва работоспособности отдельных юнитов, управляемых данной ОС. А человек - будущий вирусописатель , не иначе
Записан

CTAPOBEP
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #11 : 11-03-2008 13:53 » 

Название функции я сам придумал, это здесь при чем?

Что до остального. Дабы пресечь гнусные инсинуации, поясняю. Что есть сейчас? Сейчас есть система сбора данных (она же - измерительный комплекс), которая состоит из двух компьютеров - один работает в реальном времени под управлением DOS (он просто опрашивает внешние датчики), а второй - под управлением Windows (он красиво все обрабатывает). А связаны они через COM порты. Если бы я смог запустить программу в реальном времени под Windows, Я БЫ МОГ... /судорожно вытаскивает из кармана губозакатывательную машинку и включает ее/.
Записан
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #12 : 11-03-2008 14:07 » 

CTAPOBEP, блин повысь приоритет софтины до максимального
или используй RTOS
Записан

Странно всё это....
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #13 : 11-03-2008 16:18 » 

CTAPOBEP, ты бы с этого начал. А то так ведь и схлопотать не долго. Прецеденты уже были. Кто тебя знает - троль ты (у нас они в последнее время заводятся как тараканы), или серьёзный человек с проблемой.

Тебе сначала, надо разобраться с терминами "многозадачность", "реальное время", "Real-Time Operating System". На самом деле проблемы твоей не существует. Всё что ДОС может, может винда тоже.

зы (шёпотом) только никому не говори, что ДОС - это ОС реального времени, можно нарваться на неприятности. Посмотри здесь, что это вобще такое

Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
CTAPOBEP
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #14 : 11-03-2008 17:26 » 

Пошутил, да) Название ваше этому способствует.

По поводу того, что Windows то же, что и Dos может. Я сделал такую штуку - функциональный генератор (буферный регистр + ЦАП и висит это все на LPT порте), а программа просто пишет в него данные по таймеру. Для проверки я играл через него музыку (wav-файлы). Так вот - под Windows искажения слышны даже на слух, никакие приоритеты не помогают, под DOS результат гораздо лучше. Впрочем, не исключено, что я чего-то не понял Улыбаюсь

А проблемы-то и правда никакой нет) То, что есть, меня в целом устраивает. Просто я случайно увидел в И-нете... Так и было написано - "Отключение многозадачности Windows" и пара строк на ассемблере. Ну я и стал рыться. Все, что нашел - программу на ассемблере, в которой были в том числе и эти строки и комментарий в том смысле, что, мол, не удивляйтесь, при запуске будет ощущение, что Windows повисла, так и должно быть. Ну и размечтался, конечно, что с COM-портов перейду на USB, а там и до BlueTooth адаптеров недалеко... Стенд в одном углу, ноутбук в другом, красота!
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #15 : 12-03-2008 09:56 » 

BlueTooth кстати очень медленные. Лучше смотри в сторону WiFi, если без проводов хочешь делать - и скорость выше, и радиус действия.

Под виндой у тебя есть возможность как сказал LogRus повысить приоритет выполняемой проги. Это пробовал?

А про LPT - просто тапорная работа скорей всего была. Тем более у тебя СОМ, кстати на каких скоростях работаешь?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
CTAPOBEP
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #16 : 12-03-2008 16:22 » 

Джон, я делал так -

HANDLE hMyThread=GetCurrentThread(void);
BOOL result=SetThreadPriority(hMyThread, THREAD_PRIORITY_TIME_CRITICAL);
if (!result) MessageBox(NULL, "Приоритет не назначен", "", MB_OK);

Тут еще, правда, есть один нюанс. В Dos'e я пишу в порт напрямую, а в Windows - через сторонний драйвер (UserPort.sys). Может, он чего чудит ? Кто-нибудь с ним дело имел ?

Через COM порт информацию гоняю на 38400, при этом потери информации, собирал статистику, у меня составляют около 1%. Но тут большая скорость и не нужна - хосту торопиться некуда Улыбаюсь

Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #17 : 12-03-2008 18:47 » 

Хммм... для СОМ есть вобще-то serial.sys я через него скорости до 115200 бод гонял без потери инфы  с хардверным хэндшейком. Причём всё на айпишных ф-ях без модифицирования драйвера и без задирания приоритета...

Покажи кусок кода открытия порта и чтение/запись.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #18 : 12-03-2008 20:17 » 

Потеря информации на com портах, скорее связана  с качеством линии и девайсов, я даже больше скажу, если бы не отдельные схема управления comпортами, то можно было бы добиваться и на много большей скорости...
Т.е. разрешающая способность скорости порта зависит от качества линии и... от частоты процессора. К сожалению, не могу четко и ясно описать работу com порта на PC, но прекрасно знаю работу последовательных портов.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
CTAPOBEP
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #19 : 13-03-2008 07:54 » 

Наверно, уточнение требуется... В COM порт я пишу через CreateFile, UserPort.sys использую для LPT. Ты у меня код для какого порта спрашиваешь?
Записан
CTAPOBEP
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #20 : 13-03-2008 08:09 » 

Вот еще к вопросу о работе в реальном времени. Как вам это? Цитирую:

"Для сравнительно простых систем можно отказаться от использования операционных систем. Программу функционирования компьютера можно «зашить» в ПЗУ, оформив в виде модуля расширения BIOS, и эта программа получит управление от POST. Можно и не связываться с ПЗУ, а загружать программу с устройства хранения простым загрузчиком, первая ступень которого должна совпадать со стандартным начальным загрузчиком."
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #21 : 13-03-2008 09:37 » 

CTAPOBEP, "ближе к телу, как говорил Мопассан" (с) Давай разберёмся с тем, что тебе действительно нужно.

2. Это всё-равно, что космическую станцию переделать в устройство зарядки аккумуляторов. Ага Проще воспользоваться микроконтроллером.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
CTAPOBEP
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #22 : 13-03-2008 18:04 » 

Нужен мне был ответ на вопрос - см. название темы Улыбаюсь Ответ я получил, хотя и не тот, на какой рассчитывал. Ну и на этом спасибо)

По поводу зарядки аккумуляторов космическими станциями - почему бы и нет? Если как раз лишняя под столом валяется Улыбаюсь А микроконтроллером все, скорее всего, и кончится. Пожелайте мне удачи)

Поскольку вопрос был задан, а уточнения не последовало, отвечаю на тот, который мне удобен) Вот мой код для асинхронной работы с COM-портом:


////////////////////////////////////////////////////////////////////////////////////////////////
class CComPort 
{
   void *hCom;

public:
   CComPort(char *name_port="COM1", int speed=CBR_38400);
   virtual ~CComPort();

   BOOL Error(void);
   int Read(void);
   void Write(const char* command);
};

CComPort::CComPort(char *name_port, int speed)
{
   hCom = CreateFile(name_port, GENERIC_READ | GENERIC_WRITE,
         0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);

   if (hCom == INVALID_HANDLE_VALUE) return;

   DCB dcb;
   GetCommState(hCom, &dcb);
   dcb.BaudRate = speed;
   dcb.ByteSize = 8;
   dcb.Parity = NOPARITY;
   dcb.StopBits = ONESTOPBIT;
   if (!SetCommState(hCom, &dcb))
   {
      CloseHandle(hCom);
      hCom = INVALID_HANDLE_VALUE;
   }
}

CComPort::~CComPort()
{
   if (hCom == INVALID_HANDLE_VALUE) return;

   CloseHandle(hCom);
   hCom = INVALID_HANDLE_VALUE;
}

int CComPort::Read(void)
{
   if (hCom == INVALID_HANDLE_VALUE) return -1;

   static enum {READY, WAIT};
   static int mode=READY;
   static unsigned char sReceivedChar=0;
   static OVERLAPPED o_Read={0, 0, 0, 0, 0};

   if (mode == READY)
   {
      o_Read.InternalHigh=0;
      sReceivedChar=0;
      if (ReadFile(hCom, &sReceivedChar, 1, NULL, &o_Read)) return sReceivedChar;
      if (GetLastError() == ERROR_IO_PENDING) mode=WAIT;
      return -1;
   }
   if (mode == WAIT && o_Read.InternalHigh > 0) {mode=READY; return sReceivedChar;}
   return -1;
}

void CComPort::Write(const char* command)
{
   if (hCom == INVALID_HANDLE_VALUE) return;

   DWORD iSize;
   static OVERLAPPED o_Write;
   o_Write.Offset=o_Write.OffsetHigh=o_Write.Internal=o_Write.InternalHigh=0;
   o_Write.hEvent=NULL;
   WriteFile(hCom, command, strlen(command), &iSize, &o_Write);
}

BOOL CComPort::Error(void)
{
   if (hCom == INVALID_HANDLE_VALUE) return true;
   else return false;
}

//////////////////////////////////////////////////////////////////////////////////////////////////

Один нюанс - функцию Read() нужно вызывать непрерывно в отдельном потоке (ну или хотя бы по таймеру) и все неотрицательные значения записывать в буфер.
Записан
CTAPOBEP
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #23 : 16-03-2008 10:32 » 

Еще цитата в тему:

"У COM-порта макс. частота 115КГц(кажется), это спокойно можно и
таймером мерить. Хочешь большей точности -- пиши драйвер. Как -- в
конфе уже писалось не раз. В драйвере маскируем все прерывания, кроме
прерывания от COM-порта, руками ставим свой обработчик в IDT и считаем
в нем такты. Пример обработчика можно нарыть из старых, DOS-времен
прог для работы с COM-портом. У меня таких навалом. То есть фактически
на какое-то время получаем мини-RTOS. Только винда будет мертва, пока
прерывание таймера снова не разрешат.
Но иначе такой счетчик теряет
надежность. То есть дернут-не дернут управление, черт его знает.»
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #24 : 16-03-2008 18:05 » 

CTAPOBEP, на первый взгляд не увидел в твоём коде для СОМ ничего необычного (кроме может быть вопроса, а зачем тебе асинхронный режим?). Поэтому не было коментов.

А цитата... Не знаю  к чему она относилась, но в общем глупость. 1. Скорость передачи порта ограничена железом (быстродействием чипов), а не драйверами. 2. Драйвер СОМ порта и так работает по прерываниям, только винда почему-то не виснет.

Для пользы дела. Давай так. Опиши какие проблемы с быстродействием у тебя под виндой с СОМ портом, это как я понимаю было основной причиной поиска отключения многозадачности. Их и будем разбирать. На всё остальное извини просто нет времени. Ок?

Первый вопрос был поставлен - зачем тебе именно асинхронный режим? Ещё в догонку, какой протокол используется для обмена инфой?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #25 : 16-03-2008 19:14 » 

Как сказал Джон, скорость порта ограничена железом (чипами, обслуживающими сам порт), и частотой которая поступает на эти чипы.
Чтобы тебя не сильно смущала скорость порта, о которой ты знаешь, ответь, например на такой вопрос, какая скорость, например у DSL модемов, и поскольки проводам они работают (сколько проводов у RS232 интерфейса, сколько проводов у 485 интерфейса?). Что такое асинхронный режим, синхронный?

Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Люсь
Модератор

ru
Offline Offline
Пол: Женский

« Ответ #26 : 17-03-2008 03:54 » 

чё эта тема в общении делает? Улыбаюсь))
Записан

Посторонним просьба не беспокоить!
-------------------------------------------------
O (I) Rh +
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #27 : 17-03-2008 09:04 » 

Люсь, определимся с направлением - потом перенесу.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Люсь
Модератор

ru
Offline Offline
Пол: Женский

« Ответ #28 : 17-03-2008 09:57 » 

Улыбаюсь)
не, я так, просто Улыбаюсь даже интересно почитать Ага
усё, молчу, мой пост в ответе не нуждается.
продолжайте пожалуйста Улыбаюсь
Записан

Посторонним просьба не беспокоить!
-------------------------------------------------
O (I) Rh +
CTAPOBEP
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #29 : 18-03-2008 16:51 » 

Первое.

Барышне - цветы. Прямо из лесу Улыбаюсь


Второе.

Последняя цитата была... Хммм... Не могу найти... Впрочем, это к данной теме не относится.

Третье.

Видимо, я не совсем точно выражаюсь... Отвлекаюсь все время, да. Как я уже писал, есть два компьютера - один работает под Windows (хост), другой - под DOS. Хосту работать в реальном времени не нужно, его задача - запросить уже собранную информацию и обработать ее. Передача информации тоже особых проблем не вызывает. Все самое сложное происходит на втором компьютере - он-то и должен в реальном времени опрашивать внешние устройства. Сейчас он работает под DOS, поскольку она объективно лучше подходит для этой цели (кстати, когда я веду мышь по окну программы-генератора (той, что под Windows), на выходе получаю ужасный треск). Чтобы можно было работать под Windows (которая даст гораздо больше возможностей, в частности, для измерения времени), и нужно отключить эту самую пресловутую многозадачность. Переключения задач, кстати, происходят по системному таймеру, его можно как-то отключить? Программно или аппаратно, неважно. И каковы будут последствия?

Четвертое.

Асинхронный режим работы с COM-портом нужен, чтобы можно было работать в одном потоке. Протокол обмена разработал сам, просто система команд, обвешанных контрольными суммами.

Пятое.

А если поставить вопрос с ног на голову? Точнее, поставить так, как его следовало поставить с самого начала Улыбаюсь Какие вообще есть операционные системы, позволяющие работать в реальном времени? Предполагается, что более предпочтительной будет являться такая система, которая реже прерывает работу программы.
« Последнее редактирование: 19-03-2008 09:43 от Джон » Записан
Страниц: [1] 2  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines