吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5947|回复: 48
收起左侧

[其他转载] 64驱动程序创建IO定时器

[复制链接]
谈笑人生 发表于 2018-10-18 09:30
最近由于工作太忙 没有来得及更新 不好意识了 今天把学习心得及代码共享
52破解有你更精彩

#include<ntddk.h>

VOID ontime(
        _In_ struct _DEVICE_OBJECT *DeviceObject,
        _In_opt_ PVOID Context
)
{
        KdPrint(("ontime:"));
}


NTSTATUS  CreateDevice(PDRIVER_OBJECT  pDriverObject)
{
    NTSTATUS  Status;
        PDEVICE_OBJECT pdevobj;
        UNICODE_STRING usdevname;
        UNICODE_STRING usSyvname;
        RtlInitUnicodeString(&usdevname,L"\\Device\\FirstDevice");   //函数  2个参数

       
        ///驱动中调用此函数来创建设备对象。
        Status=IoCreateDevice(pDriverObject,0,&usdevname,FILE_DEVICE_UNKNOWN,FILE_DEVICE_SECURE_OPEN,TRUE,&pdevobj);                        
        if (!NT_SUCCESS(Status))               
        {
                return Status;               
        }

            pdevobj->Flags |= DO_BUFFERED_IO;      

                RtlInitUnicodeString(&usSyvname, L"\\??\\FirstDevice");
                Status=IoCreateSymbolicLink(&usSyvname,&usdevname);    //IO参数  自己 百度下
                if (!NT_SUCCESS(Status))
                {
                        IoDeleteDevice(pdevobj);
                        return  Status;
                }

            return STATUS_SUCCESS;

}

VOID  CreatIOetime(PDEVICE_OBJECT pDriverObject)
{
        NTSTATUS star;
        star= IoInitializeTimer(pDriverObject, ontime,NULL);

        if (NT_SUCCESS(star))
        {
                KdPrint(("ok: %X %X",star, pDriverObject->DriverObject));
                IoStartTimer(pDriverObject);
                return;
        }
        KdPrint(("cuowu: %X",star));

}

VOID  delIOetime(PDEVICE_OBJECT pDriverObject)
{
        IoStopTimer(pDriverObject);
}



VOID MyUnload(PDRIVER_OBJECT pDriverObject)            //卸载驱动 格式  都是死的
{
        UNICODE_STRING usSyvname;
        RtlInitUnicodeString(&usSyvname, L"\\??\\FirstDevice");
       
        if (pDriverObject->DeviceObject!= NULL)

        {
                delIOetime(pDriverObject->DeviceObject);

                IoDeleteDevice(pDriverObject->DeviceObject);
                IoDeleteSymbolicLink(&usSyvname);
                KdPrint(("驱动卸载成功"));
                return;
        }
   

        ///卸载历程
        /*DbgPrint("1111111");*/
        KdPrint(("驱动卸载失败"));
}

NTSTATUS DriverEntry(PDRIVER_OBJECT        pDriverObject, PUNICODE_STRING Reg_Path)    //加载 驱动格式  都是死的
{  
        NTSTATUS  status;

        ///主程序
        KdPrint(("驱动加载成功"));
        /*DbgPrint("quit success");*/

        status = CreateDevice(pDriverObject);
   if(NT_SUCCESS(status))
   {
           KdPrint(("创建成功"));
           KdPrint(("%wZ", Reg_Path));
           CreatIOetime(pDriverObject->DeviceObject);
   }else{
        KdPrint(("创建失败"));
               
   }

        pDriverObject->DriverUnload = MyUnload;
        return STATUS_SUCCESS;
} 1.png 2.png

免费评分

参与人数 6吾爱币 +8 热心值 +6 收起 理由
笙若 + 1 + 1 谢谢@Thanks!
周二两 + 1 + 1 我很赞同!
陶志尚 + 1 + 1 楼主我兄弟,厉害吧[滑稽][滑稽]
seeyou_shj + 1 + 1 谢谢@Thanks!
xinkui + 1 + 1 谢谢@Thanks!
Monitor + 3 + 1 感谢开源

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

挑战走狗 发表于 2018-10-19 16:47
E: 64驱动程序创建IO定时器 [[url=]修改[/url]]                       
 楼主| 谈笑人生 发表于 2018-10-19 08:05
希望 弟兄们喜欢  慢慢的会把 XT 那些功能开发 出来开源了  。希望多多顶贴 与支持
hackysh 发表于 2018-10-18 10:16
mrd 发表于 2018-10-18 10:23
这是用来做什么的
xiaowanzi52 发表于 2018-10-18 10:29
呵呵哒,感谢领猪猪  呵呵哒
dazhuangzhuang 发表于 2018-10-18 10:31
看看是什么啊,谢谢
贝优妮塔 发表于 2018-10-18 10:42
52破解有你更精彩
xuelong911 发表于 2018-10-18 10:52
这是个什么东西?
Monitor 发表于 2018-10-18 11:23
是要开源吗?
lookerJ 发表于 2018-10-18 11:34
才允许看两张图片,其它隐藏了
menglini 发表于 2018-10-18 11:35
look look ths
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 19:58

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表