|
4 / 4 / 4
Регистрация: 04.05.2014
Сообщений: 287
|
|
Не удается найти указаный файл при попытке запуска драйвера17.07.2014, 17:20. Показов 9893. Ответов 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
Не удается найти указаный файл Не удается запустить программу. не удается найти указаный путь |
|
Ушел с форума
|
|||||||
| 21.07.2014, 21:52 | |||||||
|
Например, на 64-битных Windows от Vista и старше загрузка драйвера блокируется, если нет цифровой подписи. Но я думаю, причина более прозаична. И кстати, такого не может быть, чтобы Unload отрабатывал без вызова DriverEntry.
про CatalogFile вообще молчу.
Setup Class. А такое на практике требуется действительно редко. Даже MSDN пишет: "You should only create a new device setup class if absolutely necessary". Посмотрите INF-файл от moufiltr - это типичный установочный файл для драйвера устройства. Там есть все - и ClassGuid, и секция Manufacturer, и регистрация через UpperFilters. WDF-специфика (co-installers), правда, немного "смазывает" общую картину, но никто не мешает посмотреть на примеры из более ранних DDK (у меня в блоге есть). И еще раз напомню: используйте inf2cat.exe, он быстро выявляет основные ошибки в INF. А корректно написанный INF-файл должен проходить тесты inf2cat.exe даже без предупреждений. какому классу оборудования он относится (нет Class и ClassGuid) !
0
|
|||||||
|
4 / 4 / 4
Регистрация: 04.05.2014
Сообщений: 287
|
|||||
| 21.07.2014, 22:09 [ТС] | |||||
Добавлено через 3 минуты
Добавлено через 4 минуты
Добавлено через 38 секунд
0
|
|||||
|
Ушел с форума
|
|||
| 21.07.2014, 22:37 | |||
|
Вы же в INF ничего не написали. Радикальную меру порекомендую: открываете MSDN, раздел INF-файлов и все, что касается установки драйверов, читаете от корки до корки, непонятные термины выписываете отдельно, затем по каждому ищете объяснение - в том же MSDN, в Гугле, здесь, и т.д., до полного прояснения. Затем читаете снова все от корки до корки, пока теоретических вопросов не останется. И только потом садитесь и пишете нормальный, а не кастрированный, INF-файл. С валидацией через inf2cat и пробами на 32-битной и 64-битной виртуалках.
0
|
|||
|
4 / 4 / 4
Регистрация: 04.05.2014
Сообщений: 287
|
||||||||
| 22.07.2014, 06:34 [ТС] | ||||||||
когда делаешь DeviceIoControl вызывается функция драйвер объекта pDriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL]=CtlDispatch; вот тут мне то же не очень понятно, все функции определены в драйвере, т.е. функцию вызова из приложения мне некуда больше записать. И меня терзают смутные сомнения... Добавлено через 4 минуты
Добавлено через 12 минут а хотя нет, там прям так 2 девайса и создаются, просто определение edo пропущено....но я все равно не понял, как его после этого уничтожить, т.к. как к нему из драйвера обратиться я не понимать. Добавлено через 4 часа 12 минут также, как обратиться к этому объекту из приложения? ведь драйвер уже запущен....да и сервис вроде как тоже. т.е. мне все равно нужно делать CreateFile.... - потому что иначе неясно где взять хендл на драйвер. Ну а имя на которое мы создавали линк, оно фигурирует только в OpenService, т.е. нужно и сервис запускать? т.е. на "боковой" объект будет отдельный сервис и его и запускать нужно?... а иначе зачем нужен линк вообще? кажется мне что я ничего не понимаю ) Добавлено через 5 минут йоу, похоже я достучался до объекта)) ибо получил бсод) IRQL_NOT_LESS_OR_EQUAL, а можно как то тормознуть отладку до бсода? я даже скачал SoftICE установил, но ничего не понял Добавлено через 10 минут ан нет, бсод проиходит еще до того как я успеваю чего либо вызвать, собственно он по событию от мыши и случается ) Добавлено через 1 час 1 минуту он заходит в ентри, заходит в адд девайс, и даже по 2 раза заходит в IRP_MJ_INTERNAL_DEVICE_CONTROL и IRP_MJ_DEVICE_CONTROL еще до того как я двигал мышкой или вообще что то делал. причем во втором даже срабатывает как то условие с моим IOCL. я поставил условие что если вошли IRP_MJ_INTERNAL_DEVICE_CONTROL то это должно быть устройство подключенное к пнп иначе выход (так как в книжке написано флаг в девайс екстеншене сделал), а в IRP_MJ_DEVICE_CONTROL что не подключенное. В противном случае return, и вот когда двигаешь мышкой он все равно вылетает....
0
|
||||||||
|
Ушел с форума
|
|||||||||||||
| 22.07.2014, 10:03 | |||||||||||||
Двигаться по нему можно с помощью DEVICE_OBJECT::NextDevice, пока не будет получен NULL. И вообще, в Unload удаляются только legacy-девайсы, а для приаттаченных к PnP-стеку устройств есть IRP_MN_REMOVE_DEVICE.
символьную ссылку на него. По символьной ссылке устройство можно открывать через CreateFile. Второе устройство, которое цепляется в стек, создается в AddDevice. Это Filter DO. Задача драйвера - установить коммуникации между EDO и FilterDO. Например, по какому-то IOCTL блокировать устройство или модифицировать его поведение. EDO, кстати, может быть несколько, все зависит от требований.
на XP запустить его проблема. Советую сразу переходить на WinDBG.
Способ отличать Filter DO от Extension DO я привел выше. Остальное есть в MSDN, но Вы же его не любите...
0
|
|||||||||||||
|
4 / 4 / 4
Регистрация: 04.05.2014
Сообщений: 287
|
||||||||||||||||||
| 22.07.2014, 22:34 [ТС] | ||||||||||||||||||
Добавлено через 1 час 55 минут не замечал раньше этой ошибки, но теперь она вылазит постоянно, и ничего не могу с ней сделать оказывается "девайс сбоку" не создается и мы все время вылетаем по этому условию
и дебаг статуса не выводит = KdPrint не выводит edoStatus ) Добавлено через 1 час 56 минут перегрузил винду...ошибка пропала....ну еще добавил FILE_DEVICE_SECURE_OPEN вместо нуля.... Добавлено через 43 минуты это должно работать? потому что пока что оно не работает, хендл не получается. И синий экран забодал, не пойму откуда он вылазит (
Т.к у меня конструкция typedef struct Device_EXTENSION : public COMMON_DEVICE_EXTENSION вызывала синтаксическую ошибку, то я убрал общую структуру и в обоих оставил просто одинаковое поле, и таким образом когда я проверяю флаг, я всегда объявляю указатель PDEVICE_EXTENSION deviceExtension в независимости от девайса, может это совсем не правильно и это и вызывает бсод? Добавлено через 26 минут мда....закоментировал все что добавил и все равно бсод....ппц Добавлено через 16 минут чуял же что дело гиблое )) скажите лучше как без мыши пс/2 в порте заставить винду думать что там кто то есть ) Добавлено через 1 час 14 минут грохнул все и начал все заново ) добавил объект сбоку без екстеншена, добавил его анлоад (правда потестить его видимо не удалось он че то туда не заходит). добавил в основной екстеншен флаг и проверку на флаг в итернал девайс и пропускание пакета.. бсод пока не приходил )
0
|
||||||||||||||||||
|
Ушел с форума
|
||||||||||||||||
| 22.07.2014, 22:41 | ||||||||||||||||
Можно поменять на DbgPrint. Уверены, что WinDBG подключен правильно ? Он вообще что-нибудь выводит при старте отлаживаемой машины ?
использованием COM-порта, который перенаправляется в канал (debug_pipe). На Vista и выше там нужно еще дополнительно в ключе Debug Print Filter прописать REG_DWORD-переменную DEFAULT со значением 0xf (15). Да, еще отладчик должен быть настроен на автоматическое скачивание отладочных символов Windows с сервера Microsoft, проще всего завести где-нибудь папку и прописать путь к ней через системную переменную _NT_SYMBOL_PATH, как это описано в документации для WinDBG.
номера строки в исходном файле.
должна быть одинаковой. Хотя бы первое поле. И при создании устройства сразу нужно записать в его DEVICE_EXTENSION соответствующий тэг. Тогда, имея полученный откуда-либо DEVICE_OBJECT, можно по тэгу в его DEVICE_EXTENSION сразу узнать, что это за устройство - Filter DO, Extension DO или еще что-то. Кстати, использовать именно тэги никто не заставляет. К примеру, можно для каждого устройства завести в DEVICE_EXTENSION указатель на свою копию Major Table с адресами обработчиков IRP_MJ_XXX. Получится нечто в стиле виртуальных методов из C++. Когда в драйвере много разных типов устройств, эта стратегия может быть выгоднее, так как вместо развесистых if-ов или switch-case весь диспатчинг сведется к одному вызову функции через указатель.
По поводу BSOD - займитесь подключением WinDBG, тогда будете точно знать, в чем причина.
0
|
||||||||||||||||
|
4 / 4 / 4
Регистрация: 04.05.2014
Сообщений: 287
|
|
| 22.07.2014, 23:04 [ТС] | |
|
добавил IRP_MJ_DEVICE_CONTROL бсода нет, старые колбеки работают, а хендл на девайс все равно неверный (
Добавлено через 6 минут я сделал ход конем и сделал всего одну структуру DEVICE_EXTENSION, а в ней ссылку на саму себя, теперь у меня везде экземпляр структуры того же самого типа в обоих девайсах. Добавлено через 33 секунды почему хендл не получается? ( код я выше писал...
0
|
|
|
Ушел с форума
|
|
| 22.07.2014, 23:06 | |
|
Причина ошибки в NTSTATUS/GetLastError.
0
|
|
|
4 / 4 / 4
Регистрация: 04.05.2014
Сообщений: 287
|
|
| 22.07.2014, 23:41 [ТС] | |
|
код 2, файл нот фаунд? ну я вообщем то это и подозревал, но понятнее от этого не стало )
Добавлено через 5 минут '\\\\.\\mssnddv' - так 123 - неверный путь к файлу , Pchar('\\\\.\\mssnddv') - 53, PChar('mssnddv') - 2 Добавлено через 47 секунд ERROR_BAD_NETPATH53 (0x35) The network path was not found.
0
|
|
|
Ушел с форума
|
||
| 22.07.2014, 23:47 | ||
|
Или драйвер еще не запущен. Вообще, можете весь код от "а" до "я" выложить ? Надо пройтись по нему как следует, да с пристрастием
0
|
||
|
4 / 4 / 4
Регистрация: 04.05.2014
Сообщений: 287
|
||||||
| 22.07.2014, 23:54 [ТС] | ||||||
|
старые замечания я не исправлял ) ибо итак пока хватает ужасов
0
|
||||||
|
4 / 4 / 4
Регистрация: 04.05.2014
Сообщений: 287
|
|||||||||||
| 23.07.2014, 00:02 [ТС] | |||||||||||
h
там его нашел я Добавлено через 11 секунд в Global
0
|
|||||||||||
|
Ушел с форума
|
|
| 23.07.2014, 02:07 | |
|
Бросается в глаза вот что: EDO создается каждый раз с одним и тем же
именем и символьной ссылкой. Это неправильно. В системе может быть два и более стеков клавиатуры и мыши - по одному стеку на каждое физически подключенное устройство и еще один стек для RDP. В Windows 8 и выше, кстати, немного по-другому: там по одному стеку на каждое физ. устройство и по одному на каждую активную RDP-сессию. Так что AddDevice в общем случае может вызываться два раза и более. Можно перенести код создания EDO в DriverEntry, например. Только учитывайте, что драйвер не будет полностью выгружен, пока есть хотя бы одна ссылка на DEVICE_OBJECT. По поводу остального напишу позже, как будет время.
0
|
|
|
4 / 4 / 4
Регистрация: 04.05.2014
Сообщений: 287
|
|||||||||||
| 23.07.2014, 17:39 [ТС] | |||||||||||
|
ну у меня все встало на том, что я из приложения не могу создать даже хендл ( это проблема номер 1 сейчас
Добавлено через 14 часов 37 минут
0
|
|||||||||||
|
Ушел с форума
|
||
| 23.07.2014, 22:44 | ||
|
Без них CreateFile не будет отрабатывать. Логика обработки проста: если Filter DO - отправляем IRP вниз (IoSkipCurrentIrpStackLocation -> IoCallDriver), если EDO - тогда завершаем запрос с кодом STATUS_SUCCESS. Добавлено через 3 минуты При создании Filter DO указывать флаги типа FILE_DEVICE_SECURE_OPEN не нужно, PnP-менеджер все равно скопирует их из устройства уровнем ниже. FILE_AUTOGENERATED_DEVICE_NAME тоже не нужен. Filter DO вообще не требуется имя, это EDO оно необходимо для создания символьной ссылки. Добавлено через 3 минуты Нужно где-то позаботиться о том, чтобы ненужные EDO тоже удалялись. Например, в обработчике IRP_MN_REMOVE_DEVICE. Добавлено через 2 минуты LaserPU_DispatchIODeviceControl написана неправильно. При получении IRP для Filter DO нужно не возвращать STATUS_SUCCESS, а посылать IRP дальше вниз, как это сделано в DispatchPassThrough. Добавлено через 1 минуту Вообще, IRP нужно или завершать, или посылать вниз, или ставить в очередь для последующего завершения. Просто возвращать какой-то статус без вызова хотя бы IoCompleteRequest - грубая ошибка. Добавлено через 3 минуты LaserPU_DispatchDeviceControl надо полностью переписать.
1
|
||
|
4 / 4 / 4
Регистрация: 04.05.2014
Сообщений: 287
|
||
| 24.07.2014, 02:18 [ТС] | ||
Добавлено через 1 час 12 минут заработало, оказалось что EDO нужно создавать прежде чем назначаются обработчики, ну впрочем не так чтобы совсем заработало, но по крайней мере находится хендл, и вызывается LaserPU_DispatchIODeviceControl из приложения, а это уже большое достижение, очень хорошее.
0
|
||
|
Ушел с форума
|
|||
| 24.07.2014, 09:03 | |||
|
Например, IRP_MJ_CREATE мыши и клавиатуры может возвращать ошибку, в зависимости от того, из какого процесса открывается устройство и с какими правами. Добавлено через 1 минуту DispatchClose с логикой, которую я описал выше, и CreateFile должна отрабатывать нормально после этого.
0
|
|||
|
4 / 4 / 4
Регистрация: 04.05.2014
Сообщений: 287
|
|||||||
| 24.07.2014, 19:17 [ТС] | |||||||
Добавлено через 32 минуты хм, добавил удаление устройства, теперь если удалить в диспетчере устройств драйвер, а потом обратно поставить, то GreateFile работать не будет, а после перезагрузки виндовс будет... хотя пока нет нормального инфа об этом наверное можно не заморачиваться... Добавлено через 21 минуту
Добавлено через 15 минут да емае! убрал свитч, но вместо IOCTL kdPrint выводит пустое место....и как понять в чем косяк?
0
|
|||||||
|
Ушел с форума
|
||||
| 24.07.2014, 20:17 | ||||
То же самое касается других функций. Для завершения пакета требуется установить поля Status и Information в блоке Irp->IoStatus, после чего вызвать IoCompleteRequest. Тогда это будет завершение. Фраза "RTFM!" так и просится. все хэндлы закроются системой. Символьные ссылки на EDO нужно удалить, затем и сами EDO, и вообще все ресурсы, которые использовались драйвером.
0
|
||||
| 24.07.2014, 20:17 | |
|
Помогаю со студенческими работами здесь
40
Ошибка при установке драйвера "Не удается найти указанный файл" Ошибка при попытке запуска проекта: Не удалось загрузить файл или сборку
При попытке создания выражения в вычисляемом столбце ошибка Не удается найти столбец "Не удаётся найти указанный файл" после запуска программы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модульная разработка через 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. . . .
|