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

 

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

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

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

dwBytesRead - p0rb->0rbBulk0rInterruptTransfer.TransferBufferLength; Il Освободить пакет delete pOrb;
Il Вернуть реально прочитанное число байт I.Information() - dwBytesRead;
428
Часть IV. Создание USB-устройств
Il Подтвердить успешное завершение операции return I.PnpCamplete(thls, status);
>
14.2.7. Установка драйвера
Скомпилировав драйвер, мы получим файл ATDriver.sys.
!Files Needed ЕЗІ
.:. ¦¦,-——j The He ATDriver.sys'on (Unknown) is needed.
Cancel
Type (he path where the He is located, and then click OK.
Copy files from:
:::: )E:\ttUSB\TestW89WDriver\sys\obifre\i386 ' I firOWse...:

Рис. 14.22. Указание файла драйвера
Upgrade Device Driver Wizard
Driver Files Search Results
The wizard has finished searching for driver files for your hardware device.
The wizard found a driver for the following device: ''r$ FVAS oft test board
i?" ¦¦':':: ' ¦ ' :
Windows found a: driver that is a closer match for this device than your current driver. To install the driver Windows found, click Next.
gig '• e:\OusbVest\at89^atdrive'r\sysSatdriverjhf
< Back
Next>
Cancel
Рис. 14.23. Драйвер обнаружен
Глава 14. Создание USB-устройства на основе ATMEL АТ89С5131
429
Теперь, подключив наше устройство, нужно установить этот драйвер, указав путь к файлу ATDriver.inf и файлу самого драйвера (рис. 14.22).
Если все прошло успешно, система обнаружит драйвер и установит его (рис. 14.23). Теперь можно заняться созданием программы для чтения данных.
14.2.8. Программа чтения данных
В главе 9 мы достаточно подробно разобрали методы загрузки и обращения к драйверам, поэтому дополнительных комментариев к листингу 14.8 не требуется.
!'Листинг 14.8. Модуль для загрузки и обращения к драйверу ATOriverDevice
unit DrvLoader; interface
Uses Windows, SysUtils; type
TAT89DriverLoader - class private
hDevice : THandle; Il хранить дескриптор драйвера Public
Constructor Create; Destructor Destroy; override; Public Il Регистрация драйвера
Function CreateService(SysPath : String) : Boolean; Il Разрегистрация драйвера
Function RemoveService : Boolean; Il Старт драйвера
Function StartService : Boolean; Il Останов драйвера
Function StopService : Boolean; public
Il Открытие драйвера
Function Open(DevIndex : Integer) : Boolean; II Закрытие драйвера
Procedure Close;
430
Часть IV. Создание USB-устройств
public
Il Вызов функции DeviceloControl
Function Fund : Cardinal; Il Вызов функции чтения
Function Read : String; End;
implementation
Uses WinSvc, Dialogs;
Il Конструктор
Constructor TAT89DriverLoader.Create; Begin
Inherited Create;
hDevice:= INVALID_HANDLEJVbLUE; End;
Il Деструктор
Destructor TAT89DriverLoader.Destroy; Begin Close;
Inherited Destroy; End;
Il Описание драйвера Const Il Имя драйвера
DriverName : PChar= 1ATDriverDevice'#0; Il Имя файла драйвера FileDriver : String = 'ATDriver.sys'IO; Il Полное имя драйвера
DriverPath : String - \ATDriverDevice';
Function TAT89DriverLoader.CreateService(SysPath : String) : Boolean; var hSCMan, hService: SC-HANDLE;
DriverPath : String; Begin Result:= False;
Глава 14. Создание USB-устройства на основе ATMEL АТ89С5131
431
hSCMan:- WinSvc.OpenSCManager(
Nil, ( local }
Nil, { SERVICES_ACTIVE_DATABASE }
SC_MANAGER_ALL_ACCESS
);
If hSCMan = 0 then Exit;
Il Получаем полное имя к файлу драйвера
// Если драйвер находится в текущем каталоге,
// где запускается программа, то не добавляем SysPath
DriverPath:= {SysPath + }FileDriver;
Il Создаем сервис (регистрируем драйвер)
hService:= WinSvc.CreateService(hSCMan, Drivername, DriverName,
SERVICE_ALL_ACCESS, SERVICE_KERNEL_DRIVER,
SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL,
PChar(@DriverPath[1]),
nil,nil,nil,nil,nil); Il Файл не найден или сервис уже зарегистрирован If hService = 0 then begin
MessageDlg(SysErrorMessage(GetLastError), mtError, [mbOK], 0); CloseServiceHandle(hSCMan); Exit; End;
Il Регистрация успешна WinSvc.CloseServiceHandle(hService); WinSvc.CloseServiceHandle(hSCMan); Result:- True; End;
Il Удаление регистрации драйвера Function TAT89DriverLoader.RemoveService : Boolean; var hSCMan, hService : SC-HANDLE; Begin Result:- False;
II Удаление сервиса из реестра
hSCMan:- WinSvc.OpenSCManager(Nil,Nil,SC_MANAGER_ALL_ACCESS);
432
Часть IV. Создание USB-устройств
If hSCMan - О then Exit;
hService:- WinSvc.OpenService(hSCMan, DriverName, SERVICE_ALL_ACCESS); Il Ошибка открытия сервиса If hService-0 then begin
CloseServiceHandle(hSCMan);
Exit; End;
Il Удалить
WinSvc.DeleteService(hService); WinSvc.CloseServiceHandle(hService); WinSvc.CloseServiceHandle(hSCMan); Result:= True; End;
Il Старт сервиса драйвера
Function TAT89DriverLoader.StartService : Boolean; var IpServiceArgVectors : PChar;
hSCMan, hService : SC-HANDLE; Begin Result:= False;
II Старт зарегистрированного сервиса
hSCMan := WinSvc.OpenSCManager(Nil, Nil, SC_MANAGER_CONNECT); If hSCMan = 0 then Exit;
hService:= WinSvc.OpenService(hSCMan, DriverName, SERVICE_START); If hService - 0 then begin
Предыдущая << 1 .. 127 128 129 130 131 132 < 133 > 134 135 136 137 138 139 .. 166 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100