Здравствуйте,господа.У меня есть такой вопрос-мне нужно под одно из устройств написать драйвер,причём в одной точке нужно прочитать данные из ком-порта и вернуть ответ обратно не больше чем за 10 мсек.Как это лучше всего сделать,чтобы 100% не вылетали тайм-ауты?
Просто. Перехват непосредственнов IDT, поскольку если ты присоединишь объект прерывания в цепочку, мала вероятность, что до тебя быстро дойдёт очередь. В обработчике не разрешай прерывания от аппаратуры, покуда не сделаешь свои дела, в принципе прерывание ком-порта выше него только железные остались. Так что я не вижу никаких проблем. Кроме того, обработчик сам должен быть минимальным и быстрым, иначе может случиться деградация системы. Остерегайся в эти моменты работать с PagedPool, поскольку страничку в эти моменты тебе никто не подкачает.
Ещё вопрос:как писать в порт и читать из него?На уровне аппаратуры и портов делать нехорошо,надо обращаться к драйверу кома,потому что может быть аппарат вида USB to COM.Как делать-через ZwWriteFile,например,или самому лучше делать IRP пакеты чтения-записи для записи в порт? ТОгда драйвер прийдётся ставить в стек.
Ещё вопрос.Выставляю в win32 приложении приоритет: SetPriorityClass(GetCurrentProcess,REALTIME_PRIORITY_CLASS); Возвращает ошибку.Почему?
Ещё вопрос.Выставляю в win32 приложении приоритет: SetPriorityClass(GetCurrentProcess,REALTIME_PRIORITY_CLASS); Возвращает ошибку.Почему?