DevCon Status命令 CM_Get_DevNode_Status_Ex
2022-01-28
194
0
显示计算机上设备的驱动程序的 “正在运行”、”已停止” 或 “) 已禁用” 状态 (状态。 在本地和远程计算机上有效。
在指定的远程计算机上运行命令。 必须使用反斜杠。
注意 若要在远程计算机上运行 DevCon 命令,组策略设置必须允许即插即用服务在远程计算机上运行。 在运行 Windows Vista 和更高版本的 Windows 的计算机上,默认情况下组策略禁用对服务的远程访问。
命令格式
devcon [/m:\\computer] status {* | ID [ID ...] | =class [ID [ID ...]]}
* 表示计算机上的所有设备。
ID 指定设备的所有或部分硬件 ID、兼容 ID 或设备实例 ID。 指定多个 ID 时,在每个 ID 之间键入一个空格。 包含字符和字符的(&) 必须用引号引起来。
以下特殊字符修改 ID 参数。
字符 | 说明 |
---|---|
匹配任何字符或无字符。 使用通配符 () 创建 ID 模式,例如磁盘。 | |
@ | 指示设备实例 ID,例如 @ROOT\FTDISK\0000 。 |
‘(单引号) | 与字符串在字面上 (与字符串在文本) 。 在字符串前加单引号以指示星号是 ID 名称的一部分,而不是通配符,例如 “*PNP0600”,其中*PNP0600 (包括星号) 是硬件 ID。 |
= class | 指定设备的设备类。 =字符串标识为类名。 |
还可以在类名后指定硬件 ID、兼容的 ID、设备实例 ID 或 ID 模式。 在每个 ID 或模式之间键入空格。 DevCon 在 类中查找与指定 ID 匹配的设备。
使用方法
devcon /m:\\Server01 status *
devcon status pci*
devcon status "PCI\VEN_115D&DEV_0003&SUBSYS_0181115D"
devcon status =printer
使用示例
如果 DevCon 无法确定设备的状态,例如,当设备不再连接到计算机时,DevCon 将从状态显示中省略描述状态的行。
下面的示例显示成功的状态命令。 描述设备状态的文本以粗体显示。
STORAGE\VOLUME\1&30A96598&0&SIGNATURE80OFFSET7E0000LENGTH270987600
Name: Generic volume
Driver is running.
1 matching device(s) found.
与此相反,下面的示例演示了 DevCon 如何显示设备找不到的状态。 显示中缺少状态说明。
STORAGE\VOLUME\1&30A96598&0&SIGNATURE80OFFSET7E0000LENGTH270987600
Name: Generic volume
1 matching device(s) found.
CM_Get_DevNode_Status_Ex相关代码
ULONG status = 0;
devInfoListDetail.cbSize = sizeof(devInfoListDetail);
if((!SetupDiGetDeviceInfoListDetail(Devs,&devInfoListDetail)) ||
((cr = CM_Get_DevNode_Status_Ex(&status,&problem,DevInfo->DevInst,0,devInfoListDetail.RemoteMachineHandle))!=CR_SUCCESS)) {
if ((cr == CR_NO_SUCH_DEVINST) || (cr == CR_NO_SUCH_VALUE)) {
isPhantom = TRUE;
} else {
Padding(1);
FormatToStream(stdout,MSG_DUMP_STATUS_ERROR);
return FALSE;
}
}
可以看到,是通过CM_Get_DevNode_Status_Ex函数获取设备的状态的。