-
-
[求助]各位大大们,一个驱动导致蓝屏的问题,请帮忙给分析下,谢谢了
-
发表于: 2009-12-1 22:37 3461
-
驱动目的:是学习TDI驱动编程, 得到当前网络连接状况,得到每个网络连接的地址和端口信息。
方法思路:在驱动中过滤\device\tcp和\device\udp等设备对象的IRP_MJ_CREATE,该请求会生成网络连接的地址和端口信息,过滤这个请求,在完成例程中构建一个查询Irp,然后分发给该这些设备对象,当查询Irp被完成时,在查询IRp的完成例程输出地址和端口信息。
问题:当在第一个完成例程中 调用IoCallDriver分发查询Irp时,就蓝屏,代码有注释说明。
请各位大大们给分析指点下。我研究了两天了没找到问题,附件为驱动代码
方法思路:在驱动中过滤\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;
}
[培训]科锐软件逆向54期预科班、正式班开始火爆招生报名啦!!!
赞赏
他的文章
- [讨论]Ntfs的小疑问,各位牛牛进来看看 6916
- 一个简单的编译问题 3223
- [原创]MDL学习笔记 5402
- [原创]计算机系学生大学四年应该这样过 3978
- [求助]各位大大们,一个驱动导致蓝屏的问题,请帮忙给分析下,谢谢了 3462
赞赏
雪币:
留言: