首页
社区
课程
招聘
[旧帖] [求助]初学驱动帮忙看看几行代码 0.00雪花
发表于: 2014-9-22 00:31 1453

[旧帖] [求助]初学驱动帮忙看看几行代码 0.00雪花

2014-9-22 00:31
1453
#include<ntddk.h>
#include <windef.h>
NTSTATUS CreateMyDevice (IN PDRIVER_OBJECT pDriverObject);//函数前置说明
VOID jiang(PDRIVER_OBJECT A);//函数前置说明
NTSTATUS add(IN PDEVICE_OBJECT A,IN PIRP pIrp);//函数前置说明
NTSTATUS DriverEntry(PDRIVER_OBJECT A,PUNICODE_STRING B)
{
  A->MajorFunction[IRP_MJ_CREATE]=add;//注册派遣函数
  A->MajorFunction[IRP_MJ_CLOSE]=add;
  A->MajorFunction[IRP_MJ_WRITE]=add;
  A->MajorFunction[IRP_MJ_READ]=add;
  A->DriverUnload=jiang;//注册卸载例程
  return(1);
}
VOID jiang(PDRIVER_OBJECT A)//卸载例程
{
  PDEVICE_OBJECT pdx;
  UNICODE_STRING tu;
  RtlInitUnicodeString(&tu,L"\\??\\yjx883");
  pdx=A->DeviceObject;
  IoDeleteDevice(pdx);
  IoDeleteSymbolicLink(&tu);
  DbgPrint("卸载成功");
}
NTSTATUS CreateMyDevice (IN PDRIVER_OBJECT pDriverObject)//创建设备例程
{
  NTSTATUS status;
  PDEVICE_OBJECT pDevObj;
  UNICODE_STRING devName;
  UNICODE_STRING tu;
  RtlInitUnicodeString(&tu,L"\\??\\jjj883");
  RtlInitUnicodeString(&devName,L"\\Device\\jjj884");
  status=IoCreateDevice(pDriverObject,0,&devName,FILE_DEVICE_UNKNOWN,0,TRUE,&pDevObj);
  pDevObj->Flags |= DO_BUFFERED_IO;//以缓冲区方式操作
  status = IoCreateSymbolicLink( &tu,&devName );//创建符号链接
  DbgPrint("设备创建成功");
  return(1);
}
NTSTATUS add(IN PDEVICE_OBJECT A,PIRP pIrp)//派遣函数例程
{
   ULONG arr;
   NTSTATUS dd;
   PIO_STACK_LOCATION stack;
   dd=STATUS_SUCCESS;
   pIrp->IoStatus.Status=dd;//返回状态
   stack=IoGetCurrentIrpStackLocation(pIrp);//得到IO堆栈
   arr=stack->Parameters.Read.Length;
   pIrp->IoStatus.Information=arr;
   memset(pIrp->AssociatedIrp.SystemBuffer,0xAA,arr);
   IoCompleteRequest(pIrp,IO_NO_INCREMENT);//结束IRP
   return dd;
}
小弟初学驱动写了几行可是win32CreateFile函数返回INVALID_HANDLE_VALUE,
win32程序也没有错各位帮忙看看吧先谢了

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 345
活跃值: (57)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
create,close最好分开来!而且要必须返回成功!
2014-9-22 07:12
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
创建与关闭哪里没有分开啊编译都通过也生成SYS文件win32程序就是不能和SYS通信求各位说得详细点小弟先谢了
2014-9-22 09:37
0
雪    币: 46
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
你根本就没有调用CreateMyDevice 这个函数,怎么能更改创建CDO设备对象呢?没有CDO你怎么能够通过应用层跟驱动通信呢???
2014-9-22 09:45
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我这眼睛哈哈真瞎谢谢了
2014-9-22 20:06
0
游客
登录 | 注册 方可回帖
返回
//