首页
社区
课程
招聘
[求助]各位大大们,一个驱动导致蓝屏的问题,请帮忙给分析下,谢谢了
发表于: 2009-12-1 22:37 3310

[求助]各位大大们,一个驱动导致蓝屏的问题,请帮忙给分析下,谢谢了

2009-12-1 22:37
3310
驱动目的:是学习TDI驱动编程, 得到当前网络连接状况,得到每个网络连接的地址和端口信息。

方法思路:在驱动中过滤\device\tcp和\device\udp等设备对象的IRP_MJ_CREATE,该请求会生成网络连接的地址和端口信息,过滤这个请求,在完成例程中构建一个查询Irp,然后分发给该这些设备对象,当查询Irp被完成时,在查询IRp的完成例程输出地址和端口信息。

问题:当在第一个完成例程中 调用IoCallDriver分发查询Irp时,就蓝屏,代码有注释说明。

请各位大大们给分析指点下。我研究了两天了没找到问题,附件为驱动代码







//////////////////////////////////////////////////////////////////////////
//
//地址端口生成的Irp的完成例程,该例程在该例程中会调用IoCallDriver分发新的查询Irp
//问题也就在这里,只要分发查询Irp,就会蓝屏
NTSTATUS
tdi_create_addrobj_complete(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context)
{
	NTSTATUS			status;
	PIO_STACK_LOCATION  irps		= IoGetCurrentIrpStackLocation( Irp );

	PIRP				query_irp	=(PIRP) Context;

	PDEVICE_OBJECT		devobj		= GetOrginalDeviceObject(DeviceObject);


	TDI_ADDRESS_INFO*	tdi;

	PMDL				mdl;
	


	KdPrint(("tdi_create_addrobj_complete\n"));

	if ( Irp->IoStatus.Status != STATUS_SUCCESS )
	{
		goto done;
	}

	tdi = (TDI_ADDRESS_INFO *)ExAllocatePool(NonPagedPool, TDI_ADDRESS_INFO_MAX);
	if (tdi == NULL) {
		KdPrint(("[tdi_fw] tdi_create_addrobj_complete: ExAllocatePool!\n"));
		
		status = STATUS_INSUFFICIENT_RESOURCES;
		return  status;
	}

	KdPrint(("tdi_create_addrobj_complete : ExAllocatePool\n"));
	
	mdl = IoAllocateMdl(tdi, TDI_ADDRESS_INFO_MAX, FALSE, FALSE, NULL);
	if (mdl == NULL) {
		KdPrint(("[tdi_fw] tdi_create_addrobj_complete: IoAllocateMdl!\n"));
		
		status = STATUS_INSUFFICIENT_RESOURCES;
		return status;	
	}
	MmBuildMdlForNonPagedPool(mdl);


	TdiBuildQueryInformation(query_irp, devobj, irps->FileObject, tdi_create_addrobj_complete2, tdi,
					TDI_QUERY_ADDRESS_INFO, mdl );

	KdPrint(("tdi_create_addrobj_complete : TdiBuildQueryInformation\n"));


[B]	[COLOR="red"]//把这句打开就会蓝屏,不分发该Irp就没有问题[/COLOR][/B]	
[B][COLOR="Red"]IoCallDriver( devobj, query_irp );[/COLOR][/B]

done:

	if( Irp->PendingReturned )
	{
		IoMarkIrpPending(Irp);
	}
	
	return STATUS_SUCCESS;
}







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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//