Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Немогу получить указатель на нужное устройство 17.02.05 07:51 Число просмотров: 2294
Автор: ValEG Статус: Незарегистрированный пользователь
|
> > Надо связаться с DDK-ными фильтрами клавы и мыши > > (kbfiltr.c, moufiltr.c) как из Kernel (обратится из kbfiltr > > в moufiltr) так и из User mode. > > Связывайся, что мешает?
Что бы связаться с одним драйвером из другого, нужно, если я правильно понимаю, получить указатель на нужное устройство с помощью IoGetDeviceObjectPointer() вот он у меня возвращает ошибку (см. ниже).
> > В User mode пытаюсь определить имена имеющиеся > драйверов. > > Э-э-э. А зачем это?
Хочу из диалогового окна на лету менять настройки драйвера (назначать горячие клавиши и т.д.),
обращаясь к KbFilter_IoCtl. Это приложение уже было написано для аналогичного VXD для W95. Хотел с минимальными переделками использовать его для W2K.
Так для CreateFile() нужно имя моего драйвера, вот и хотел с помощью вызовов SetupDiGetClassDevs(), затем SetupDiEnumDeviceInterfaces(), SetupDiGetDeviceInterfaceDetail() определить какое же имя подставлять в CreateFile().
> Ну дык это ж интерфейсы девайса. Если ты при этом указал > класс клавиатуры, то она использует для связи с третьим > кольцом символические ссылки, а не интерфейсы и тебе > совершенно правильно вернули статус отсутствия интерфейсов > у этого девайса.
Ладно, сейчас попробую через символическую ссылку.
> > А объединить два фильтра (клавы и мыши) в одном > драйвере можно? > > Один драйвер может управлять произвольным > количеством устройств в том числе и устройств-фильтров.
А как это сделать? Думал добавить в AddDevice DDK-ого драйвера фильтра клавиатуры следующий код:
RtlInitUnicodeString(&mouseDevName, L"\\Device\\PointerPort0" );
// Get a pointer to the Mouse device
status = IoGetDeviceObjectPointer(&mouseDevName, STANDARD_RIGHTS_ALL,
&DeviceFileObject, &mouseDevice);
devExt->mouseTopOfStack = IoAttachDeviceToDeviceStack(device, mouseDevice);
но status возвращаемый IoGetDeviceObjectPointer не успешен. Что сделано не так?
|
|
|