если DriverStudio поставилась после VS то....
открываешь VS создаешь новый проект.
тебе VS предлагает на выбор несколько визардов. среди них надо найти визард от драйверов. далее по шагам все будет понятно)
2. разнаца следующая.
вызов функций драйвера из приложения можно реализовать несколькими способами.
IRP_MJ_READ|WRITE - в этом случае приложение вызывает драйвер через функции ReadFile/WriteFile
IRP_MJ_IOCTL - функцию DeviceIOControl
в первом случае передача данных только через MDL, ну и соответственно специфика функции Read/WriteFile - смещение, длинна. в приложение возвращается только статус операции. Поэтому удобно использовать в случаях когда направление передачи данных в одну сторону.
во втором - разнообразие больше: DeviceIOControl - одновременно передает данные в обе стороны - есть входной/выходной буфер. способ передачи - на выбор: MDL, указатель напрямую, либо путем копирования(буферизации) данных. этим способом очень удобно вызывать функции которые имеют входные параметры и возвращают данные.
Есть некоторые грабли с правами доступа (пока честно говоря сам не разобрался)... но возможно - для обращения через DeviceIOControl - нужны более привелегированные права доступа (мои измышления!). по крайней мере под вистой - до сих пор не смог корректно их задать через INF файл. но в любом случае можно запустить приложение с помткой "с правами администратора" и все будет ок.
PS про MDL
Диспетчер памяти использует структуру MDL для описания набора страниц физической памяти, составляющих буфер виртуальной памяти в контексте памяти некоторого процесса. Интерпретация MDL не зависит от контекста памяти, поскольку MDL оперирует со страницами физической памяти. Получив для данного буфера описание в виде MDL, драйвер в дальнейшем может использовать буфер в контексте памяти любого процесса. Для того, чтобы обращаться к такой памяти, необходимо получить для MDL адрес памяти в системном адресном пространстве. Сделать это можно с помощью функции MmGetSystemAddressForMdl().
http://www.realcoding.net/article/view/3317PS у вас объем данных ничтожный, что использовать - все равно. мне болье нравится DeviceIOControl.... вот только с правами доступа как-нибудь разобраться бы...
займитесь рыбой от драйвер-студии - там будет и такой пример. понаделайте примеров с разными оциями -посмотрите на разницу в коде)