使用 StgCreateStorageEx 创建的 IStorage 打开的 win32 IStream 对象是否有数量限制?
我通过 StgCreateStorageEx
函数创建一个 IStorage,类型为:STGFMT_STORAGE
。
然后我使用 CreateStream
方法创建 IStream
对象(大约 60 个)。
我没有在所有 IStream
接口上调用 Release
,但当我在其中一些接口上调用 Seek
时,它会返回 STG_E_REVERTED
。
但是,如果我创建它们并一一使用它们,它就可以正常工作。
有谁知道为什么?
有限制吗?
I create an IStorage by StgCreateStorageEx
function, with type: STGFMT_STORAGE
.
Then I used the CreateStream
method to create IStream
objects (around 60).
I didn't call Release
on all of the IStream
interfaces, but when I call Seek
on some of them, it returns STG_E_REVERTED
.
However, if I create them and use them one by one, it works properly.
Does anyone know why?
Is there a limit?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
MSDN 说:
STGM_DELETEONRELEASE不支持
标志。grfMode
参数中指定STGM_SHARE_EXCLUSIVE
共享模式标志。您之前发布过这些流吗?
MSDN says:
STGM_DELETEONRELEASE
flag is not supported.STGM_SHARE_EXCLUSIVE
sharing-mode flag must be specified in thegrfMode
parameter.Did you release these streams before?
我预计这将取决于操作系统允许的文件句柄打开的最大数量。对于 Windows 案例,请参阅此讨论: http://social.msdn.microsoft.com/Forums/en-US/windowssdk/thread/ce6ce7df-b769-41b7-bccf-b75707c0a729/
I expect tha this will depend on the maximum nr of filehandles openend allowed by the OS. For the windows case see this discussion: http://social.msdn.microsoft.com/Forums/en-US/windowssdk/thread/ce6ce7df-b769-41b7-bccf-b75707c0a729/