2010年02月25日

WinUSB を使おう4~Infファイル編(1)~

最大の難所がやってまいりました。
Driver開発の難所infファイルでございます。
もちろんバイブル「WinUsb_howto.docx」にも例が載っています。
しかし、ちょっと間違うとうまくインストールできない代物になります。

とりあえず「WinUsb_howto.docx」の例を引き合いにだして
太字が変更可能なところなのですが。。。
まずは[Version]セクション

[Version]

Signature = "$Windows NT$"

Class = MyDeviceClass ・・・・(1)

ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171}・・・・(2)

Provider = %ProviderName%・・・・(3)

CatalogFile=MyCatFile.cat・・・・(4)

DriverVer   = ,1.0.0・・・・(5)


; ================== Class section ==================

 

[ClassInstall32]

Addreg=MyDeviceClassReg

 

[MyDeviceClassReg]

HKR,,,0,%ClassName%

HKR,,Icon,,-1

 


(1)ここはWindowsのディバイスマネージャーが認識するClassです

USBって何で書いちゃだめかって?
たぶん書いてもいいです。
でもその場合は(2)のClassGuidは予約されているGUIDを記載しなければいけません。その理由はここです。

(2)は(1)とセットで連動しているGUIDです。
自分で勝手につけたClass名には新しくGUIDが必要になります。
GUIDを新規に生成するには「GUIDGEN.exe」 等ツールを活用します。

(3)は製造元です。ここでは「%ProviderName%」になっています。
これは[String]セクションで「ProviderName」に定義した文字列
という意味なので、[String]セクションを参照してください。

(4)はドライバのセキュリティカタログファイル名です。デジタル署名のファイルなどを格納すると思います。(やっていないので仮定です)
もしも必要ならばこちらでMS様のロゴ申請して入手してください。
ちなみになくてもドライバインストール時に警告されるだけです。

(5)バイブルの(例)には載っていなかったので追記します。
driver0
ここの[日付]と[バージョン]に反映されます。
フォーマット  DriverVer=mm/dd/yyyy[,w.x.y.z]
バージョンのみ DriverVer   = ,1.0.0
日付のみ    DriverVer   = 02/25/2010
という風に記載します。


長くなったのでとりあえずInfファイル編(2)に続きます。

ayuthky_m at 13:53|PermalinkWinUSB | driver

WinUSB を使おう3~インストール編~

さてさてDDKも展開しDriverをコピーして。。。。
DDKの中にWinUsb.sysがどこにもない!!!
たまたまOSによっては入っている場合もあるようですが
新たに導入しようとしているDeviceのDriverとして紐つけできないのです。

これはバイブル「WinUsb_howto.docx」の「How to Install WinUsb.sys as a Function Driver」に書いてあります。

1.inf
2.WinUSB Co-Installer
3.KMDF Co-Installerが必要なのです。

1.が今回作成すべきもの!(infファイル編参照)
2.3.はDDKで提供されています。

ちなみに3.のKMDFは厳密に言うとWinUsb.lib(DLL)も使うので
WDFが必要ですね。

WDFとはWindows Driver Foundation (WDF)というもので
Driver開発のドライバー開発用のフレームワークの総称です。

ちなみにこの2.3.がDDKのどこにあるかというと

2.は「WinDDK/BuildNumber/redist/winusb」
3.は「WinDDK/BuildNumber/redist/wdf 」

BuildNumberはDDKのVersionのことです)
この記事記載時は7600.16385.0です。








ayuthky_m at 11:26|PermalinkComments(0)TrackBack(0)WinUSB | driver

WinUSBを使おう2~構成編~

まず構成をメモっておく

APL
USER.DLL
WinUsb.lib
WinUsb.sys

Device

上から黄色がUSER層
真ん中緑がKERNEL層
下がハードウェア

ちなみにDDKで用意してくれてるのは太字斜体の部分
WindowsのDriver的に言うと
WinUsb.lib(.dll)がUSER-MODE Driver
WinUsb.sysがKERNEL-MODE Driver
になる

WinUSB Driverはあくまで汎用Driverなので基本的な
「初期化」「読み」「書き」「終了」「設定」だけです。

Deviceとの細かな通信制御には「USER.DLL」が必要。
まっいきなりAPLって場合もあるのかもしれませんが。






ayuthky_m at 11:20|PermalinkWinUSB | driver