三个对象的关系图:
图9.2
Memory objects的重要性:具有reference count
1.mem obj无法被释放,直到request不用了为止(保证pending时,memory没有free)
2.cleanup方法被简化,会延迟至请求完成再删除对象。
buffer没有counter
buffer的生命周期如下:
**
不同的buffer有不同的生命周期,所以最好在一个I/O路径里只使用一种mem/buffer type
图9.2
Memory objects的重要性:具有reference count
1.mem obj无法被释放,直到request不用了为止(保证pending时,memory没有free)
2.cleanup方法被简化,会延迟至请求完成再删除对象。
buffer没有counter
buffer的生命周期如下:
If the buffer was created by … | The buffer pointer becomes invalid when … |
---|---|
The application that issued the I/O request | The driver completes the I/O request. |
The driver's call to a language-based or system memory allocation function | The driver frees the allocation. |
The framework's IWDFDriver:: CreateWdfMemory or WdfMemoryCreate method | The memory object's reference count reaches zero. |