問題タブ [winusb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - WDK8-winusb.hはどこにありますか?
プロジェクトでWinUSBを使用しようとしています。私がフォローしているガイドはhttp://msdn.microsoft.com/en-us/library/ff540174.aspxです。この記事では、次のファイルを含めるように指示しています。
ファイル、、、windows.h
およびsetupapi.h
はstrsafe.h
で見つかりましたC:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include
。
ファイルusb100.h
はで見つかりましたC:\Program Files (x86)\Windows Kits\8.0\Include\shared
。
そして、ファイルstdio.h
は、tchar.h
で見つかりましたC:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include
。
http://msdn.microsoft.com/en-us/library/windows/hardware/hh450839(v=vs.85).aspxによると、winusb.hはWDK8のInclude \ umフォルダーにありますが、WDK8をインストールした後です。事前ダウンロードとダウンロードの両方の方法で3回、ファイルがありません。によってInclude\um
、彼らはに言及していると思いますC:\Program Files (x86)\Windows Kits\8.0\Include\um
。winusb.h
また、システムを検索しましたが、どこにも見つかりませんでした。
winapifamily.h
また、リンクした2番目のmsdnページによると、に含まれているものが見つかりませんwinusb.h
。
私はWindows7x64を使用しており、WDK8とVC++Expressがインストールされています。
winusb - WDK、winusb、すべてのポートにusbドライバーをインストール
USBデバイスを新しいポートに挿入するたびに、OSからドライバーの提供を求められますが、これは同じデバイスであるため、非常に煩わしいものです。インターネットで同様の投稿をいくつか読んだのですが、デバイスがWindows XPに表示され、一度インストールするとドライバーが自動的に取得される方法がよくわかりません。
おそらくこれは記述子のシリアル番号に関するものです(これは絶対に一意である必要があり、これは別の問題に該当することを読んだため、私の場合は欠落しています)?
windows - winUSB エラー (.inf の問題の可能性)
winUSBの助けを本当に感謝します。msdn Web サイトにリストされているすべての手順に従いました
http://msdn.microsoft.com/en-us/library/windows/hardware/hh450799(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/hardware/ff540174(v=vs.85).aspx
Visual Studio 2010 を使用して Windows 7 で実行しようとしました。コンパイルはエラーなしで実行されますが、関数 SetupDiEnumDeviceInfo を渡すことができず、エラーが発生します (エラー #259 だと思います)。このエラーを渡す方法がわかりません。
ただし、プロセスのいくつかの手順についてはわかりません。
- msdn は、「パッケージの署名済みカタログ ファイル。このファイルは、x64 バージョンに WinUSB をインストールするために必要です」と何について話しているのですか? 署名済みカタログ パッケージとは何ですか? これを設定するにはどうすればよいですか?
- また、いくつかのディレクトリ (たとえば、c:\UsbDevice) を作成して、そこに .inf ファイルを配置することについても説明しています。しかし、私の VS プロジェクトは、私が c:\UsbDevice を指していることをどのように認識し、「.inf」ファイルの名前がどうあるべきかをどのように認識しますか?.inf ファイルを何と呼べばよいでしょうか?また、プロジェクトを指す方法それに?
- .inf ファイル内には、2 つの GUID 番号があります。デバイス マネージャーに移動すると、クラス GUID 番号を取得できます。しかし、デバイス インターフェイス GUID を設定するにはどうすればよいでしょうか。助けてください。次の項目のいずれかが正しく設定されていないため、エラーが発生している可能性はありますか?
ありがとう、 --
ルディ
c++ - WindowsPCで利用可能なUSBポートのリストを検索
たくさん検索しましたが、クエリの回答が見つかりませんでした。PCで使用できるUSBポートの数を知りたいと思いました。つまり、シリアルポートの場合と同様に、「COM1」と「COM2」があります。私のPC(windows7)には8つのUSBポートがあり、ポートのリストとそれらが使用されているかどうかを確認する必要があります。
接続されているデバイスとUSBハブのみの詳細が表示されるため、結果が得られないWMIクエリを使用してみました。
Win DDKを使用すると、各HUBで使用可能なすべてのポートが表示されますが、興味深いことに、それは外部から見たものと同じではありません。Win DDKは、外部から見えるポートの正確な数ではなく、各ハブからアドレス可能なポートの数を提供します。CまたはC++コードは非常に役立ちます。
理想的な結果は次のようになります。
.net - PInvoke を使用した .NET での WinUSB 非同期呼び出し
マイクロコントローラーを USB でプログラムし、WinUSB を使用して PC に接続しました。同期 (ブロッキング、オーバーラップ = NULL) 呼び出しで pinvoke を使用して、c++ および VB.NET で uC と通信できます。C ++で非同期呼び出しが機能するようになりましたが、.NETでコーディングする方法がわかりません。よくわからない別の質問もあります。
質問 1: C++ で、最初に IO Completion Callback オブジェクトを使用して非同期呼び出しを試みましたが、読み取りのために WinUSB を呼び出すと、ファイル ハンドル (HANDLE hDevice) で非同期 IO が既に進行中であるというエラーが返され、CreateThreadpoolIo は WinUSB ハンドルを取得しませんでした ( PWINUSB_INTERFACE_HANDLE hWinUsbHandle)。私の推測では、WinUSB はこのファイル ハンドルを IO に使用するため、使用できません。最終的には、Wait Callback オブジェクトを使用して動作するようになりました。現在は機能しています。私がしているのは正しい使用法であることを明確にしたいだけです。
私が少し混乱したのは、CreateThreadpoolWait 呼び出しです。最初は、これは MSDN の他の例のようにスレッド プールを作成していると思っていましたが、今では、既定のスレッド プールで実行される単なるオブジェクトだと思います。また、objConext は、呼び出しをコールバックと同期するために使用する変数です。つまり、コールバックの PVOID コンテキストは、objConext を指します。
以下は C コードのスニペットです。
質問 2: 上記を .NET に変換するにはどうすればよいですか? これまでの私の推測は次のとおりです。
編集:回答として投稿するつもりでしたが、ストリートの信用が十分ではありません
まあ、私はコードを .NET に変換する答えを持っています。すべての API 関数を PInvoke に変換し、いくつかを除いて .NET に組み込まれた関数を置き換えました。コードは機能しますが、コールバックが行われる前に GC がそれらをクリーンアップするため、変数が宣言されている場所に注意する必要があります。また、コンテキストは慎重に割り当てて破棄する必要があります。たとえば、コンテキスト構造内の配列は、適切なサイズのメモリが割り当てられていない場合に消去される可能性があります。これは理解しやすいものです。
これらの理由から、USB のすべてのパイプのオブジェクトにハンドル参照を保持し、それらを再利用する方が有益な場合があります。これは、前のパイプが完了する前に同じパイプに対して複数の呼び出しを行うことができないためです。これが行われると、コンテキストで同じことを行うことができ、コンテキストへのメモリの割り当てと破棄を回避できます。たとえば、辞書はコールバックの Wait ポインターで使用できます。
質問 1 に対する答えはまだ見つかっていませんが、これが「正しい」方法であるかどうかはわかりませんが、非常にうまく機能しているようです。主なコード スニペットは次のとおりです。
メイン API DLL インポート
データを継続的に受信し、同時に GC を実行することで、これらの関数の GC 保護をテストしました。何かが収集されると、プログラムはクラッシュします。
警告: 多くのクリーンアップ コードはここにはありません。これを適切に行う方法については、MSDN で C コードを確認してください。オブジェクト指向のアプローチは、ハンドルを有効に保ち、IDIsposable を実装してクリーンアップするのに最適だと思います。
オープン ソース DLL に興味がある人はいますか? :P
wix - Windows8 64 ビット OS を対象とする WinUSB ドライバー パッケージ インストール用のカスタム INF の作成
Windows XP 32ビット、Windows 7 32および64ビット、およびWindows 8 32ビットにインストールして正常に動作するシンプルなユーザーモードUSBドライバーがあります。しかし、何らかの理由で Windows 8 64 ビットに正しくインストールできません。私が使用するinfファイルは以下のとおりです。
「ドライバーパッケージのインストール中にエラーが発生しました」のようなエラーが表示されます
sony - SONY SmartWatch ファームウェア ダウンロード ユーティリティ
サンプルファームウェアをスマートウォッチにダウンロードするには、どのようなソフトウェアが必要ですか? dfu-util および WinUSB ドライバーが含まれている場合があります。
WinUSB 1.2.6 と dfu-util を試しましたが、次のように表示されました。
f/w をアップロードするコマンドが失敗します。
dfu-util と WinUSB のバージョンが合っていないのかな。
したがって、正しいバージョンをダウンロードできるように、適切な Web URL を提供していただけると非常に役立つと思います。また、ドライバーのインストールとサンプルのアップロード/ダウンロードに関する詳細な説明もありません。
visual-c++ - winusb_initialize が false を返す
ZTE USB モデム デバイスを使用しています。私のデバイスは Ports クラスにインストールされています (ドライバーは usbser.sys です)。msdn の例「WinUSB 関数を使用して USB デバイスにアクセスする方法」に従いました。関数 winusb_initialize を呼び出すまでは問題ありません。getlasterror 87、つまり ERROR_INVALID PARAMETER で false を返します。「http://www.microchip.com/forums/m653017-print.aspx」で解決策を見つけましたが、役に立ちません。 .x86 フォルダー内の winusb.inf ファイルを変更しようとすると、管理者としてログインしているにもかかわらず、コンピューターはアクセスが拒否されたと表示します。親切に私を助けてください。
前もって感謝します
c - デバイス ファームウェアで WinUSB をサポート
こちら で説明されているように、USB デバイスが Windows 8 マシンに接続されたときに WinUSB をドライバーとして自動的に使用するように USB デバイスをセットアップしようとしています。
それは言います:
デバイスが拡張機能記述子をサポートしていることを USB ドライバー スタックが認識するために、デバイスは、文字列インデックス 0xEE に格納されている OS 文字列記述子を定義する必要があります。
これは、メモリ位置 0xEE に記述子を含む構造体を作成する必要があることを意味します。Cでそれについてどうすればいいですか?
これが私が試したことです:
しかし、コンパイラはこれを好まず、データ定義に型がないと文句を言います。Cでこれを行う方法はありますか?記事を正しく理解していますか?
どんな助けでも感謝します。