洛杉矶MC机房 高速低价18元起

DIYVM

咸鱼卖50的,防止移动云电脑关机的代码,拿去用吧,c写的

提示:如果官网是英文页面,建议使用谷歌浏览器能同步翻译页面。点击下载【谷歌浏览器最新绿色便携版】
注意:部分文章发布时间较长,可能存在未知因素,购买时建议在本站搜索商家名称,先充分了解商家动态。
交流:唯一投稿邮箱:hostvps@88.com。

网友 李少龙 说:

*帖最后由 李少龙 于 2023-12-24 20:04 编辑

拦截Windows关机事件,直接抛弃

#include <ntddk.h>

// 你的PnP驱动的设备扩展
typedef struct _DEVICE_EXTENSION {
    PDEVICE_OBJECT DeviceObject;
    // 其他字段
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;

NTSTATUS MyDeviceAdd (
    IN PDRIVER_OBJECT D**verObject,
    IN PDEVICE_OBJECT PhysicalDeviceObject
)
{
    NTSTATUS status;
    PDEVICE_OBJECT deviceObject;
    PDEVICE_EXTENSION deviceExtension;

    // 创建你的设备对象
    status = IoCreateDevice(
        D**verObject,
        sizeof(DEVICE_EXTENSION),
        NULL,
        FILE_DEVICE_UNKNOWN,
        FILE_DEVICE_SEC**E_OPEN,
        FALSE,
        &deviceObject
    );

    if (!NT_SUCCESS(status)) {
        ret**n status;
    }

    deviceExtension = (PDEVICE_EXTENSION) deviceObject->DeviceExtension;
    deviceExtension->DeviceObject = deviceObject;

    // 添加类似以下代码来设置你的设备的电源相关函数
    deviceObject->Flags |= DO_POWER_INRUSH;

    // 设置你的设备以进行电源IRP处理
    deviceObject->Flags |= DO_POWER_PAGABLE;

    ret**n status;
}

NTSTATUS MyPower (
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP Irp
)
{
    PIO_STACK_LOCATION stack;

    stack = IoGetC**rentIrpStackLocation(Irp);

    if (stack->MinorFunction == IRP_MN_SET_POWER) {
        if (stack->Parameters.Power.Type == ******PowerState) {

            // **是否是要到关机状态
            if (stack->Parameters.Power.State.******State == Power******Shutdown) {

                // 你可以在这里编写代码来拒绝关机*作,比如直接返回 STATUS_SUCCESS。
                ret**n STATUS_SUCCESS;
            }
        }
    }

    // 默认情况下,所有其他 IRPs 都会通过
    ret**n IoPa**IrpDown(DeviceObject, Irp);
}

VOID D**verUnload (
    IN PDRIVER_OBJECT D**verObject
)
{
    PDEVICE_OBJECT deviceObject;

    deviceObject = D**verObject->DeviceObject;

    while (deviceObject)
    {
        PDEVICE_OBJECT nextDeviceObject;

        nextDeviceObject = deviceObject->NextDevice;

        IoDeleteDevice(deviceObject);

        deviceObject = nextDeviceObject;
    }
}

NTSTATUS D**verEntry (
    IN PDRIVER_OBJECT D**verObject,
    IN PUNICODE_STRING RegistryPath
)
{
    NTSTATUS status;

    D**verObject->D**verUnload = D**verUnload;
    D**verObject->D**verExtension->AddDevice = MyDeviceAdd;
    D**verObject->MajorFunction[IRP_MJ_POWER] = MyPower;

    ret**n STATUS_SUCCESS;
}
网友 j5l6w5i90o 说:

666

网友 Eoyz369 说:

绑定

网友 lanse8899 说:

怎么用啊MJJ

网友 似毛非毛 说:

**666

网友 xwang 说:

哈哈

网友 李少龙 说:

lanse8899 发表于 2023-12-24 19:56
怎么用啊MJJ
网友 lanse8899 说:

李少龙 发表于 2023-12-24 20:05
编译 安装到 Windows
网友 genexis 说:

怎么用啊MJJ

网友 2716534027 说:

网友 Lenz 说:

小白表示只能看看

网友 zzr 说:

kvm不是可以断开电源形式的强制关机。。。不是通过软件层能解决的吧。

网友 盖亚奥特曼 说:

你提供的代码看起来是一个用于处理 Windows 内核模式电源**的驱动程序框架。要运行这个代码,你需要按照以下一般步骤进行:  1. **设置内核模式调试环境:**    – 在运行内核模式驱动程序之前,必须建立一个内核模式调试环境。    – 使用 WinDbg 或 Visual Studio 进行内核调试。  2. **编译驱动程序:**    – 使用 Windows 驱动程序开发工具包 (WDK) 和相应的编译器构建你的驱动程序。    – 确保项目设置正确配置。  3. **安装驱动程序:**    – 一旦编译完成,需要在目标**上安装驱动程序。    – 使用 `sc` (Service Cont**l) 命令或其他方法安装驱动程序。  4. **加载驱动程序:**    – 安装完成后,使用 `sc start` 命令或其他方式加载驱动程序。    – ****日志以查看加载过程中是否有任何错误。  5. ****驱动程序:**    – 通过与相关设备交互或触发与电源相关的事件来**驱动程序的功能。  6. **调试:**    – 使用内核调试器设置断点、**变量,并诊断任何问题。    – 分析调试输出和日志以进行故障排除。  7. **卸载驱动程序:**    – 在修改或重新编译驱动程序之前,使用 `sc stop` 命令卸载驱动程序。  8. **修改并重复:**    – 根据需求进行必要的代码修改。    – 重新编译和安装驱动程序。    – 重复**过程。  请记住,开发和**内核模式驱动程序可能对**稳定性产生重大影响。请谨慎行事,并确保你熟悉内核调试技术以及相关风险。  此外,在开发和**内核模式驱动程序时,请遵守法律和**规定。内核模式开发通常在受控制的环境中进行,不建议用于普通用户**。

网友 ****!Tencent 说:

出个成品把

网友 李少龙 说:

zzr 发表于 2023-12-24 20:19
kvm不是可以断开电源形式的强制关机。。。不是通过软件层能解决的吧。
网友 李少龙 说:

****!Tencent 发表于 2023-12-24 20:38
出个成品把

About 贝壳

【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。

 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

本文链接:贝壳主机网 » 咸鱼卖50的,防止移动云电脑关机的代码,拿去用吧,c写的

分享到: 生成海报
香港/美国/国内高速VPS
切换注册

登录

忘记密码 ?

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活