Опять про мышь

Тема в разделе "WASM.NT.KERNEL", создана пользователем rpy3uH, 26 май 2011.

  1. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    503
    Есть драйвер-фильтр мыши (стандартный установленный через PnP, такой же как и kbdclass). Задача: надо время от времени перемещать или нажимать кнопки на мыши (разумеется эмулировать надо).
    Мой вариант такой: в обработчике IRP_MJ_READ создаю новый IRP (назовём его IRP2), заполняю его назначаю для него IoCompletionRountine и его отправляю дальше. Irp который получил ставлю PENDING и тоже жду. Если запускается IoCompletion от IRP2, в ней мы передаём данные в IRP1 и выполняем IoCompletion от IRP1. Таким образом мы обеспечиваем взаимодействие с драйвером клавы. Есть системный поток, которому время от времени хочется чтобы произошёл клик мышью. в обработчике IRP_MJ_READ помимо создания нового IRP мы заодно заносим его адрес в какую-нибудь переменную. Так вот системный поток вдруг захотел чтобы мышь кликнула, он заполняет эту последную IRP полученную из user mode нужными данными и выполяет её IoCompletion. Таким образом мы виртуально нажимаем на кнопку мыши.

    Такая схема работать будет? И вообще может можно сделать проще?
    Да и я не знаю что будет если IoCompletion от IRP2 выполнится в тот момент когда IRP1 будет выполнена, а новая IRP от user mode ещё не придёт.
     
  2. Llirik

    Llirik Member

    Публикаций:
    0
    Регистрация:
    18 июл 2008
    Сообщения:
    471
    Нет. Твой фильтр даже получать никакого IRP_MJ_READ не будет. Лучше написать callback. И если не секрет, в чём суть твоей задачи?)
     
  3. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    503
    не понял, почему? мой драйвер получает IRP_MJ_READ из usermode а дальше отправляет уже другой (новый) IRP.

    чтобы с помощью некоторых кнопок на клаве, можно было кликать мышью. Не надо говорить что это можно сделать с помощью стандартных API, я просто думаю какие варианты ещё есть
     
  4. Llirik

    Llirik Member

    Публикаций:
    0
    Регистрация:
    18 июл 2008
    Сообщения:
    471
    Если из usermode, то будет) Я то имел ввиду от вышестоящего драйвера не будет) Если пропишешь свой драйвер после Mouclass, то возможно и получится, хотя я такой вариант не пробовал, а вот есле до, то точно не получится.
    Вообщем-то у нас задачи схожи, только моя более расширенная)