Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Агуров П.В. -> "Интерфейсы USB. Практика использования и программирования" -> 131

Интерфейсы USB. Практика использования и программирования - Агуров П.В.

Агуров П.В. Интерфейсы USB. Практика использования и программирования — СПб.: БХВ-Петербург, 2004. — 576 c.
ISBN 5-94157-202-6
Скачать (прямая ссылка): interface2004.djvu
Предыдущая << 1 .. 125 126 127 128 129 130 < 131 > 132 133 134 135 136 137 .. 166 >> Следующая

< Back
J.
ATDriverDevice
Rename... j
Interface Buffers J Power)
Select a method to access read/write buffers.
(• guffered For devices that are slow and/or transfer, ., yoc^s 0[ data, such as keyboard- ¦ mouse, serial, and piryiel.devices. ?
Г pjrect
C Neither.
! For devices that transfer large amounts of data in a short time, such as storage devices.
,This release of DriverWizard supports Buffered or Direct access only.
Next>
Finish;
Cancel
Help.
Рис. 14.17. Вкладка Buffers девятого шага создания драйвера
NT/WDM Device Drivrr Wi«H (DnvrrWorks) - Step 9 of Ii
DiiverWorks
Define one or more device classes.
ATDriverDevice
Rename...
Interface] Buffers': Power I
Power Management Support ::/]) .-4???!?
WDM drivers must support power management: !Indicate (Ne level of support for power management; for this device.
T~. fctanjge power for Ws device;
t3s &evieeieflA»*f(tAush3jf роудаМ startup
< Back
Next >
Finish
Cancel
Help-
Рис. 14.18. Вкладка Power девятого шага создания драйвера
Глава 14. Создание USB-устройства на основе ATMEL АТ89С5131
421
Шаг 10. Задание кодов IOCTL
На десятом шаге задаются коды функции DeviceioControl (рис. 14.19), если, конечно, была выбрана поддержка этой функции на 6 шаге.
Кнопка Add позволяет добавить код пользовательской функции (рис. 14.20).
NT/WDM Device Driver Wizard (DriverWorks) - Step 10 of 11
Define control codes used to communicate with applications or other drivers through the Device 10 Control interface.
ATDRIVERJ0CTL_800 N 0x800 Buffered "Any
iL
Add...
Edit..
include File Name: . JATDrivenoctlh
!Xt >
±1
FJemove
Finish j Cancel | Help |
4.19. Десятый шаг создания драйвера
Add IO Control Code (IOCTL)
Earameter Name
JATDRIVER_IOCTL_800
flrdinal
J0x800
Method
jBuffered zl
access
V flueus [»ertul ft;| this rawest cndf OK [ Cancel
Рис. 14.20.
Добавление кода пользовательской функции
422
Часть IV. Создание USB-устроиств
Шаг 11. Дополнительные настройки
На последнем шаге создания драйвера (рис. 14.21) выбирается, нужно ли создавать тестовое приложение для драйвера (Create test console application) и дополнительные настройки отладки и создания лога событий.
NT/WDM Device Driver Wizard (DriverWorks) - Step 11 of 11
IMverWwks
Additional options
Test Application —z---¦—
Eilename I Debug Options:
|Test_ATDriver
Г~ Enable Break at Driver Entry Г~ fienerate Trace Code
IrDTA
Specify default pool tag for memory allocations. Enter four characters in reverse order. .
More Options ——-———--—-—~—.
Г* Enable Event Logging
Г Enable Drivc5c«tos Suppcrt Л Dl Г rent]
Г" Generate 64 bit configurations
<Back j ..NM> - I
Finish
Cancel
J H* 1
Рис. 14.21. Последний шаг создания драйвера
Вообще говоря, тестовое приложение нам не нужно, т. к. для создания приложения мы будем использовать Delphi, но для простейшего тестирования драйвера можно использовать и приложение С++.
14.2.4. Доработка шаблона драйвера
Получившийся драйвер является заготовкой для настоящего USB-драйвера и требует небольшой доработки. Точнее, требуется выполнить следующий набор действий:
1. Дописать реализацию функций в/в.
2. Сгенерированный драйвер содержит только один интерфейс, поэтому при необходимости нужно создать нужное число экземпляров класса
Kusblnterface.
Глава 14. Создание USB-устройства на основе ATMEL АТ89С5131
423
3. По умолчанию активизируется конфигурация номер 1; если устройство имеет другие настройки или несколько конфигураций, нужно обеспечить их функционирование.
4. Дописать реализацию функций IOCTL.
14.2.5. Базовые методы класса устройства
Листинг 14.4 показывает код класса ATDriver (мы позволили себе несколько сократить листинг, выделив только важные места кода). Обратим внимание на переменную m_unit. При загрузке драйвера (функция DriverEntry) эта переменная обнуляется, а при каждом вызове AddDevice увеличивается на единицу. Это позволяет создавать экземпляры класса ATDriverDevice с уникальными в пределах системы именами. Первое устройство, для которого будет загружен драйвер, будет иметь имя ATDriverDeviceO, второе ATDriverDevice 1 и т. д.
!define VDWJMAIN finclude <vdw.h> !include <kusb.h> !include "ATDriver.h" !include "ATDriverDevice.h"
!pragma hdrstop("ATDriver.pen")
Il Generated by DriverWizard version DriverStudio 2.6.0 (Build 336) ІІППІППІППІППІПІІІІІІІІППІПІІІППІППІПІІ III III Il 111 Il Il ATDriver:-.DriverEntry , Il Вызывается при загрузке драйвера!
11111111111111111111111111111 Il 11111111 Il 1111111111111111111111111111
NTSTATUS ATDriver:!DriverEntry(PUNICODE_STRING RegistryPath)
і
mJOnit = 0;
return STATOS_SOCCESS;
}
Il End INIT section
lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll !pragma code_seg()
lllll 1111 lllllll III IIJIII Hill IIIIII ПИШИ/Il 111111 Il I/ПИШИ Il
424
Часть IV. Создание USB-устройств
Il ATDriver::AddDevice
Il Вызывается при подключении устройства
111111111111111111111111111111111111111111111111111111111111111111111 NTSTATUS ATDriver::AddDevice(PDEVICE-OBJKCT Pdo)
Предыдущая << 1 .. 125 126 127 128 129 130 < 131 > 132 133 134 135 136 137 .. 166 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100