看流星社区

 找回密码
 注册账号
楼主: smlyk

WIN64驱动编程基础教程(过WIN7/8/8.1签名强制的LIB)

[复制链接]

该用户从未签到

发表于 2020-4-26 11:12:06 | 显示全部楼层
来学习学习技术

该用户从未签到

发表于 2020-4-30 18:32:39 | 显示全部楼层
111111111111111

该用户从未签到

发表于 2020-5-15 03:26:44 | 显示全部楼层
我也来看看

该用户从未签到

发表于 2020-5-27 13:39:50 | 显示全部楼层
激动人心,无法言表,感谢楼主,感谢看流星社区的分享!
  • TA的每日心情
    萌哒
    2021-1-23 15:08
  • 发表于 2020-12-27 19:44:53 | 显示全部楼层
    KK                       
  • TA的每日心情
    开心
    2021-2-22 22:11
  • 发表于 2020-12-31 01:19:23 | 显示全部楼层
    发一篇驱动的基本框架吧!

    //////////////////////////////////////////////////
    // DriverDemo.cpp文件

    extern "C"
    {
        #include <ntddk.h>
    }
    //自定义函数的声明
    NTSTATUS DispatchCreateClose(PDEVICE_OBJECT pDevObj,PIRP pIrp);
    void DriverUnload(PDRIVER_OBJECT pDriverObj);
    //驱动内部名称和连接名称
    #define DEVICE_NAME L"\\Device\\devDriverDemo "
    #define LINK_NAME L“\\??\\sldevDriverDemo ”
    驱动程序加载时调用DriverEntry例程
    NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObj, PUNICODE_STRING pRegistryString)
    {
        NTSTATUS status=STATUS_SUCCESS;
        DbgPrint("DriverDemoriverEntry...\n");
        //初始化各派遣例程
        pDriverObj->MajorFunction[IRP_MJ_CREATE]=DispatchCreateClose;
        pDriverObj->MajorFunction[IRP_MJ_CLOSE]=DispatchCreateClose;
        pDriverObj->DriverUnload=DriverUnload;
        //设备名称
        UNICODE_STRING ustrDeviceName;
        RtlInitUnicodeString(&ustrDeviceName,DEVICE_NAME);
        //创建设备对象
        PDEVICE_OBJECT pDevObj;
        status = IoCreateDevice(pDriverObj,0,&ustrDeviceName,FILE_DEVICE_UNKNOWN,0,false,&pDevObj);
        if(!NT_SUCCESS(status))
        {
            DbgPrint("IoCreateDevice创建设备失败! \n");
            return status;
        }
         //符号连接名称
        UNICODE_STRING ustrLinkName;
        RtlInitUnicodeString(&ustrLinkName,LINK_NAME);
        //创建关联
        status=IoCreateSymbolicLink(&ustrLinkName,&ustrDeviceName);
        if(!NT_SUCCESS(status))
        {
            IoDeleteDevice(pDevObj);
            DbgPrint("IoCreateSymbolicLink创建关联失败! \n");
            return status;
        }
        return STATUS_SUCCESS;
    }
    //自定义驱动卸载函数
    void DriverUnload(PDRIVER_OBJECT pDriverObj)
    {
         DbgPrint("DriverDemoriverUnload...\n");
         //删除符号连接名称
         UNICODE_STRING strLink;
         RtlInitUnicodeString(&strLink,LINK_NAME);
         IoDeleteSymbolicLink(&strLink);
         IoDeleteDevice(pDriverObj->DeviceObject);
    }

    //处理IRP_MJ_CREATE
    NTSTATUS DispatchCreateClose(PDEVICE_OBJECT pDevObj,PIRP pIrp)
    {
        DbgPrint("DriverDemoriverUnload...\n");
        pIrp->IoStatus.Status=STATUS_SUCCESS;
        IoCompleteRequest(pIrp,IO_NO_INCREMENT);
        return STATUS_SUCCESS;
    }

    该用户从未签到

    发表于 2021-1-1 20:25:55 | 显示全部楼层
    大佬6666想学习在流星社看到了  感谢流星

    该用户从未签到

    发表于 2021-1-2 00:13:17 | 显示全部楼层
    WIN64驱动编程基础教程

    该用户从未签到

    发表于 2021-3-5 19:28:36 | 显示全部楼层
    啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
    点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
    您需要登录后才可以回帖 登录 | 注册账号

    本版积分规则

    小黑屋|手机版|Archiver|看流星社区 |网站地图

    GMT+8, 2024-4-26 17:45

    Powered by Kanliuxing X3.4

    © 2010-2019 kanliuxing.com

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