首页
社区
课程
招聘
[求助]IoCreateDevice,MjorFunction没反应?
发表于: 2009-11-28 15:15 4510

[求助]IoCreateDevice,MjorFunction没反应?

2009-11-28 15:15
4510
打印不出那        KdPrint(("---------Dispatch------------\n"));这行,
create设备创建成功了。
那位帮忙~
~~~~
一直在模仿,却从未超越~

#include <NTDDK.h>

VOID MyUnload(PDRIVER_OBJECT DriverObject);// 
NTSTATUS MyDispatch(IN PDEVICE_OBJECT pDevObj,IN PIRP pIrp);
NTSTATUS IoCreate(IN PDRIVER_OBJECT  DriverObject);
////////////////////////////////////////////////////////////////
PDEVICE_OBJECT pDevObj; // Var Device Object
////////////////////////////////////////////////////////////////
NTSTATUS DriverEntry( 
			IN PDRIVER_OBJECT  DriverObject, 
			IN PUNICODE_STRING  RegistryPath 
			)
{
    NTSTATUS stauts=STATUS_SUCCESS;
	KdPrint(("=========Start==============\n"));
	DriverObject->DriverUnload=MyUnload;
	DriverObject->MajorFunction[IRP_MJ_CREATE]=MyDispatch;
    DriverObject->MajorFunction[IRP_MJ_CLOSE]=MyDispatch;
	stauts=IoCreate(DriverObject);
	return stauts;

}


////////////////////////////////////////////////////////////////
VOID MyUnload(PDRIVER_OBJECT DriverObject)
{
		if (pDevObj != NULL)
		{
		   IoDeleteDevice(pDevObj);
		}

		 KdPrint(("============End========== \n"));
}



////////////////////////////////////////////////////////////////
NTSTATUS MyDispatch(IN PDEVICE_OBJECT pDevObj,IN PIRP pIrp) 
{
	KdPrint(("---------Dispatch------------\n"));
	pIrp->IoStatus.Status = STATUS_SUCCESS;
	IoCompleteRequest( pIrp, IO_NO_INCREMENT );
	return STATUS_SUCCESS;
}

////////////////////////////////////////////////////////////////
NTSTATUS IoCreate(IN PDRIVER_OBJECT  DriverObject)
{
	NTSTATUS status;
	UNICODE_STRING deviceName;
	RtlInitUnicodeString(&deviceName,L"\\Device\\MyDevice");
	status=IoCreateDevice(DriverObject,0,&deviceName,FILE_DEVICE_UNKNOWN,0,FALSE,&pDevObj);
	if (!NT_SUCCESS(status)) 
	{
		IoDeleteDevice(pDevObj);
		return status;
	}
	return STATUS_SUCCESS;
}

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
2
  你单单加载驱动,当然现实不出来了。

IRP_MJ_CREATE,IRP_MJ_CLOSE 这些例程是要触发的。
2009-11-28 15:29
0
雪    币: 202
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
iocreatedevice创建,他不产生irp么?
2009-11-28 15:30
0
雪    币: 202
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
又看了下书,这个请求一般是应用层的一些API操作发出的不同请求包,内核的有些也会发出irp

是否创建设备不发出呢?
2009-11-28 15:47
0
雪    币: 722
活跃值: (123)
能力值: ( LV12,RANK:300 )
在线值:
发帖
回帖
粉丝
5
晕倒,IoCreateDevice和向Device发送IRP_MJ_CREATE的IRP请求,两者完全不是一回事。
2009-11-28 21:00
0
雪    币: 229
活跃值: (483)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
6
貌似MJ_IRP_CREATE是由r3的CreateFie可以触发的
2009-11-29 11:01
0
雪    币: 229
活跃值: (483)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
7
不是创建驱动or设备时触发,是调用驱动之前CreateFile触发
不知说的对不对,你可以试下
2009-11-29 11:04
0
雪    币: 202
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
应是的,谢谢几位了,,,了解了。
请求包,是从应用层发到设备,createfile时创建设备,这时就产生mj-create irp。
2009-11-29 13:02
0
雪    币: 103
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
不处理IRP_MJ_CREATE就是这样的结果吧
2009-11-29 18:50
0
游客
登录 | 注册 方可回帖
返回
//