2010-08-25 83 views
3

是否有可能將所有連接到系統的相機連同其物理地址一起登記?選擇相機

我不喜歡任何特定的語言,但我更喜歡C#。

感謝您的幫助。

+0

使用正確的API和正確的代碼,任何事情都是可能的。 – 2010-08-25 14:48:04

+0

+1我不知道如何回答的專業知識問題總是讓我着迷。 – 2010-08-25 14:48:32

+0

@ Muad'Dib這就是我正在尋找的API! :) – Jayesh 2010-08-25 14:54:58

回答

3

既然你提到了C#,我會假定你的意思是在Windows上。從視角來看,相機與攝像機幾乎完全不同(但有趣的是,相機和掃描儀幾乎相同)。

既然你沒有提到視頻,我還會猜測你的意思是相機。您通常通過Windows圖像採集(WIA)處理相機(和掃描儀)。要列出相機,通常使用IStillImage::GetDeviceList。這將返回一個STI_DEVICE_INFORMATION結構,其中包括一個dwHardwareConfiguration成員,告訴您使用的接口類型(例如USB)和pszPortName以標識相機連接的特定端口。

如果您想從該端口名稱回溯到更「物理」的東西,例如總線編號等,您應該(可能)能夠使用WMI_USBControllerDevice將設備映射回控制器。

如果您想要處理攝像機,您可以使用capGetDriverDescription來獲取已安裝的每個視頻捕獲設備的說明。在這種情況下,更接近「物理」地址更困難。 capGetDriverDescription會給你一個驅動程序名稱。我想你可以用通常的Windows「東西」來枚舉驅動程序並匹配名稱以找出有關該驅動程序的某些內容,但我沒有玩過,以確保(例如)它給出的名稱(內部驅動程序名稱,顯示名稱或什麼)。

另請注意,隨着時間的推移,MS已經開發了大約六種不同的多媒體接口,因此幾乎所有的多媒體貓都可以被剝皮至少六種不同的方式。

+0

謝謝你那非常好的爆發。我會嘗試使用它。 – Jayesh 2010-08-25 16:01:06