阅读:1449回复:4
关于资源的保持,回收,释放的几个概念(会的朋友说一说吧)
ndis中下层和上层访问资源时强调一个资源的所有权的问题,并因此引出了一个常量:NDIS_STATUS_RESOURCES
我的问题是: 访问过程中,资源所有权如何表示,比如当资源属于上层时,如何知道这时的资源所有权,如果资源所有权被回收,又如何知道啦? |
|
沙发#
发布于:2003-11-13 16:41
我觉得你还是学学再问。
|
|
板凳#
发布于:2003-11-13 18:34
就算是学,也要指点一下怎么学吧!
何况我正是看了一头雾水才来问的。 |
|
地板#
发布于:2003-11-24 19:03
我来谈谈我的看法:
NDIS 驱动设计时,考虑资源的生成与释放主要有以下两中方式 同步方式和异步方式 同步方式是指获得资源的驱动应该立即归还资源。同步方式主要是在驱动资源不充足时,需要获得资源信息的驱动立即返回其分配的资源,可以为以后的处理提供资源。 异步方式是指生成资源的驱动在以后某个时刻可以通过某种方式重新获得其生成的资源。 在NDIS IM驱动中主要处理包的资源的位置为接收和发送两大块。 接收时根据底层驱动向上层提交方式的不同可以通过 protocolReceive 和ProtoclReceivePacket来处理。 protcolReceive主要用于老式NIC的接收处理,可以接收不完整的数据以及当底层驱动需要立即返回资源时(设置NDIS_PACKET的status为NDIS_STATUS_RESOURCE)时调用。在protocolReceive中传递的包资源在ProtocolReceive返回后,就会立即释放,归还给产生包的驱动程序。 ProtocolReceivePacket接收多个完整的数据包。在这里可以根据需要归还或者不归还资源,当归还资源时,返回值为0,当不归还资源时必须向NDIS告知有多少个资源未被归还。以后在某个适当时刻,归还相同数目的资源。此处的资源指数据包。 当想上提示数据后,判断其设置的status为NDIS_STATUS_RESOURCE则,立即释放资源,返回0。如果不是则保留资源返回 1。 当保留资源时,上层的协议驱动将会调用NdisReturnPacket,Ndis将会调用 IM MINIPORT的MPReturnPacket函数。在这里可以释放相关的资源。 发送数据时也是类似,能够立即返回的马上释放,否则,应该在响应的完成函数中释放。 这是我的看法。 |
|
地下室#
发布于:2003-11-25 12:41
真的挺感谢的!
我觉的初学IM编写的人,对这个问题,比较困惑的。 虽然在ddk有所提及,但是由于比较的分散,所以总是很困惑的。 这个帖子已经挂了好几天了,没人回应,我想大家一定认为他是个比较简单的问题,不屑一答。 谢谢! |
|