xuhai1976
驱动牛犊
驱动牛犊
  • 注册日期2002-12-25
  • 最后登录2006-04-25
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1597回复:13

怎样动态分配内存?40分

楼主#
更多 发布于:2003-08-13 16:26
我想在计算机启动以后,用驱动程序分配非分页内存,分配内存的大小可以由应用程序告诉它,随时可以增加和减少内存的大小,不知有没什么高招?
libin2309
驱动大牛
驱动大牛
  • 注册日期2002-11-20
  • 最后登录2005-12-29
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-08-13 16:29
可不可以这样:用DEVICEIOCTL把要分配的内存的大小传给驱动,驱动程序接着分配这么大的内存。
我是一只小小鸟,永远也飞也飞不高,但我永远在飞!
Tom.Cat
禁止发言
禁止发言
  • 注册日期2001-10-10
  • 最后登录2019-07-29
  • 粉丝1
  • 关注0
  • 积分-53792分
  • 威望197411点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2003-08-13 21:07
用户被禁言,该主题自动屏蔽!
aladdin
驱动牛犊
驱动牛犊
  • 注册日期2001-07-03
  • 最后登录2008-12-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-08-15 16:34
可不可以这样:用DEVICEIOCTL把要分配的内存的大小传给驱动,驱动程序接着分配这么大的内存。
 


非分页池中内存有限,没有必要就不要从这里分配了!
+====================+ | | | 飞 舞 轻 扬 | | | +====================+
libin2309
驱动大牛
驱动大牛
  • 注册日期2002-11-20
  • 最后登录2005-12-29
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-08-15 16:38
[quote]可不可以这样:用DEVICEIOCTL把要分配的内存的大小传给驱动,驱动程序接着分配这么大的内存。
 


非分页池中内存有限,没有必要就不要从这里分配了! [/quote]

不一定非要分配非分页内存,也可以分配分页内存!
我是一只小小鸟,永远也飞也飞不高,但我永远在飞!
flytomoon
驱动巨牛
驱动巨牛
  • 注册日期2003-07-09
  • 最后登录2004-10-18
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-08-17 13:01
[quote][quote]可不可以这样:用DEVICEIOCTL把要分配的内存的大小传给驱动,驱动程序接着分配这么大的内存。
 


非分页池中内存有限,没有必要就不要从这里分配了! [/quote]

不一定非要分配非分页内存,也可以分配分页内存! [/quote]

是的!
xuhai1976
驱动牛犊
驱动牛犊
  • 注册日期2002-12-25
  • 最后登录2006-04-25
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-08-18 12:57
谢谢大家的热情回答,其实,我想知道的是计算机系统到底我们可以使用的非分页内存有多大?使用什么方法可以在系统启动以后分配非分页内存,因为我听说非分页内存只能在系统启动的时候分配。希望各位大侠能够指点秘经!我一定给分。:)
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2003-08-18 15:02
因为我听说非分页内存只能在系统启动的时候分配。

who告诉你的?
xuhai1976
驱动牛犊
驱动牛犊
  • 注册日期2002-12-25
  • 最后登录2006-04-25
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-08-18 20:30
请大侠指点
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
9楼#
发布于:2003-08-18 20:51
PVOID
  ExAllocatePool(
  IN POOL_TYPE  PoolType,
  IN SIZE_T  NumberOfBytes
  );

NonPagedPool
Non-paged pool, which is non-pageable system memory. Non-paged pool can be accessed from any IRQL, but it is a scarce resource and drivers should allocate it only when necessary.
The system can only allocate buffers larger than PAGE_SIZE from non-paged pool in multiples of PAGE_SIZE. Requests for buffers larger than PAGE_SIZE. but not a PAGE_SIZE multiple, waste non-pageable memory.

nustzhua
驱动中牛
驱动中牛
  • 注册日期2002-06-19
  • 最后登录2015-09-27
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-08-19 09:34
[quote]因为我听说非分页内存只能在系统启动的时候分配。

who告诉你的? [/quote]
是的,谁这样说的,拉出来,砍了。
不限容量的免费邮箱 www.k65.net
xuhai1976
驱动牛犊
驱动牛犊
  • 注册日期2002-12-25
  • 最后登录2006-04-25
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-08-20 19:19
可是我是想在系统启动以后,分配很大的连续分页内存。而且无论系统运行到什么时候,都可以分配。这个时候可以分配连续分页内存已经很小了,如果分配小片连续份页内存当然没有问题,但是要想分配很大的一片,该怎么办呢?比如分配100M.
whistlezl
驱动小牛
驱动小牛
  • 注册日期2003-01-28
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-08-20 19:54
可是我是想在系统启动以后,分配很大的连续分页内存。而且无论系统运行到什么时候,都可以分配。这个时候可以分配连续分页内存已经很小了,如果分配小片连续份页内存当然没有问题,但是要想分配很大的一片,该怎么办呢?比如分配100M.


系统的非分页的内存很有限的,这么大的一块非分页的内存我觉得是不可能分到的.不知道哪位大侠有高招?
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
13楼#
发布于:2003-08-20 23:23
你一下子用掉100M,还要不要别的app和OS活啊? :D还是连续的100M!
游客

返回顶部