Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Помогите написать драйвер

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

kodSIM

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пробую написать драйвер и столкнулся с такой проблемой: как сделать в теле драйвера задержку на определенное время (функция sleep из WinAPI не работает) и как передать драйверу величину этой задержки в милисекундах?

Всего записей: 18 | Зарегистр. 11-04-2007 | Отправлено: 09:25 03-05-2007
qwedr



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GetTickCount можно попробовать. Или таймер.
 
P.S. Странно, что sleep не работает. Возможно, у программы несколько параллельных потоков?

Всего записей: 110 | Зарегистр. 12-07-2006 | Отправлено: 11:12 03-05-2007 | Исправлено: qwedr, 11:16 03-05-2007
kodSIM

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Насколько я понял в kernel-mode вообще WinAPI не работает, только NativeAPI

Всего записей: 18 | Зарегистр. 11-04-2007 | Отправлено: 11:23 03-05-2007
vserd

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kodSIM
WaitForSingleObject

Цитата:
 и как передать драйверу величину этой задержки в милисекундах?

Через реестр, через файл настроек (.ini), создать именованный канал и с помошью самописной утилиты передавать команды.

Всего записей: 2065 | Зарегистр. 08-05-2002 | Отправлено: 15:10 03-05-2007
Qraizer



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Есть (по-моему, недокументированная) такая Native-функция - NTSYSAPI NTSTATUS NTAPI NtDelayExecution(IN BOOLEAN Alertable, IN PLARGE_INTEGER DelayInterval);
А зачем тебе задержку передавать? Сам задержись, какой-нибудь Sleep(). Вообще, общение с драйверами идёт через DeviceIoControl().

Всего записей: 613 | Зарегистр. 08-08-2006 | Отправлено: 19:20 03-05-2007
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kodSIM

Цитата:
как сделать в теле драйвера задержку на определенное время

KeWaitForSingleObject (с выходом по таймауту).
 
vserd

Цитата:
WaitForSingleObject  

User-mode функции в kernel mode не работают.

Всего записей: 6077 | Зарегистр. 22-10-2005 | Отправлено: 20:35 03-05-2007
RedPromo



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Очень нужно если есть пример написания драйвера принтера или хотя бы статья по этому поводу.

Всего записей: 558 | Зарегистр. 05-04-2006 | Отправлено: 13:00 04-05-2007
kodSIM

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нашел. Можно делать задержки с помощью функции KeStallExecutionProcessor. Правда только до 50 милисекунд.

Цитата:
Очень нужно если есть пример написания драйвера принтера или хотя бы статья по этому поводу.

Есть учебник Солдатов В.П. Программирование драйверов Windows. Там много полезного по написанию драйверов. Могу скинуть.

Всего записей: 18 | Зарегистр. 11-04-2007 | Отправлено: 14:37 10-05-2007
SANYA1024

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Можно ли написать видео драйвер для Intel Graphics с отключенным аппаратным ускорением или с имеющимся низким уровнем аппаратного ускорения?

Всего записей: 795 | Зарегистр. 23-06-2009 | Отправлено: 18:45 21-04-2013
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Наверное можно. Топик который Вы подняли умер в 2007 год. Сейчас другие системы и особенности. Я бы пользовал GetTickCount, либо GetLocalTime(st) в крайнем случае.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 20:53 22-04-2013
SANYA1024

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
delover
Да это было нужно моему знакомому, у которого игра - "War Thunder" не на всех картах грузилась.
На одних хорошо, а на других вылетала игра.
Прошло время и разработчики устранили эту проблему.
Но с постепенными обновлениями игры, она перестала запускаться на ноутбуке, так как стала требовательней к графике, передал мне мой знакомый.

Всего записей: 795 | Зарегистр. 23-06-2009 | Отправлено: 02:26 11-12-2015
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Помогите написать драйвер


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru