阅读:1782回复:10
非分页内存>>>>
使用new(NonPagedPool)创建了几个非分页内存页,如何在驱动中根据情况访问内存页?
这个问题已经困扰了我很长时间,希望各位朋友提供点思路,先谢谢了! |
|
|
沙发#
发布于:2001-10-09 11:01
[QUOTE]原本由 Wing 发表
[B]对,应该是DEVICE_EXTENSION,没注意到。 我的驱动中DEVICE_EXTENSION是作为SMARTCARD_EXTENSION的成员来存储的,不会有区别吧? 关于这部分操作能否详细作个介绍,对于多设备的问题会很有帮助! [/B][/QUOTE] 一般是把SMARTCARD_EXTENSION作为DEVICE_EXTENSION的成员。虽然你这样做不知道会不会有问题。。。 |
|
|
板凳#
发布于:2001-09-30 10:55
对,应该是DEVICE_EXTENSION,没注意到。
我的驱动中DEVICE_EXTENSION是作为SMARTCARD_EXTENSION的成员来存储的,不会有区别吧? 关于这部分操作能否详细作个介绍,对于多设备的问题会很有帮助! |
|
|
地板#
发布于:2001-09-30 10:40
而且IRP HANDLER都是运行在PASSIVE上的,访问NonPagedPool根本就没有问题。
|
|
|
地下室#
发布于:2001-09-30 10:40
[QUOTE]原本由 Wing 发表
[B]我在非分页内存中保存了设备扩展的信息,是SmartCard Reader的,需要在访问其中一个时切换过去,我先按你说的看看MSDN,有问题我再麻烦你,谢谢 [/B][/QUOTE] 那也不是在DRIVER_EXTENSION中啊?那是DEVICE_EXTENSION。要访问这个玩意儿很简单。每次系统调用你的IRP HANDLER的时候,都会传给你一个DEVICE OBJECT和一个IRP,DEVICE_OBJECT的PDEVICE_EXTENSION成员变量就是指向这东东的。直接使用就可以了。very easy! 还有一个SMARTCARD_EXTENSION也可以作为DEVICE_EXTENSION的成员来储存。 |
|
|
5楼#
发布于:2001-09-30 10:27
我在非分页内存中保存了设备扩展的信息,是SmartCard Reader的,需要在访问其中一个时切换过去,我先按你说的看看MSDN,有问题我再麻烦你,谢谢
|
|
|
6楼#
发布于:2001-09-30 09:59
[QUOTE]原本由 Wing 发表
[B]其实所谓的情况简单的说就是根据需要自由访问已经建立的非分页内存,因为在我建立的非分页内存中保存有我的DRIVER_EXTENSION的参数,我需要来切换内存来访问这些DRIVER_EXTENSION请指条路吧,我很笨,真的. [/B][/QUOTE] NonPaged内存在dispatch和passive上都可以访问。而且一般的读写也很简单的,和普通的ring3的内存差不多。一些函数也就是Rtlxxxx之类的。 另外,你要用DRIVER_EXTENSION做什么呢?一般好像不用的。 |
|
|
7楼#
发布于:2001-09-29 11:17
具体那些函数,提醒几个,我再去找资料。
|
|
|
8楼#
发布于:2001-09-29 11:15
其实所谓的情况简单的说就是根据需要自由访问已经建立的非分页内存,因为在我建立的非分页内存中保存有我的DRIVER_EXTENSION的参数,我需要来切换内存来访问这些DRIVER_EXTENSION请指条路吧,我很笨,真的.
|
|
|
9楼#
发布于:2001-09-29 11:02
[QUOTE]原本由 Wing 发表
[B]使用new(NonPagedPool)创建了几个非分页内存页,如何在驱动中根据情况访问内存页? 这个问题已经困扰了我很长时间,希望各位朋友提供点思路,先谢谢了! [/B][/QUOTE] 你应该使内存管理函数来使用内存! |
|
|
10楼#
发布于:2001-09-29 10:20
你所谓的“根据情况“是什么意思?
|
|
|