Здравствуйте. У меня сложилась следущая тупиковая ситуация. Я сделал драйвер дисплея, которые нормально работает на Xp но на Viste я столкнулся с проблемами доступа. Вообщем мой драйвер общается с User-mode при помощи Map-файла который создаёт драйвер при своём старте в папке "\\SystemRoot\\System32\\". Со стороны драйвера то все нормально (он может создавать файл изменять), а вот со стороны App(ring 3) то в Viste даже fmOpen неполучается открыть его (с правами админа). Тоесть в папке Windows и дочерних нельзя открыть файлы для чтения как я понял. Если просто на C:\ его сделать, то както тоже неособо хороший вариант. И в C:\Program files\ тоже неособы потому что виндовс может быть установлен не на C. Хочу сделать чтобы этот файл создавался в папке с App(ring 3), только вот ненахожу способ передать строку в драйвер так как, например если через Registry то Rtlxx и Zwxx функциями немогу воспользоваться так это драйвер дисплея, насколько я понял там только функции Engxx работают. Может у когонибудь есть какие-нибудь идеи как можно сделать?
взаимодействие драйвера с юзермод-приложением через маппинг это изврат тема про то как делать это по нормальному подымалась не раз, используй поиск так же сабж подробно описан в DDK а проблемы с доступом скорее всего изза UAC (User Account Control) - фишка висты, включена по умолчанию при этом даже под учетной записью администратора приложения запускаются с ограниченым токеном имхо, тему в wasm.beginners
Да тут так есть. Тут понимаешь проблема в том что в драйвере дисплея нельзя wdm.h и ntddk.h воспользоваться. (Возможнотут я неправ) Если тут какой-нибудь выход без использования этих юнитов? Мне нужно сделать общую память между драйвером и (Ring 3) App.
А Вы попробуйте при создании файла установить ему нужные права доступа, иначе он наследует их от каталога, который в висте действительно не доступен пользовательским программам из-за ограничения привилегий UAC ом. Второй вариант: пропишите в манифесте программы, что она должна запускаться с административными привилегиями. В этом случае при запуске приложения будет появляться окошко c с предупреждением о эскалации привелегий.
По поводу первого варианта то там я использую вот такую функцию для маппинга файл Код (Text): EngMapFile( IN LPWSTR pwsz, IN ULONG cjSize, OUT ULONG_PTR *piFile ); Тут ничего нету. А со вторый я пробовал но тоже самое получатся.