まず、ドライバのロード順序を理解するために、デバイスマネージャをに切り替えることをお勧めします。 Devices by Connectionモード。
お気づきのように、デバイスはバスドライバの下にあります。 PCIデバイスの場合、「PCIバス」になります。 USBデバイスの場合、USBハブになります。
- デバイスインスタンスID
- ハードウェアID
- 互換性のIds
- 場所などが返す
:各バスの運転手は、識別文字列の書式設定方法について独自の考えを持っていますIRP_MN_QUERY_ID
(BusQueryInstanceID
,BusQueryHardwareIDs
,BusQueryCompatibleIDs
)、IRP_MN_QUERY_DEVICE_TEXT
(,DeviceTextLocationInformation
など)
もちろん、バスドライバは、最初に(バスに適したどのような標準インターフェースを使用しても、例えばUSB上のデバイス/ストリング記述子を取得する)、ベンダーID、製品IDなどを知ることができます。
この時点でデバイスのドライバを読み込む必要はありません。実際、ロードすることはできません。デバイスIDは、PnPシステムにどのドライバがデバイスに一致するかを正確に指示するものです。ローカライズとしては
:IRP_MN_QUERY_ID
異なり
、デバイスマッチングのために意図不透明な文字列を提供し、IRP_MN_QUERY_DEVICE_TEXT
情報が実際に局在することが意図されていました。この目的のために、入力データ(Parameters.QueryDeviceText.LocaleId
)で要求されたロケールID(LCID)を受け取ります。
[Alphaneoが指摘したように、USBハブドライバがUSBデバイス自体が文字列をローカライズしていることを期待して、(ゲットストリング・ディスクリプタの要求内の)USBデバイスに以降このLCIDを渡すかもしれません。]
このリンクには興味深い図書館があります。 – Pat