4

我正在编写一个 Windows 内核驱动程序,我正在尝试实现以下内容。

假设驱动程序已通过具有特定 IOCTL 代码的DeviceIoControl函数从用户模式调用。在这种情况下,驱动程序如何自行卸载?换句话说,如何实现与运行net stop命令相同的行为?

更准确地说,在实现DispatchDeviceControl 回调时我应该写什么

NTSTATUS IoctlDeviceControl(PDEVICE_OBJECT pDeviceObject, PIRP pIrp) {
    // some code...

    switch (ioctlCode) {
        case IOCTL_MY_UNLOAD:  <---
        ...
    }

    return Status;
}
4

1 回答 1

4

你可以使用ZwUnloadDriver内核函数!

文档:

ZwUnloadDriver 例程从系统中卸载驱动程序。使用此例程时要格外小心。(请参阅以下备注部分。)

C/C++ 定义:

NTSTATUS ZwUnloadDriver(
  _In_  PUNICODE_STRING DriverServiceName
);

MSDN 来源:

http://msdn.microsoft.com/en-us/library/windows/hardware/ff567117(v=vs.85).aspx

于 2013-10-31T03:27:22.357 回答