阅读:1737回复:3
求助:禁止通过http协议下载
我想禁止通过http协议从网上下载电影。
我研究发现当下载时,都会向服务器发送一个请求,这个请求里面就包含此下载内容的URL。 我现在就想截获这个请求内容,并分析要下载的是否是电影文件。 现在碰到的问题是: 我无法获得TDI_SEND中的数据包, 请各位大侠指点。 如果做过这方面研究的欢迎一起讨论。谢谢! 我现在知道要发送的数据包在irp->mdladdress 里面,可我就是读不出来,郁闷。 我使用下面方法,每次运行到这就出错 if(NULL == (systemBuffer = ExAllocatePool(NonPagedPool, paramSend->SendLength+1)) { DbgPrint("Allocate memory error!"); return STATUS_INSUFFICIENT_RESOURCES; } if(STATUS_SUCCESS != TdiCopyMdlToBuffer(irp->MdlAddress,0, systemBuffer,0, paramSend->SendLength,0)) DbgPrint("Copy data in mdl error!"); else DbgPrint("%s",systemBuffer); ExFreePool(systemBuffer); systemBuffer = NULL; |
|
沙发#
发布于:2007-03-23 12:19
各位大侠有没有知道的, 麻烦告知一声
|
|
板凳#
发布于:2007-03-23 14:17
现在可以了, 我只不过把这个函数
TdiCopyMdlToBuffer(irp->MdlAddress,0, systemBuffer,0, paramSend->SendLength,0)) 最后一个参数0变为一个变量就可以了。(我本来不想得到它的值的,现在看来不要不行啊) ![]() |
|
地板#
发布于:2007-03-27 09:31
现在我可以得到数据了, 为什么有时会出错,有时又不出错? 要么报告BAD_POOL_CALLER 或者UNEXPECTED_KERNEL_MODE_TRAP 急急!
代码如下: 如果您有什么好的获得TDI_SEND中的数据的方法,请不吝赐教。 谢谢! if(NULL == (systemBuffer=ExAllocatePool(NonPagedPool, paramSend->SendLength+1))) { DbgPrint("Allocate memory error!"); return STATUS_INSUFFICIENT_RESOURCES; } if(STATUS_SUCCESS != TdiCopyMdlToBuffer(irp->MdlAddress,0, systemBuffer,0, paramSend->SendLength,&CopiedBytes)) DbgPrint("Copy data in mdl error!"); else DbgPrint("%s",systemBuffer); ExFreePool(systemBuffer); systemBuffer = NULL; |
|