|
4 / 4 / 4
Регистрация: 04.05.2014
Сообщений: 287
|
|
Не удается найти указаный файл при попытке запуска драйвера17.07.2014, 17:20. Показов 9896. Ответов 52
Метки нет (Все метки)
инсталирую moufiltr или firefly и пытаюсь запускать их через kmdManager драйвер регистрируется, его видно в списке служб, но он не запущен. когда я нажимаю в kmd запустить мне выдается ошибка "не могу найти указанный файл", и усе
WinDDK\7600.16385.1\ Windows XP почему? что делать? Добавлено через 9 минут в каталоге C:\WINDOWS\system32\drivers я файла moufiltr.sys действительно не наблюдаю, я скопировал его вручную, но он все равно тоже самое продолжает орать (
0
|
|
| 17.07.2014, 17:20 | |
|
Ответы с готовыми решениями:
52
Не удается найти указаный файл Не удается запустить программу. не удается найти указаный путь |
|
Ушел с форума
|
|
| 17.07.2014, 18:21 | |
|
Moufilter и firefly - это PnP-драйверы, они должны ставиться через INF-файлы или
специально написанные программы типа devcon. А KmdManager здесь не помощник. Читайте файлы "\input\hid\moufiltr.htm" и "\hid\firefly\firefly.htm", секция "Installation" - там все написано.
0
|
|
|
4 / 4 / 4
Регистрация: 04.05.2014
Сообщений: 287
|
|
| 17.07.2014, 20:00 [ТС] | |
|
установил, а можно его как то переделать в нормальные драйверы? чтобы его можно динамически загружать и выгружать?
0
|
|
|
Ушел с форума
|
|
| 17.07.2014, 22:15 | |
|
Это и есть нормальные драйверы. Они загружаются при инициализации
соответствующего узла оборудования, и выгружаются, когда необходимо выполнить определенные действия, например, во время удаления устройства.
0
|
|
|
4 / 4 / 4
Регистрация: 04.05.2014
Сообщений: 287
|
||
| 19.07.2014, 01:50 [ТС] | ||
Добавлено через 5 минут ну и тогда возникает вопрос, что это за файлы mof, inc,inf и что с ними делать?( вернее где найти инфу по тому как их сделать. Поэтому реально бы было бы меньше печали, если бы делать динамически загружаемый (
0
|
||
|
Ушел с форума
|
|||
| 19.07.2014, 02:06 | |||
|
Система загружает их, когда определяет подключение устройства. Какой смысл загружать, к примеру, фильтр клавиатуры, если она вообще не подключена ? По поводу INF все есть в MSDN, в разделах по программированию драйверов. Например, можно создать виртуальное устройство на рутовой шине (SetupDiCreateDeviceInfoList -> SetupDiCreateDeviceInfo -> SetupDiSetDeviceRegistryProperty с кодом SPDRP_HARDWAREID (если нужно) -> SetupDiCallClassInstaller с кодом DIF_REGISTERDEVICE), а затем поставить для него драйвер через UpdateDriverForPlugAndPlayDevices.
0
|
|||
|
4 / 4 / 4
Регистрация: 04.05.2014
Сообщений: 287
|
||||||||||||
| 19.07.2014, 09:36 [ТС] | ||||||||||||
- почему так? Добавлено через 2 минуты МДА! выложил сюда и заметил ) в заголовочном файле в последней строке не хватает точки с запятой. делфи рулит короче ) Добавлено через 5 минут блин, теперь осталось самое сложное, как к нему инф файл сделать (
0
|
||||||||||||
|
Ушел с форума
|
||
| 19.07.2014, 10:46 | ||
|
фильтры класса - все это ставится по-разному, а есть еще отдельные правила для WDF-драйверов (например, использование co-installer-ов). Начать можно отсюда: INF File Sections and Directives http://msdn.microsoft.com/en-u... 85%29.aspx Создаете текстовый файл и потихоньку заполняете его секциями и директивами, добиваясь того, чтобы установка работала и чтобы inf2cat.exe не выдавал ошибок. Можно взять за образец какой-нибудь небольшой INF из примеров WDK и переделать его под свои нужды.
0
|
||
|
4 / 4 / 4
Регистрация: 04.05.2014
Сообщений: 287
|
|
| 19.07.2014, 12:47 [ТС] | |
|
это фильтр драйвер сделанный в основном из firefly + moufiltr + еще какие то части из других примеров DDK
Отлов событий от мыши происходит не по обработке IRP_MJ_READ а путем подключения к очереди пакетов Mouclass'а. По задумке это должен быть драйвер-фильтр USB мыши. самое печальное, что чтобы в этом хотя бы начать разбираться нужно потратить несколько дней, чтобы это хотя бы запустить ) всю сегодняшнюю ночь я методом научного тыка рисовал заголовочный файл)) т.к. исходник был только основного )
0
|
|
|
Ушел с форума
|
||
| 19.07.2014, 13:04 | ||
|
У меня, например, уже есть готовые наработки фильтрующих драйверов из прошлых проектов, INF-файлы к ним и инсталляторы, в итоге "шапка" очередного аналогичного проекта пишется за час.
0
|
||
|
4 / 4 / 4
Регистрация: 04.05.2014
Сообщений: 287
|
|
| 19.07.2014, 17:14 [ТС] | |
|
сделал INF файл из Firefly, по сути просто переименовал Firefly на свое имя везде ) обновил существующий драйвер через оборудование....зря я это сделал ) кнопки мыши перестали работать, вернее они стали как то странно работать, все поудалял, перезагрузил винду старые вернулись на место)
а как его отдельно установить, а не вместо уже существующего?) Добавлено через 2 часа 46 минут DebugView ничего не показывает... Добавлено через 15 минут поставил в inf чтобы оно загружалось при старте виндовс. В результате В оборудовании висит с восклицательным знаком. В службах висит выключенная, запустил кмд менеджер, запустил службу, теперь говорит что работает, при этом разницы не видно, а главное в DebugView вообще ничего нет ( что не так то ( Добавлено через 10 минут мде, если вместо ps/2 драйвера поставить то не работает драйвер, если вместо USB то не работает левая кнопка мыши, а правая хз как работает, т.е. драйвер чего то делает. Но дебаг вьювер ничего не показывает ( почему он ничего не показывает ( Добавлено через 1 минуту хотя там 3 драйвера мыши 1 пс/2, и 2 усб, где то я тут читал что в WMVare одна усб за кнопки отвечает, другая за движения, может при переустановке просто слетает драйвер и ничего не работает (
0
|
|
|
Ушел с форума
|
|||||
| 19.07.2014, 19:56 | |||||
|
http://msdn.microsoft.com/en-u... 85%29.aspx Быстрый рецепт - создайте на отлаживаемой машине ключ реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl Set\Control\Session Manager\Debug Print Filter, в нем REG_DWORD-переменную с именем DEFAULT и значением 0xf (15). И перезагрузитесь. Другой способ - в WinDBG нажать 'break' и ввести команду 'ed Kd_DEFAULT_Mask 0xf'. После этого отладочный вывод должен заработать. И еще я советую сразу переходить на WinDBG, у него возможностей выше крыши, там одних только команд, не считая всяких расширений - несколько сотен. инициализации соответствующего узла оборудования. Можете поставить demand start, auto start или system start - разницы нет (хотя если задизейблить драйвер, он не загрузится вообще). А KmdManager, как и работу напрямую со службами, здесь использовать не следует. Писал выше - PnP-драйверы загружаются PnP-менеджером, а не диспетчером служб. Если мышь или клавиатура подключены через PS/2, они обслуживаются драйвером i8042prt.sys. Если через USB, тогда mouhid/kbdhid. А вообще, зря Вы взялись сразу за разбор больших сложных примеров. Начинать следует с намного более простых вещей. Ну например: - найти kbdclass/mouclass, поставить хук на его DispatchRead; - написать PnP-фильтр класса, повесить его над kbdclass/mouclass; - написать для фильтра Extension Device Object (EDO), принимающий команды из режима пользователя; - написать для этого PnP-фильтра установочный INF; - написать установщик, который ставит фильтр через INF; - и т.д. Короче, осваивать одну за другой составные темы. И только потом пытаться писать нечто в стиле FireFly, тем более он написан с использованием WDF, а это отдельная большая тема...
0
|
|||||
|
4 / 4 / 4
Регистрация: 04.05.2014
Сообщений: 287
|
||||||
| 19.07.2014, 22:48 [ТС] | ||||||
|
усе, инсталируется, дебагируется, и я даж нашел почему он вырубал кнопки. при движении мыши он вызывает LaserPU_ServiceCallback функцию в которой присваивается нечто непонятное в пакет полученный от моускласса видимо, правда ни в одно условие он не попадает, а попадает в самое последнее где MouseInputData->ButtonFlags = 0x0; все нафиг обнуляется ) я это закомментировал и теперь....как бы работает, только не делает ничего.
Наведите на мысль что нужно делать чтобы он по вызову IODeviceControl передавал пакет вниз по стеку, которого от мыши не получал, а все что он получает мне вообщем то по барабану, так что эту часть вообще надо ликвидировать ) есть где нибудь инфа как этот пакет выглядит? можно его вручную собрать? или нужно обязательно что то от мыши получать и переделывать?(вот это совсем не желательно, от мыши получать что то)
0
|
||||||
|
4 / 4 / 4
Регистрация: 04.05.2014
Сообщений: 287
|
||||||
| 19.07.2014, 23:46 [ТС] | ||||||
|
т.е. получается мне нужна функция pDriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL], а не DriverObject->MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL],
нет, все понятно, но я не понял )
Добавлено через 27 минут как вызвать колбэк, без появления входных данных? connectData->ClassDeviceObject = deviceExtension->Self; connectData->ClassService = LaserPU_ServiceCallback;
0
|
||||||
|
Ушел с форума
|
|||||||
| 20.07.2014, 00:04 | |||||||
|
Стеки драйверов клавиатуры и мыши очень похожи и состоят из двух основных компонентов - функциональный драйвер (i8042prt.sys для PS/2 или kbdhid.sys/ mouhid.sys для USB) и драйвер класса (kbdclass и mouclass). Функциональный драйвер загружается раньше драйвера класса и его DEVICE_OBJECT располагаются в стеке устройств ниже, чем устройство драйвера класса. После построения стека устройств драйвер класса посылает функциональному драйверу управляющий код IOCTL_INTERNAL_KEYBOARD(MOUSE)_CONNECT, в котором передает указатель на свою callback-функцию, которую тот должен вызывать каждый раз при получении от устройства сигналов ввода. При вызове callback-функции драйвер класса записывает полученные данные в очередной IRP, присланный ему из csrss.exe потоком ввода (Raw Input Thread, RIT). В LaserPU_DispatchDeviceControl код IOCTL_INTERNAL_MOUSE_CONNECT перехватывается и здесь нужно заменить адрес callback-функции на свой (LaserPU_ServiceCallback), сохранив при этом оригинальный. При любых событиях мыши функциональный драйвер будет вызывать вашу LaserPU_ServiceCallback, а уже она - оригинальную. Кстати, стоит отметить, что данная функция вызывается на DISPATCH_LEVEL, и это накладывает определенные ограничения на код в ней. Теперь о том, как эмулировать ввод с мыши. Очевидно, нужно заставить свой драйвер вызывать оригинальную callback-функцию, например по какому-то IOCTL-коду (используя DeviceIoControl). Это будет работать. Здесь только одна тонкость: для работы со своим IOCTL-интерфейсом в фильтрующем драйвере нужно создавать дополнительный DEVICE_OBJECT с символьной ссылкой и общаться с драйвером исключительно через него. И этот объект не нужно аттачить к стеку устройств, он должен находиться как бы "сбоку", вне стека. У Уолтера Они в главе "фильтрующие драйверы" (стр. 709, кажется ) эта техника описана.Если вы попытаетесь работать со своим фильтрующим драйвером через стек устройства, к которому он подключен, диспетчер I/O будет направлять все IRP верхнему устройству в стеке, и есть очень большая вероятность, что они просто не дойдут до вашего драйвера. Или же будут трудности на стадии открытия устройства (CreateFile). По поводу кода. 1) IoAttachDeviceToDeviceStack всегда полезно заменить на IoAttachDeviceToDeviceStackSafe - она исключает "гонки", когда устройство уже в стеке и стало участником системы обработки IRP, но указатель в DEVICE_EXTENSION еще не записан. Для данного драйвера это не существенно (т.к. AddDevice и содержимое стека полностью контролируется PnP-менеджером), но для других типов драйверов может быть очень важным. 2) В функции LaserPU_CompleteIRP упущен важный момент:
исключением могут быть только функции завершения своих собственных IRP, находящиеся на самом верхнем уровне цепочки вызовов. IRP_MN_START_DEVICE легко может возвращать STATUS_PENDING, кстати говоря. 3) На Windows Vista и выше PoStartNextPowerIrp и PoCallDriver не являются обязательными, Power IRP можно обрабатывать обычным способом, то есть, через IoSkipCurrentIrpStackLocation/IoCallDriver.
2
|
|||||||
|
4 / 4 / 4
Регистрация: 04.05.2014
Сообщений: 287
|
||
| 20.07.2014, 00:30 [ТС] | ||
0
|
||
|
Универсальный программист
|
|||||||
| 20.07.2014, 00:33 | |||||||
0
|
|||||||
|
Ушел с форума
|
||||||
| 20.07.2014, 00:40 | ||||||
2
|
||||||
|
4 / 4 / 4
Регистрация: 04.05.2014
Сообщений: 287
|
||||||
| 21.07.2014, 17:03 [ТС] | ||||||
|
попытался сварганить новый инф файл, а точнее скопировать то что по этому поводу написано в книге Walter Oney. Что мне понравилось, что при клике правой кнопкой и нажатии установить оно устанавливается и появляется в списке служб, но не запускается ( почему? если попытаться его КМД менеджером запустить (да я знаю что нельзя) ), то он говорит что он отключен и до свидания, выполняется метод Unload сразу.
Тот инф что я сейчас использую, по моему там просто замещается оригинальный драйвер...он не устанавливается по инсталу, но устанавливается если обновить существующий драйвер и появляется на месте старого.
если этот инф попытаться установить обновлением существующего драйвера, то при установке он откуда то знает производителя, а записи о производителе есть только в первом инф файле, ну и в общем устанавливается он также как и первый в этом случае. Добавлено через 2 часа 7 минут видимо он просто находит первый файл и ставит все по нему, ибо если первый убрать, то обновлением драйвера он не устанавливается, говорит что отсутствуют данные об устройстве.
0
|
||||||
| 21.07.2014, 17:03 | |
|
Помогаю со студенческими работами здесь
20
Ошибка при установке драйвера "Не удается найти указанный файл" Ошибка при попытке запуска проекта: Не удалось загрузить файл или сборку
При попытке создания выражения в вычисляемом столбце ошибка Не удается найти столбец "Не удаётся найти указанный файл" после запуска программы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|