|
■WinUSB.sysを利用するUSBデバイスのドライバパッケージ作成手順 ├─WDKをダウンロードしインストールする ├─使用したいUSBデバイスのベンダIDとプロダクトIDを確認する ├─デバイスドライバパッケージ用の環境を作成する │ ├─デバイスドライバパッケージ用のフォルダを用意する(この例ではmyDeviceとする) │ ├─myDeviceの直下に i386 と amd64 という名前でフォルダを2つ作成する │ └─これらのフォルダに WDKの redistフォルダから i386 と amd64に対応する WdfCoInstaller01005.dll と WinUSBCoInstaller.dll をコピーする │ ├─OS、CPUごとに異なるCoInstallerが用意されている │ └─注意! 2007年9月現在、IA64用のWinUSBは用意されていない ├─USBデバイスのためのINFファイルを作成する │ ├─DeviceClassのクラス名とGUID、DeviceInterfaceのGUIDは独自のものを用意する │ │ └─GUID作成ツール:guidgen.exe │ ├─myDeviceフォルダにサンプルINFファイルをコピーする │ └─サンプルINFファイルの修正 │ ├─Versionセクション │ │ └─Class名とClassGuidを用意したものに書き換える │ ├─インストールセクション(この例ではMyDevice_WinUSB.NTx86とMyDevice_WinUSB.NTamd64) │ │ └─USBデバイスのPathに含まれているベンダIDとプロダクトIDを使用するUSBデバイスのものに書き換える │ └─Dev_AddRegセクション │ └─DeviceInterfaceGUIDsを用意したものに書き換える └─ドライバの専用インストーラーを準備する(オプションです) ├─DPInst.exeというツールを使用するとデバイスドライバのインストーラーが簡単に作成できます ├─DPInstを使用する大きなメリットは、USBデバイスを接続する前にドライバをインストールできることです ├─したがって、ドライバがプリインストールされている感じになってなにかと便利です └─DPInstについては別の機会に説明しようと思ってます。 以下がサンプルのINFファイルです。 赤字の部分を修正するだけでアプリからUSBデバイスがアクセスできるようになります。 (ブログの上で不自然に改行されているところはつながっていると思ってください) ; ; sample INF file that use WinUsb.sys as the function driver ; (for WDF KMDF Version 1.5) ; ; Versin Section [Version] Signature = "$windows NT$" Class = MyDeviceClass ClassGuid = {00000000-0000-0000-000000000000} Provider = %ProviderName% ; Manufacturer Section [Manufacturer] %ProviderName% = MyDevice_WinUSB, NTx86, NTamd64 ; Model Section [MyDevice_WinUSB.NTx86] %USB\MyDevice.DeviceDesc% = USB_Install, USB\VID_1111\PID_2222 [MyDevice_WinUSB.NTamd64] %USB\MyDevice.DeviceDesc% = USB_Install, USB\VID_1111\PID_2222 ; Install Section [USB_Install] Include = winusb.inf Needs = WINUSB.NT ; Install Service Section [USB_Install.Services] Include = winusb.inf AddService = WinUSB, 0x00000002, WinUSB_ServiceInstall [WinUSB_ServiceInstall] DisplayName = %WinUSB_SvcDesc% ServiceType = 1 StartType = 3 ErrorControl = 1 ServiceBinary = %12%\WinUSB.sys ; Install HardWare Section [WinUSB.HW] AddReg = Dev_AddReg [Dev_AddReg] HKR,,DeviceInterfaceGuids, 0x10000, "{33333333-3333-3333-333333333333}" ; Install WDF Section [WinUSB.Wdf] kmdfService = WinUSB, WinUsb_Install [WinUsb_Install] KmdfLibraryVersion = 1.5 ; Install CoInstallers Section [USB_Install.CoInstallers] AddReg = CoInstallers_AddReg CopyFiles = CoInstallers_CopyFiles [CoInstallers_Addreg] HKR,,CoInstallers32, 0x00010000, "WdfCoInstaller01005.dll, WdfCoInstaller", WinUSBCoInstaller.dll" [CoInstallers_CopyFiles] WinUSBCoInstaller.dll WdfCoInstaller01005.dll ; DestinationDirs Section [DestinationDirs] CoInstallers_CopyFiles = 11 ; Source Media Section [sourceDisksNames] 1 = %DISK_NAME%,,,\i386 2 = %DISK_NAME%,,,\amd64 [SourceDisksFiles.NTx86] WinUSBCoInstaller.dll = 1 WdfCoInstaller01005.dll = 1 [SourceDisksFiles.NTamd64] WinUSBCoInstaller.dll = 2 WdfCoInstaller01005.dll = 2 ; String Section ProviderName = "MyWinUsbTest" USB\Device.DeviceDesc = "Test USB Device using WinUSB" WinUSB_SvcDesc = "WinUSB TEST" DISK_NAME = "MyDevice_Install Disk" |
| << 前記事(2007/09/08) | トップへ | 後記事(2007/09/14)>> |
| タイトル (本文) | ブログ名/日時 |
|---|
| 内 容 | ニックネーム/日時 |
|---|---|
お世話になります。デバイスドライバの開発については、日本語の情報が少ない中、WinUSB に関する情報をご提供戴き、感謝しております。 |
ShuU 2008/06/18 11:01 |
> ShuUさん |
バッキー 2008/06/18 21:59 |
| << 前記事(2007/09/08) | トップへ | 後記事(2007/09/14)>> |