Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Драйверы и C#. Новичку  (Прочитано 13581 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Oakim
Гость
« : 21-02-2006 18:37 » 

Объясните пожалуйста маленькому и неопытному. Как происходит обращение к драйверу из пользовательского приложения. Причем, желательно на С#.
Дело в том, что срочно понадобилось обращаться к компоненте ядра из приложения, а раньше никогда не имел дело с написанием компонент ядра.
Буду благодарен за любое наставление и ссылки на понятные статьи. Ибо читаю Солдатова и чувствую себя дауном Жаль
Записан
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 22-02-2006 09:51 » 

Для обращения к драйверу в минимальном варианте нужны три функции Win32: CreateFile, DeviceIoControl и CloseHandle.

Пример взаимодействия с драйвером из C#: http://blogs.msdn.com/jeffrey_wall/archive/2004/09/13/229137.aspx
В статье показано, как реализовать низкоуровневое управление драйвером файловой системы из C#

можно воспользоваться гуглом, строка поиска: DeviceIoControl C#
« Последнее редактирование: 22-02-2006 09:53 от npak » Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
Oakim
Гость
« Ответ #2 : 22-02-2006 14:15 » 

Ага. Спасибо.
А почему у меня часть драйверов открывается (Example из Солдатова, COM1), а часть - нет (например, Cdrom, sfilter из примеров ДДК)?

И где смотреть коды ошибок. А то выдает "ошибка №2" и трын-дылыды. Пойми чего ему не хватает.

И еще одно. Соответствуют ли эти три операции созданию коммуникационного канала, или нет? Если нет, то как создать коммуникационный канал между компонентой ядра и компонентой пользовательского интерфейса?
« Последнее редактирование: 22-02-2006 14:53 от Oakim » Записан
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 22-02-2006 17:19 » 

А что такое коммуникационный канал?

Может быть, речь идёт о том, что приложение получает доступ к драйверу, создав файл со специальным именем?

Что означает "часть драйверов открывается,  а часть - нет"? Правильно ли я понимаю, что "не открывается" означает, что CreateFile вернул ошибку?
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
Oakim
Гость
« Ответ #4 : 22-02-2006 17:41 » 

Ага. Правильно. Я смотрю по DeviceTree V2.6 - Driver View
Например, такие девайсы, как COM1, Mailslot и Example (см. выше) подключаются нормально.
А на счет других пишет: "Не дается найти указанный файл" (ошибка 2).
Кроме того, я обнаружил, что некоторые драйверы идут как "\Driver\...", а некоторые как "\FileSystem\...". Есть ли принципиальная разница между доступом к этим драйверам?
Записан
Oakim
Гость
« Ответ #5 : 22-02-2006 17:43 » 

Кстати, и как компоненты ядра запускать/останавливать из приложения? Улыбаюсь
Записан
Oakim
Гость
« Ответ #6 : 23-02-2006 08:50 » 

Кажется, я понял в чем проблема. Как задается путь к драйверу?
1. Куда ведет путь \\\\.\\
2. Как достичь объекта, если он находится (по WinObj) в \FileSystem\filters\
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines