devcon工具使用
+ -

DevCon Status命令 CM_Get_DevNode_Status_Ex

2022-01-28 140 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函数获取设备的状态的。

0 篇笔记 写笔记

WDDM 子设备关状态
WDDM中使用来DxgkDdiQueryChildStatus查询子设备的状态 InitialData.DxgkDdiQueryChildStatus = BddDdiQueryChildStatus;和其它的回调函数一样,最终的处理函数其实是BASIC_DIS......
NTSTATUS(驱动错误码)代码对照
使用Windows编程时,NSTATUSR状态码表:值错语码00000000STATUS_SUCCESS00000000STATUS_WAIT_000000001STATUS_WAIT_100000002STATUS_WAIT_200000003......
DevCon Status命令
显示计算机上设备的驱动程序的 “正在运行”、”已停止” 或 “) 已禁用” 状态 (状态。 在本地和远程计算机上有效。在指定的远程计算机上运行命令。 必须使用反斜杠。注意 若要在远程计算机上运行 DevCon 命令,组策略设置必须允许即插即用服务在远程计算机上运行。 在运行 Windows Vi......
删除锁IO_REMOVE_LOCK与STATUS_DELETE_PENDING
删除锁IO_REMOVE_LOCK很少见,但很重要。其结构体定义为:typedef struct _IO_REMOVE_LOCK { IO_REMOVE_LOCK_COMMON_BLOCK Common;#if DBG IO_REMOVE_LOCK_DBG_BLOCK Dbg;......
Windows系统USB驱动的断电异常处理STATUS_NO_SUCH_DEVICE
USB设备除非特殊需要,一般都是系统自带。所以我们根据不用开发相应的驱动,就算是我们要搞自定义的USB设备,微软也贴心的帮我们搞了一个WinUSB,只我们的的固件按照某定的要求,也可以实现自定义通讯。所以从上面的来看,没有什么特殊的地方要我们开发Windows系统的USB驱动。不过有的时候就是那么奇......
总线驱动IRP的中止AbortIrp
AbortIrp用于驱动即将卸载,但系统这时又下发了一个功能驱动过来。这时我们需要中止它,系统通过我们Abort它的状态也许不再下发功能IRP了。对于总线驱动,IRP一般分为三类:第一种是通用的功能IRP,如IRP_MJ_CLOSEIRP_MJ_CREATEIRP_MJ_DEVICE_CO......
Windbg观察窗口的NTSTATUS将十进制改为十六进制显示
在Windbg里调试驱动时,NTSTATUS Status的值总显示为on-1**的十进制形式,非常不利于我们查看其对应的问题。如下:这时,我们只需要使用dd命令显示变量的值即可。2: kd> dd sffff8000`56fbf840 c0000010 fffff803 000000......
STATUS_DELETE_PENDING
STATUS_DELETE_PENDING的官方解释为:A non-close operation has been requested of a file object that has a delete pending.这里指在进行文件操作时,出现了一种情况:请求对一个文件对象执行非关闭操作,......
GetSystemPowerStatus获取交流还是电池供电及电池状态信息
GetSystemPowerStatus 函数返回系统电源的一个电量状态,这个状态显示系统是否运行在AC(交流电)或者DC(直流电)电流下。电池当前是否在充电或者电量的剩余使用时间。BOOL GetSystemPowerStatus( LPSYSTEM_POWER_STATUS lpSyst......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!