2017-01-24 1 views
6

私は特定の数の外部デバイスを持っています。 それぞれの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スロットなしの説明を得ることができます。私はちょうど一緒にマップすることはできません、それは私が必要なものです。私は何かを見落とさなければならないか、正しい質問をしないといけません。なぜなら、これは私をかなり一般的なものとして襲うからです。

ありがとうございました。

+0

こんにちはキース、私はあなたへの答えを知らないが、私はあなたがデバイスのIDを取得する方法を見つける必要があるように思えるポート。物事はそれらを識別するための何かを持っている必要があります...これを見て... https://msdn.microsoft.com/en-us/windows/hardware/drivers/install/identifiers-for-pci-devices – GreatJobBob

+0

@GreatJobBob 。物事には実際に説明があります。彼らはちょうど異なるもの間でユニークではありません。私は、IDと同時に複数のものを区別しようとしています。言い換えれば、私はIDを持っていますが、UIDを取得するにはカードとポートにマップする必要があります。 –

+0

あなたのものが接続しているカードはUIDを持っているはずですので、あなたのカードがインストールされているPCIスロットを確認するためにカードUIDをスキャンできませんか? –

答えて

-1

マシンが動いてデバイスが別のポートに差し込まれてしまうと、非常に壊れやすいようです。 Isは個人的なプロジェクトか、あなたが配布しようとしているものです。後者の場合は別の方法を見つける必要があります。自分の創造物の「もの」ですか?そうであれば、それぞれに一意の識別子を持つ能力を含める必要があります。そうでない場合は、製造元にお問い合わせください。ポートでそれを識別しようとすると、頭痛の原因になることがあります

+0

あなたのポイントは理にかなっていますが、私の特定の問題に本当に役立つものではありません。確かに私はあなたに同意します...しかし、私は物事をUIDで構築したものを再製造することはできません。グラフィックスカードのような他のデバイスは、少なくとも私が見てきたように、ユニット固有のUIDを持っているようには見えないことに注意してください。 –

+0

Okay Keithそれは公正ですが、グラフィックカードではリブートの間に送られたものを追跡する必要はありません。たぶん、あなたがしようとしていることについてもっと詳しく説明することができます:) – GreatJobBob

+0

ものはカメラです。私は、各カメラの出力を、それが発生した特定のカメラに関連付ける必要があります。私は物事にその質問を抽象化しました。なぜそれが問題なのかわかりません...質問を可能な限りきれいに保つことを試みるだけです。私が探している解決策は、デバイスレベルのタイプではなくPnPまたはPCIスロットレベルです。 –

関連する問題