15

I did a google search and found tools like devcon and devmanview but they are only useful to disable/enable the device not the device driver. What I want to do is be able to disable/enable a particular device driver via command line. Anybody know any tool which can help me do this?

In my case, I actually want to disable/enable a Nvme Mass storage device driver.

Update- I tried using the sc.exe suggested, but I didn't succeed in stopping the driver. Any help?

    C:\Users\Administrator>sc query nvme
    SERVICE_NAME: nvme
    TYPE               : 1  KERNEL_DRIVER
    STATE              : 4  RUNNING
                            (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
    WIN32_EXIT_CODE    : 0  (0x0)
    SERVICE_EXIT_CODE  : 0  (0x0)
    CHECKPOINT         : 0x0
    WAIT_HINT          : 0x0

    C:\Users\Administrator>sc stop nvme [SC] ControlService FAILED 1052:
    The requested control is not valid for this service.
5
  • I don't think you can enable/disable drivers only devices. What are you actually trying to achieve?
    – DavidPostill
    Feb 16, 2016 at 23:20
  • 1
    @DavidPostill Actually, some drivers can be stopped (even file system drivers!) - Kate, what's the output of sc queryex type= driver | findstr /i service_name (all literal); is the desired driver in there?
    – Ben N
    Feb 16, 2016 at 23:22
  • @BenN I did that and I have a long list of service names, how can i map these service names to the driver I want to manipulate? Any help?
    – kate
    Feb 16, 2016 at 23:51
  • @BenN I think I found it! :) Missed it the first time! its just 'nvme'! :)
    – kate
    Feb 16, 2016 at 23:54
  • 1
    @DavidPostill I am trying to reset the nvme drive, specifically issue a controller reset by disabling/re-enabling the driver!
    – kate
    Feb 16, 2016 at 23:57

5 Answers 5

5

You can use the sc.exe utility for this.

sc query type= driver | findstr WHAT_IM_LOOKING_FOR

If you find what you're looking for, you can at stop the driver with:

sc stop EXACT_DRIVER_NAME_AS_LISTED_BY_QUERY

Obviously you'll need a shell with administrator privileges to do this. If you're looking to automate this at login, you can make a batch file and install it as an administrator with task scheduler. Tasks installed that require administrator privileges, but were installed by an administrator, will not prompt for privileges at startup, but will be granted them automatically.

3
  • 2
    I am having trouble with this -\n C:\Users\Administrator>sc.exe query type= driver | findstr nvme SERVICE_NAME: nvme DISPLAY_NAME: nvme C:\Users\Administrator>sc stop nvme [SC] ControlService FAILED 1052: The requested control is not valid for this service.
    – kate
    Feb 17, 2016 at 1:15
  • 1
    @Kate I guess then that the driver is not stoppable.
    – user72945
    Feb 17, 2016 at 3:13
  • @kate actually from your update, the service is listed as STOPPABLE, so I suspect the issue is something else. I'd recommend a new question, as this is now technically a separate issue.
    – user72945
    Feb 17, 2016 at 3:14
2

pnputil is (now?) included with Win10.

pnputil /disable-device "PCI/VEN_..."

Look up the instance path in Device Manager and specify it here.

pnputil /enable-device "PCI/VEN_..."

Run as admin.

2

I was able to install the free devcon.exe utility inside the Windows 10 driver kit from Microsoft.

This utility will let you enable / disable whatever you see in Driver Manager; in my case, I found that the "High Definition Audio Bus" from Microsoft on Windows 10 was badly written and was consuming 10% of CPU, always.

I disabled it with:

devcon.exe disable PCI\VEN_8086"&"DEV_9D71*

You have to run this as administrator, so I put this into a .bat file, and made a 'run as administrator' shortcut for it.

0

i'm able to stop the driver

C:\Windows\system32>sc stop kmd
SERVICE_NAME: kmd
        TYPE               : 1  KERNEL_DRIVER
        STATE              : 3  STOP_PENDING
                                (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

But the corresponding GUI is not updated in devmgmt.msc Usually when i disable the driver in Device Managenement, down arrow on the driver icon appears to confirm the driver is disabled.

with the command line sc, the down arrow does not appear

0

Try C:\> NET STOP drivername .

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .