2011-03-28 15 views
0

USB IOCTL によってちょっと混乱します。IOCTL_USB_GET_ROOT_HUB_NAMEです。それのターゲットデバイスとは何ですか? MSDN WDKのドキュメントは、ターゲットデバイスを明確に示していますが、私はまだWDKが提供するUSB​​VIEWサンプルで混乱しています。私が混乱している理由は次のとおりです:IOCTL_USB_GET_ROOT_HUB_NAMEのターゲットデバイスとは何ですか(USBドライバ固有のIOCTL IRQ)

私はWindowsでカーネルモードとUSBドライバを作成していて、Windowsドライバキットhttp://msdn.microsoft.com/en-us/library/ff558728(v=vs.85).aspxからUSBVIEWサンプルを勉強しています。 MSDNでは、USBVIEWサンプルが実行する最初の手順について説明します。

ホストコントローラとルート ハブを列挙します。ホストコントローラは、各ホスト コントローラシンボリックリンクを開くために、フォームのシンボリックリンク 名「HCDx」、0

利用のCreateFile(のX 開始)を持っています。

ツリービューのノードを作成して、各ホストコントローラを表す にします。ホストコントローラは が開かれた後

、 ホストコントローラに IOCTL_USB_GET_ROOT_HUB_NAME要求を送信するホスト コントローラ

の一部であるルート ハブのシンボリックリンク名を取得します。しかし、I

IOCTL_USB_GET_ROOT_HUB_NAM:ダブル言うMSDN http://msdn.microsoft.com/en-us/library/ff537326(v=VS.85).aspx でIOCTL_USB_GET_ROOT_HUB_NAMEの使用状況をチェックしますEは ユーザーモードI/O制御要求です。この リクエストはUSBハブFDOを対象としています。

IOCTL_USB_GET_ROOT_HUB_NAME IRPの対象は、USBハブFDOです。しかし、USBVIEWサンプルで説明されているように、我々はちょうどホストコントローラシンボリックリンクを取得しました。これはデバイスオブジェクトがホストコントローラデバイスオブジェクトであることを意味します。 IOCTL_USB_GET_ROOT_HUB_NAME IRPを送信するにはどうすればよいですか?どういうわけか、まずUSBハブFDOを調べるべきでしょうか?

答えて

2

私はそれが不幸なコピーペーストエラーだと思います。 IOCTL_USB_GET_ROOT_HUB_NAMEは実際にホストコントローラに送信され、したがってUSBホストコントローラFDOによって処理されます。

ちょうどあなたを文脈に入れてみましょう: 「FDO」という用語は、ユーザーモードに大いに関係しています。他の「xDO」にアクセスすることはできません。このIOCTLをカーネルモードで送信する場合は、デバイススタック内の特定のデバイスオブジェクトにIOCTLを送信することができます(「できます」という意味ではありません)。しかし、ユーザモードアプリケーションのDeviceIoControlは、常にIOCTLをデバイススタックの先頭に送信します(したがって、すべてのフィルタ、FDO、およびPDOに渡します)。

この質問は3月28日に尋ねられたので、今すぐあなたがそれを解決したことを本当に願っています:)

関連する問題