yansong2020 发表于 2020-4-26 11:12:06

来学习学习技术

2388261 发表于 2020-4-30 18:32:39

111111111111111

qw2893385740 发表于 2020-5-15 03:26:44

我也来看看:)

sibaichi 发表于 2020-5-27 13:39:50

激动人心,无法言表,感谢楼主,感谢看流星社区的分享!

hxl 发表于 2020-12-27 19:44:53

KK                     

721875440 发表于 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("DriverDemo:DriverEntry...\n");
    //初始化各派遣例程
    pDriverObj->MajorFunction=DispatchCreateClose;
    pDriverObj->MajorFunction=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("DriverDemo:DriverUnload...\n");
   //删除符号连接名称
   UNICODE_STRING strLink;
   RtlInitUnicodeString(&strLink,LINK_NAME);
   IoDeleteSymbolicLink(&strLink);
   IoDeleteDevice(pDriverObj->DeviceObject);
}

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

qxun 发表于 2021-1-1 20:25:55

大佬6666想学习在流星社看到了感谢流星

19958665334 发表于 2021-1-2 00:13:17

WIN64驱动编程基础教程

84200034 发表于 2021-3-5 19:28:36

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

rororoya 发表于 2021-3-11 09:12:12

真的。。。。。。。。。。。。。吗
页: 1 2 3 4 5 6 7 [8] 9
查看完整版本: WIN64驱动编程基础教程(过WIN7/8/8.1签名强制的LIB)