【解決方法】カードが挿入されている PCI(e) バスを調べる


Windows 10 または Windows Server 2019 がインストールされた新しい PC があります。 カードを特定の PCI バスに接続できるようになりました。 カードが挿入されている PCI バスを調べたい。

アダプターカードがメインボード上にあるバスとそうでないバスをC#で比較的確実に見つける方法を知っている人はいますか? メインボード レイアウトのバス番号を反映する方法はありますか?
追加のインストールなしで Windows システムで使用できるテクノロジのみを使用できます。 現在、少なくとも .Net Framework 4.5.2 を使用しています。

私が試したこと:

私の実験では、次のことがわかりました。
カードがインストールされているか、問題がある場合は、デバイス マネージャーで判断できます。 ほとんどの場合、問題が発生する場合は、製造元のドライバーがインストールされていません。 この場合、問題のあるアダプタ カードの PCI バスを検出することはできません。
に投稿された解決策を試しました マザーボードの PCI(e) スロットにプラグインされている PCI デバイス (存在する場合) を特定します。[^].
残念ながら、WMI クラス Win32_SystemSlots は適切ではありません。 カードは差し込まれているだけで、実際には使用されていないため、CurrentUsage プロパティには Available のみが表示されます。 InUse は、挿入されたカードがアクティブに使用されている場合にのみ表示されます。 このクラスの多くのプロパティ (SlotDesignation など) は、製造元が SMBIOS に書き込んだ内容に依存します。 残念ながら、信頼性が高く、使用可能ではありません。
残念ながら、WMI クラス WIN32_SystemSlots、WMI32_Bus、WMI32_DeviceBus、および WMI_PNPEntity の組み合わせ/使用も役に立たない。 同じことが BusNumber/BusNum プロパティにも当てはまります。

コメント

タイトルとURLをコピーしました