none
winusbを使用したUSBアプリ RRS feed

  • 質問

  • winusbを使用してUSBアプリを作成しています

    win-XPで

    WDKをインストール

    infを作り、USBデバイスを認識させ、アプリでwinAPIをコールするという一連の手順はできております

     

    この実行をWDKをインストールしていない他のPCですると、infが最初からエラーになります

    inf登録時には、WDK内の、winusbcoinstaller2.dll、WdfCoInstaller01009.dllなどを使うのでそれらは要求が来た時点でリンクできるようにしていますが、そこまでこないでエラーになります。

    質問は、

    このWDKによるwinusbは、使うPCにWDKがインストールされていないと使えないものなのですか?

    最小限の何かをインストールされていれば使えるのですか?

     

    以上よろしくお願いします

     

     

     

    • 移動 Mike Wang (MSCS) 2012年10月2日 12:52 (移動元:Windows デバイスドライバー開発)
    2012年1月27日 6:57

すべての返信

  • > このWDKによるwinusbは、使うPCにWDKがインストールされていないと使えないものなのですか?

    そのようなことは無く、WinUSBインストール・パッケージ(INFとdll)があれば、インストール可能です。

    > 最小限の何かをインストールされていれば使えるのですか?

    Windows XP (x86版) の場合は、Service Pack 2以降がインストールされていれば使えます。

    2012年1月29日 1:52
    モデレータ
  • 返信有難うございます

    実行できているpcは、XPですが、他のPCは、7-32bit、7-64bitどちらもできません

    dllとsysは、標準でありました

     

    エラー内容です

    *****

    ドライバーソフトウエアが見つかりましたが、このドライバーのインストール時にエラーが発生しました

    Test usinng WinUSB only

    指定されたファイルが見つかりません

    *****

    infの場所は指定できたので、

    たぶん

    infはロードしたが中身が違うと言っているのだと思います

     

    一応、マルチOSになるよう(理解した範囲でそのつもりで)

    以下のように対応しています

    [SourceDisksNames]
    1 = %DISK_NAME%,,,\x86
    2 = %DISK_NAME%,,,\amd64
    3 = %DISK_NAME%,,,\ia64

    [SourceDisksFiles.x86]
    winusbcoinstaller2.dll=1
    WdfCoInstaller01009.dll=1

    [SourceDisksFiles.amd64]
    winusbcoinstaller2.dll=2
    WdfCoInstaller01009.dll=2

    [SourceDisksFiles.ia64]
    winusbcoinstaller2.dll=3
    WdfCoInstaller01009.dll=3

    infが進むと。上のロードを要求されますがそこまでいかないです

    同じinfでXPで実行するとき、あらかじめインストールしたものはWDK以外ありません

     

    関係ありそうな記述部分は以下です

    ; =================== Installation ===================

    ;[1]
    [USB_Install]
    Include=winusb.inf
    Needs=WINUSB.NT

    ;[2]
    [USB_Install.Services]
    Include=winusb.inf
    AddService=WinUSB,0x00000002,WinUSB_ServiceInstall

    ;[3]
    [WinUSB_ServiceInstall]
    DisplayName     = %WinUSB_SvcDesc%
    ServiceType     = 1
    StartType       = 3
    ErrorControl    = 1
    ServiceBinary   = %12%\WinUSB.sys

    ;[4]
    [USB_Install.Wdf]
    KmdfService=WINUSB, WinUsb_Install

    [WinUSB_Install]
    KmdfLibraryVersion=1.9
    ;KmdfLibraryVersion=1.9.7600.16385

    ;[5]
    [USB_Install.HW]
    AddReg=Dev_AddReg

    [Dev_AddReg]
    HKR,,DeviceInterfaceGUIDs,0x10000,"{6D18C9FF-51B3-4ea7-A7ED-11EE37752E16}"
    ;HKR,,DeviceInterfaceGUIDs,0x10000,"{b35924d6-3e16-4a9e-9782-5524a4b79bac}"

    ;[6]
    [USB_Install.CoInstallers]
    AddReg=CoInstallers_AddReg
    CopyFiles=CoInstallers_CopyFiles

    [CoInstallers_AddReg]
    HKR,,CoInstallers32,0x00010000,"WdfCoInstaller01009.dll,WdfCoInstaller","WinUSBCoInstaller2.dll"

    [CoInstallers_CopyFiles]
    winusbcoinstaller2.dll
    WdfCoInstaller01009.dll
    WUDFUpdate_01009.dll

    [DestinationDirs]
    CoInstallers_CopyFiles=11

    ; ================= Source Media Section =====================
    ;[7]

    [SourceDisksNames]
    1 = %DISK_NAME%,,,\x86
    ;1 = %DISK_NAME%,,,\i386
    2 = %DISK_NAME%,,,\amd64
    3 = %DISK_NAME%,,,\ia64

    [SourceDisksFiles.x86]
    winusbcoinstaller2.dll=1
    WdfCoInstaller01009.dll=1
    WUDFUpdate_01009.dll=1

    [SourceDisksFiles.amd64]
    winusbcoinstaller2.dll=2
    WdfCoInstaller01009.dll=2
    WUDFUpdate_01009.dll=2

    [SourceDisksFiles.ia64]
    winusbcoinstaller2.dll=3
    WdfCoInstaller01009.dll=3
    WUDFUpdate_01009.dll=3

     


    2012年1月29日 5:33
  • 自己解決

    XPの動作と、7系では違いました。XPで実行できたのがたまたまのようです。

    この書式だと、正しくは、inf¥x86、inf¥amd64、に各dllをおくようです。

    私がXPで実行した時は、dllは、WDK配下のままでした。それでもXPはinfで指定したフォルダにないと、どこから使いかすかと聞いてきます。私はこれが正規の動きだと思っていました。しかしそれは7系はしてくれず、単にエラーになります。

    ということでした。お騒がせしました。

     

    2012年1月30日 0:49
  • Windows Vistaからは、Windowsのドライバインストールの仕様が変わり、必ずインストール時にINFファイルに記述してある完全なドライバ・パッケージ(INFとdll, 場合によってはsysやcat等、インストール動作に必要なファイルをまとめたものをこう呼びます)の内容が全て揃っていないと、インストール動作自体が開始しないようになりました。

    勝手に知らないドライバをインストールされないようにするのと、過去に行ったドライバ・インストール・パッケージの履歴を管理できるようにするのが目的です。

    全て揃ったドライバ・パッケージは、内部的には「ドライバ・リポジトリ」に一旦コピーされ、その後でインストール動作を行います。

    2012年2月4日 9:16
    モデレータ