質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

4566閲覧

USB再接続したい

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2017/02/27 08:08

###前提・実現したいこと
マイコンで作った実験用ボードにUSBチップ(USBN9604)があり、
それをWindowsXPで接続使用しています。(転送はバルク)
UUSBDという汎用DLLを使用してC#で操作しているのですが、
USBコネクタを挿したままで、windows側でUSB解放したあと、再接続してうまくhandle取得できていたのに、windows7以降では再取得できません。一度USBコネクタを抜いてからまた接続すると正常です。
これってwindowsの仕様?それとも私のソフト?

###補足情報(言語/FW/ツール等のバージョンなど)
windowsは32bit
framework3.5,4.5でも同じ現象

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

UUSBDをどのように使用しているのかも UUSBDの実装の中身も分からないので、WindowsにおけるUSB制御一般の話なりますが、

USB通信の異常系の調査は、USBバスアナライザのデータを取得して調査するのが一番です。
またWin7以降であれば、USBバスアナライザが無くても、USB Event Tracing for Windows の機能を使用してUSBドライバがどのような制御をしているのかモニタリング可能ですので、そこからでもある程度原因調査が出来ます。

Windows の USB イベント トレーシング

一方、WindowsのバージョンによってUSBドライバの動作の違いという観点からだと、
「OSバージョンによって動作が違うことが有る」
というのが回答になります。

例えば、IOCTL_USB_HUB_CYCLE_PORT だと、

Supported on Windows 8 and later versions of Windows, if the caller is running as Administrator. Supported on Microsoft Windows Server 2003, Windows XP-based versions of Windows. Not supported on Windows 7, Windows Vista, and Windows Server 2008.

となっており、「XPでは存在していたが、Win7で廃止され、Win8で(機能アップして)復活した」なんて機能も存在します。

直接のご回答にはなっていませんが、ご参考までに。

投稿2017/02/27 15:44

KenjiToriumi

総合スコア344

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/02/27 23:09

ありがとうございます。UUSBDはUSB関連の基本的な動作のみを行い、ハンドル、パイプ、データ送受ができます。USB解放以外はうまくいっているのですが、あと一歩です。なにか私の知らないことがあるようなのでwindowsのUSB関連も含め再勉強します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問