20楼#
发布于:2002-07-31 11:13
xdjm,不知道共享内存的分配是不是只限于非分页内存呢?因为我的Driver要用DMA进行大数据量传输,如果频繁的使用非分页内存,肯定会影响系统资源的,所以我打算采取分页内存来作
|
|
21楼#
发布于:2002-07-31 11:33
版主,我的意思就是只限于“3.Shared memory”,也就是说,在这种情况下,当App把数据写到Shared memory后,Driver是如何得到通知的? 至于通知,就是用共享Event,或者是用命名Event(这只能在NT4.0以上的版本中才有用),其它的方法我没有做过。至优势,我认为是一个折衷的的问题。我倒认为,只要功能实现了,多数时候是不需要考虑什么优势的。 |
|
|
22楼#
发布于:2002-07-31 12:56
xdjm,不知道共享内存的分配是不是只限于非分页内存呢?因为我的Driver要用DMA进行大数据量传输,如果频繁的使用非分页内存,肯定会影响系统资源的,所以我打算采取分页内存来作 可以使用分页内存,但是好象必须锁定才行。 |
|
23楼#
发布于:2002-08-05 09:27
请问xdjm:UserAddress=MnMapLockedPages(Mdl,UserMode),那么如何在我的应用程序里面使用UserAddress呢?因为UserAddress是在Driver里定义的!
|
|
24楼#
发布于:2002-08-05 09:29
另外,在使用分页内存时,如何锁定呢?真的很急,谢谢!
|
|
25楼#
发布于:2002-08-05 09:42
MmProbeAndLockedPages
|
|
|
26楼#
发布于:2002-08-05 13:25
1。UserAddress可以直接在APP中使用,例如:UserAddress[0]=1;
2。关于分页内存,你可以这么做: PMDL Mdl = IoAllocateMdl( VirtualAddress, // 分页内存的虚拟地址。 NumberOfBytes, FALSE, FALSE, NULL); MmProbeAndLockPages(Mdl,KernelMode,IoWriteAccess); // 锁定它 PVOID UserAddress = MmMapLockedPages(Mdl,UserMode); OK! |
|
27楼#
发布于:2002-08-05 14:11
可是UserAddress=MnMapLockedPages(Mdl,UserMode);这句话是放在我的Driver里的,那么我的App如何识别它呢?是不是用DeviceIoControl()传上去的呢?
|
|
28楼#
发布于:2002-08-06 13:06
可是UserAddress=MnMapLockedPages(Mdl,UserMode);这句话是放在我的Driver里的,那么我的App如何识别它呢?是不是用DeviceIoControl()传上去的呢? 是的。 |
|
上一页
下一页