Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Драйвер-фильтр клавиатуры 
:(
    Опции темы
akaGK
Дата 29.6.2008, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 29.6.2008

Репутация: нет
Всего: нет



помогите пожалуйста с драйвер фильтром. Задача в следующем: нужно двигать курсором мыши со стрелочек клавиатуры. Как сделать точно не понимаю, планировал получать из драйвера код нажатой клавиши, а курсором шевелить в клиентском приложении. Что нужно изменить/добавить в пример из ДДК? Или можно совсем как то по другому все это осуществить? Желательно поподробнее опишите...


вот так пробую подключиться в драйверу из приложения, в функции обработки IRP_MJ_READ есть DbgPrint, ничего не выводится к сожалению(
Код

void __fastcall TfrmDriver::Button1Click(TObject *Sender)
{
          HANDLE hHandle = CreateFile( "\\\\.\\MyKeyboardFilter",GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
        
          bool Ret;
          char *buf = NULL;
          buf = new char[10];

          Ret = ReadFile(hHandle,buf,8,NULL,NULL);
}



Это сообщение отредактировал(а) akaGK - 29.6.2008, 21:23
PM MAIL   Вверх
W4FhLF
Дата 30.6.2008, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 12
Всего: 121



Цитата(akaGK @  29.6.2008,  19:36 Найти цитируемый пост)
вот так пробую подключиться в драйверу из приложения, в функции обработки IRP_MJ_READ есть DbgPrint, ничего не выводится к сожалению(


На это могут быть несколько причин:

1. Неправильно создаётся устройство или ссылка.
2. Драйвер загружается с ошибкой.
3. Неверно установлен обработчик.


При вызове CreateFile драйверу посылается IRP_MJ_CREATE, попробуй туда отладочный вывод поставить. 

Это сообщение отредактировал(а) W4FhLF - 30.6.2008, 10:14


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
akaGK
Дата 30.6.2008, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 29.6.2008

Репутация: нет
Всего: нет



подскажите пожалуйста еще как правильнее в драйвере записать в буфер

в драйвере я в обработчике MJ_READ, установил callback процедуру в которой и хочу записывать в буфер.
Код

NTSTATUS Read_IRP_Handler(IN PDEVICE_OBJECT DeviceObject,IN PIRP IRP)
{
    PDEVICE_EXTENSION    DeviceExtension;
    PIO_STACK_LOCATION    CurrentIRPStack;
    PIO_STACK_LOCATION    NextIRPStack;

    DeviceExtension=(PDEVICE_EXTENSION)DeviceObject->DeviceExtension;
    CurrentIRPStack=IoGetCurrentIrpStackLocation(IRP);
    NextIRPStack=IoGetNextIrpStackLocation(IRP);    

    *NextIRPStack=*CurrentIRPStack;
    IoSetCompletionRoutine(IRP,HandleKeyPress,DeviceObject,TRUE,TRUE,TRUE);

    return IoCallDriver(DeviceExtension->TopOfStack,IRP);
}
.....
NTSTATUS HandleKeyPress(IN PDEVICE_OBJECT DeviceObject,IN PIRP IRP,IN PVOID Context)
{
    PIO_STACK_LOCATION    IRPStack;
    PKEYBOARD_INPUT_DATA    KeyData;
    
    IRPStack=IoGetCurrentIrpStackLocation(IRP);
    
    /* вывод в буфер */

    if (IRP->PendingReturned) IoMarkIrpPending(IRP);

    return IRP->IoStatus.Status;
}


нужно добавить вывод, а так все верно?

Это сообщение отредактировал(а) akaGK - 30.6.2008, 10:21
PM MAIL   Вверх
ama_kid
  Дата 30.6.2008, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 5
Всего: 95



Цитата(akaGK @  29.6.2008,  19:36 Найти цитируемый пост)
Задача в следующем: нужно двигать курсором мыши со стрелочек клавиатуры.
Для этого обязательно использовать драйвер-фильтр?  smile  smile


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
W4FhLF
Дата 30.6.2008, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 12
Всего: 121



akaGK, что-то не то у тебя совсем. Глянь в личку.

Это сообщение отредактировал(а) W4FhLF - 30.6.2008, 11:02


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
akaGK
Дата 30.6.2008, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 29.6.2008

Репутация: нет
Всего: нет



ama_kid, это курсач по системному программированию, такова тема

Добавлено через 10 минут и 27 секунд
W4FhLF, ого, ну пожалуй так сложно не стоит делать) мне бы попроще чего нибудь...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0900 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.