Как из драйвера подрубиться к другому драйверу?
От: Аноним  
Дата: 23.10.06 14:42
Оценка:
Т.е. Возможноли из драйвера открыть другой драйвера, как в юзер-моде, что то в таком роде:


HANDLE hDrv = INVALID_HANDLE_VALUE;

   hDrv = CreateFile("\\\\.\\драйвер", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);


Что бы можно было работать ф-циями WriteFileEx, ReadFileEx.
Re: Как из драйвера подрубиться к другому драйверу?
От: _f_b_i_  
Дата: 23.10.06 15:08
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>Т.е. Возможноли из драйвера открыть другой драйвера, как в юзер-моде, что то в таком роде:



А>
А>HANDLE hDrv = INVALID_HANDLE_VALUE;

А>   hDrv = CreateFile("\\\\.\\драйвер", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
А>


А>Что бы можно было работать ф-циями WriteFileEx, ReadFileEx.


Первый вариант.
Открывается не драйвер, а DeviceObject этого драйвера!
Задача сводится к нахождениею этого самого DeviceObject.
Можно воспользоваться функцией ObReferenceObjectByName где первым параметром передать UNICODE_STRING имя объекта
драйвера. А потом полученому DeviceObject отправлять IRP с кодом IRP_MJ_READ, IRP_MJ_WRITE

Второй вариант
ZwCreateFile и соответсвенно ZwWriteFile и ZwReadFile
Re: Как из драйвера подрубиться к другому драйверу?
От: Злость Россия  
Дата: 23.10.06 15:14
Оценка:
Здравствуйте, <Аноним>, Вы писали:

[skip]

А>
А>HANDLE hDrv = INVALID_HANDLE_VALUE;

А>   hDrv = CreateFile("\\\\.\\драйвер", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
А>


IoGetDeviceObjectPointer

А>Что бы можно было работать ф-циями WriteFileEx, ReadFileEx.


Вопрос как вы дутете в kernel-mode работать с этими функциями? Или вы хотите зделать тунель, как я понимаю условие что другой драйвер поддерживает такую функциональность (чтение и запись), но не дает открывать устройство из user-mode. Сложностей не вижу если условия выполняются.
Пусто
Правда, Ложь — мне все одно — я имею свое мнение.
Если функция недокументированна — это не значит, что ее не используют все ваши конкуренты в своих продуктах.
Любой строй переходный и отрицать это значит быть закостенелым идиотом.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.