- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我需要对所有驱动器执行检查,看看是否有任何 VID/PID 与特定驱动器匹配,如果匹配,我需要获取该闪存驱动器的驱动器号。感谢大家!
最佳答案
WMI 应该能够处理这个...
您必须添加对 System.Management dll 的引用,并且您需要:“使用系统管理;”行...请参阅底部的链接以获取屏幕截图,更详尽的解释...
using System.Management;
// Get all the disk drives
ManagementObjectSearcher mosDisks = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
// Loop through each object (disk) retrieved by WMI
foreach (ManagementObject moDisk in mosDisks.Get())
{
// Add the HDD to the list (use the Model field as the item's caption)
cmbHdd.Items.Add(moDisk["Model"].ToString());
}
private void cmbHdd_SelectedIndexChanged(object sender, EventArgs e)
{
// Get all the disk drives from WMI that match the Model name selected in the ComboBox
ManagementObjectSearcher mosDisks = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive WHERE Model = '" + cmbHdd.SelectedItem + "'");
// Loop through the drives retrieved, although it should normally be only one loop going on here
foreach (ManagementObject moDisk in mosDisks.Get())
{
// Set all the fields to the appropriate values
lblType.Text = "Type: " + moDisk["MediaType"].ToString();
lblModel.Text = "Model: " + moDisk["Model"].ToString();
lblSerial.Text = "Serial: " + moDisk["SerialNumber"].ToString();
lblInterface.Text = "Interface: " + moDisk["InterfaceType"].ToString();
// The capacity in gigabytes is easily calculated
lblCapacity.Text = "Capacity: " + moDisk["Size"].ToString() + " bytes (" + Math.Round(((((double)Convert.ToDouble(moDisk["Size"]) / 1024) / 1024) / 1024), 2) + " GB)";
lblPartitions.Text = "Partitions: " + moDisk["Partitions"].ToString();
lblSignature.Text = "Signature: " + moDisk["Signature"].ToString();
lblFirmware.Text = "Firmware: " + moDisk["FirmwareRevision"].ToString();
lblCylinders.Text = "Cylinders: " + moDisk["TotalCylinders"].ToString();
lblSectors.Text = "Sectors: " + moDisk["TotalSectors"].ToString();
lblHeads.Text = "Heads: " + moDisk["TotalHeads"].ToString();
lblTracks.Text = "Tracks: " + moDisk["TotalTracks"].ToString();
lblBytesPerSect.Text = "Bytes per Sector: " + moDisk["BytesPerSector"].ToString();
lblSectorsPerTrack.Text = "Sectors per Track: " + moDisk["SectorsPerTrack"].ToString();
lblTracksPerCyl.Text = "Tracks per Cylinder: " + moDisk["TracksPerCylinder"].ToString();
}
}
来自 MSDN CIM_DiskDrive 的 win32 类具有以下参数:
*看起来好像“DeviceID”就是你想要的...
class Win32_DiskDrive : CIM_DiskDrive
{
uint16 Availability;
uint32 BytesPerSector;
uint16 Capabilities[];
string CapabilityDescriptions[];
string Caption;
string CompressionMethod;
uint32 ConfigManagerErrorCode;
boolean ConfigManagerUserConfig;
string CreationClassName;
uint64 DefaultBlockSize;
string Description;
string DeviceID;
boolean ErrorCleared;
string ErrorDescription;
string ErrorMethodology;
string FirmwareRevision;
uint32 Index;
datetime InstallDate;
string InterfaceType;
uint32 LastErrorCode;
string Manufacturer;
uint64 MaxBlockSize;
uint64 MaxMediaSize;
boolean MediaLoaded;
string MediaType;
uint64 MinBlockSize;
string Model;
string Name;
boolean NeedsCleaning;
uint32 NumberOfMediaSupported;
uint32 Partitions;
string PNPDeviceID;
uint16 PowerManagementCapabilities[];
boolean PowerManagementSupported;
uint32 SCSIBus;
uint16 SCSILogicalUnit;
uint16 SCSIPort;
uint16 SCSITargetId;
uint32 SectorsPerTrack;
string SerialNumber;
uint32 Signature;
uint64 Size;
string Status;
uint16 StatusInfo;
string SystemCreationClassName;
string SystemName;
uint64 TotalCylinders;
uint32 TotalHeads;
uint64 TotalSectors;
uint64 TotalTracks;
uint32 TracksPerCylinder;
};
代码的顶部部分取自:
http://www.geekpedia.com/tutorial233_Getting-Disk-Drive-Information-using-WMI-and-Csharp.html
关于c# - 如何在 C# 中从 USB 闪存驱动器获取 VID/PID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10057800/
当运行这段代码时,它会以默认大小打开窗口: View [ text "window open with default size" ] 如果 a 明确给出一个大小,它将打开一个具有该大小的窗口
我无意中发现了这一点,只是想确保这不是 Rebol 设计中的一个小故障。我有以下代码,似乎成功捕获了 VID 环境中的所有程序错误。 view layout [ across l
我想重新设计REBOL2的VID中的模态对话框,比如alert, request/ok等,让它们更贴合其余部分的主题我的申请。我发现执行此操作的唯一方法是包含我自己的 request 函数的更改版本,
我正在寻找的是从内核模块中检查实时 USB 磁盘序列号的命令。 在内核中,lsusb 将不起作用。 TMI 条款:我正在为客户开发实时 USB 设备,这将是我们版权保护的当前部分。 最佳答案 您的程序
我想在上传时将 wmv 转换为 mp4、webm 和 ogv。有没有办法在代码隐藏中实现 miro 视频转换器或类似的东西? 我用的是ACT的AsyncUpload aspx 页面 fun
我有一个错误 test: line 16: syntax error near unexpected token `done' test: line 16: ` done
我正在编写一个 Ruby gem,它将通过 USB 通过串行方式与设备通信。我需要处理几种不同的通信格式,格式是使用 PID/VID 值的组合确定的。 我希望 gem 是跨平台的 (Linux/Mac
如果我插入一个设备,比如 /dev/ttyUSB0,我想根据它的 VID:PID(通过 lsusb 找到)得到数字 0 ),我怎么能在 C++ Linux 中做到这一点?我有这段代码可以找到一台打印机
我正在创建一个基于 AVR 微 Controller 的硬件 MIDI 设备。 我已经能够成功指定使用 MIDI USB 类,因此我的设备无需安装任何其他驱动程序即可运行。我也设置了它,因此我的设备具
请考虑这个简单的 rebol2 代码来说明我的问题: REBOL [] a: make face [ offset: 0x0 color: yellow size: 20x20
2015 年 ImageNet 大规模视觉识别挑战赛 (ILSVRC2015) 使用新数据集引入了一项称为视频对象检测 (VID) 的任务。 所以我去 ILSVER2015 网站并尝试查找数据集。 h
正在探索 drupal 6.15, 我要做数据库迁移,普通数据库到 drupal 数据库, 什么是 drupal cms 中 node_revision 表中的 vid 字段, 我认为 vid 不是词
我正在学习linux内核和驱动程序,只是一个新手。我想编写一个“驱动程序”,它可以获取任何 USB 设备的 PID/VID,然后将这些数字打印到内核日志中。 据我所知,USB HCI 会从连接的 US
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 5 年前。 Improve
在 Linux 中,USB 串口转换器通常显示为/dev 目录中的一个节点:/dev/ttyUSBx。 要使用串口转换器首先要打开端口,然后进行配置等等。 port = open("/dev/ttyU
我正在 Linux 中进行智能卡项目,我正在使用 Alcor 9563 智能卡读卡器,我使用 ccid/pcsc ,但 Linux 无法识别读卡器: 如何在 Linux 中使用 vid/pid 添加此
当使用 SetupDiGetDeviceInterfaceDetail 检索与连接的 USB 设备相关的 SP_DEVICE_INTERFACE_DETAIL_DATA 时,将返回一个名为 Devic
我想向由 VID 和 PID 标识的特定 USB 设备发送弹出命令。我可以通过使用 SetupDiEnumDeviceInfo() 和 SetupDiGetDeviceRegistryProperty
在 Windows 设备管理器中,我可以查找连接到系统的每个 USB 设备的 VID 和 PID。使用此信息查找设备供应商的好方法是什么? 我的动机是我想向我的用户部署一个应用程序,该应用程序将识别连
我正在开发一个社区视频网站(Wordpress 主干网),该网站将允许用户简单地提交一个链接并拥有该网站上的所有信息。我的主要部分正在工作(过滤视频 ID 并将值植入 Javascript 函数中以获
我是一名优秀的程序员,十分优秀!