阅读:2583回复:8
请问vista下IoBuildPartialMdl的使用
有USB驱动,在2000、XP下使用正常,在vista下运行到IoBuildPartialMdl就出错,不知道为什么,请大家赐教。
IoBuildPartialMdl在StartIO中, ULONG_PTR va = (ULONG_PTR) MmGetMdlVirtualAddress(Irp->MdlAddress); PMDL mdl = IoAllocateMdl((PVOID) va, MaximumTransferSize, FALSE, FALSE, NULL); IoBuildPartialMdl(Irp->MdlAddress, mdl, (PVOID) va, seglen); 在我进行读操作的时候,seglen应该等于0x1000C,这在XP中没有问题,但在vista中只要运行这条命令就出错。调试中我随意将seglen改为8,则运行通过了,但很明显8不是我所需要的值。请问这是怎么回事?Vista和XP在驱动中主要有哪些不同呢? |
|
沙发#
发布于:2008-07-10 10:38
MaximumTransferSize才64KB。
请问watsonhua,你当时是怎么用的? |
|
板凳#
发布于:2008-07-11 09:46
返回值是0x1000C,64k+0xc
|
|
地板#
发布于:2008-07-14 09:20
可是在XP系统下使用没有问题,在Vista下才有这个问题,所以想问问XP和Vista的区别
|
|
地下室#
发布于:2008-07-16 17:30
自己顶,请大家帮忙
|
|