標籤:
在USB\VID_05A9&PID_2800\5&1BFE1C47&0&8裡面,USB代表裝置類型,
5&1BFE1C47&0&8代表裝置串連位置,包括匯流排位置,控制器位置,控制器編號,連接埠編號這幾項,
而VID_05A9&PID_2800則是裝置資訊,而USB的驅動也正是依賴於這個,
VID其實是Vendor ID,而PID則是Product ID,分別代表生產商的編號和生產商內部的產品編號。
原則上說一個USB裝置必須有PID和VID,屬於USB介面晶片的可選設定。
VID和PID分別是指 Vendor ID(生產廠商ID) 和 Product ID(產品ID)。
“裝置範例ID”為例:USBVID_090C&PID_37A4&MI_00\6&3AE50101&0&0000
USB代表裝置類型,
6&3AE50101&0&0000代表裝置串連位置,包括匯流排位置,控制器位置,控制器編號,連接埠編號這幾項,
VID_090C&PID_37A4&MI_00則是裝置資訊,VID是Vendor ID,PID是Product ID,分別代表生產商的編號和生產商內部的產品編號。
///////////////////////////隨插即用匯流排資訊/////////////////////////////
ManagementObjectSearcher mos0 = new ManagementObjectSearcher(@"select * from Win32_Bus where DeviceID like ‘PNP_BUS%‘");
foreach (ManagementObject mo in mos0.Get())
{
foreach (PropertyData p in mo.Properties)
{
Console.WriteLine(p.Name + "--------" + p.Value);
}
}
/////////////////////////////////USB控制器以及串連的裝置/////////////////////////////////
ManagementObjectSearcher moc1 = new ManagementObjectSearcher(@"select * from Win32_USBController where Manufacturer=‘Intel‘");
foreach (ManagementObject mo1 in moc1.Get())
{
foreach (PropertyData p in mo1.Properties)
{
Console.WriteLine(p.Name + "--------" + p.Value);
}
}
ManagementObjectSearcher mos1 = new ManagementObjectSearcher(@"select * from Win32_USBControllerDevice");
foreach (ManagementObject mo1 in mos1.Get())
{
foreach (PropertyData p in mo1.Properties)
{
Console.WriteLine(p.Name + "--------" + p.Value);
}
}
////////////////////////////////隨插即用的某一個USB裝置//////////////////////////////////
ManagementObjectSearcher mos = new ManagementObjectSearcher(@"select * from Win32_PnPEntity where DeviceID like ‘%usb%mi%‘ and (Manufacturer like ‘microsoft‘ or Service=‘usbvideo‘)");
foreach (ManagementObject mo in mos.Get())
{
foreach (PropertyData p in mo.Properties)
{
if ((p.Name == "Caption") || (p.Name == "ClassGuid") || (p.Name == "DeviceID") || (p.Name == "PNPDeviceID"))
{
Console.WriteLine(p.Name + "--------" + p.Value);
}
}
}
C#讀取USB的一些相關資訊