私は特定の数の外部デバイスを持っています。 それぞれのThingは、PCIスロットに差し込まれたPnPカードを介してコンピュータと接続します。 各カードには4つのポートがあります。 リブートの間に一貫している、存続するそれぞれのThingに対してUIDを取得する必要があります。 Thingsには、私がアクセスできるUIDが組み込まれていないことに注意してください。マッピングプラグNデバイスをPCIスロットIDに再生するC#
この問題を解決する私の考えは、カード上の各ポートのUIDを取得することです。私は、各カードがどのPCIスロットに接続されているかを把握しておく必要があります。再起動時に変更されることはなく、確かにポートは同じ順序になるはずです...したがって、私は基本的にUIDで各ポートにラベルを付け、各UIDが関連付けられているUIDを知ることができます。
私はC#オブジェクトが最もよく使われるだろうと考えています。私が見つけた最も近いのは、System.Management
ライブラリのManagementObjectSearcher
オブジェクトです。ここで私は、これは私が欲しいものを私になるだろうかどうかを確認するために書いたいくつかの簡単なコードは次のとおりです。
static void Main(string[] args)
{
IDsearch();
Console.ReadLine();
}
static void IDsearch()
{
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_PnPEntity");
foreach (ManagementObject queryObj in searcher.Get())
{
Console.WriteLine("DeviceID: {0}", queryObj["DeviceID"]);
Console.WriteLine("Description: {0}", queryObj["Description"]);
}
}
これは私のコンピュータ上のすべてのPnPデバイスについては、次のような出力を生成します。
DeviceID: ACPI\GENUINEINTEL_-_INTEL64_FAMILY_6_MODEL_60_-_INTEL(R)_CORE(TM)[email protected]_3.60GHZ\_1
Description: Intel Processor
DeviceID: USB\VID_0CF3&PID_3004\ALASKA_DAY_2006
Description: Dell Wireless 1535C Bluetooth Device
これは私に合うだろう私がPCIスロット番号を取得できるかどうかを確認する必要があります。
また、私はWin32_SystemSlot
クラスを見つけましたが、これは実際に何がスロットに差し込まれているのかわかりません!だからこの時点で、私は説明なしでPCIスロットとPCIスロットなしの説明を得ることができます。私はちょうど一緒にマップすることはできません、それは私が必要なものです。私は何かを見落とさなければならないか、正しい質問をしないといけません。なぜなら、これは私をかなり一般的なものとして襲うからです。
ありがとうございました。
こんにちはキース、私はあなたへの答えを知らないが、私はあなたがデバイスのIDを取得する方法を見つける必要があるように思えるポート。物事はそれらを識別するための何かを持っている必要があります...これを見て... https://msdn.microsoft.com/en-us/windows/hardware/drivers/install/identifiers-for-pci-devices – GreatJobBob
@GreatJobBob 。物事には実際に説明があります。彼らはちょうど異なるもの間でユニークではありません。私は、IDと同時に複数のものを区別しようとしています。言い換えれば、私はIDを持っていますが、UIDを取得するにはカードとポートにマップする必要があります。 –
あなたのものが接続しているカードはUIDを持っているはずですので、あなたのカードがインストールされているPCIスロットを確認するためにカードUIDをスキャンできませんか? –