我的想法是首先得允许所有程序打开复合文件(这样才能有取得Stream的机会), 但我试过打开复合文件时(使用StgOpenStorage)如果指定STGM_DIRECT时必须同时指定STGM_EXCLUSIVE,这样的话就阻止了其他的程序打开复合文件了
所以我使用STGM_TRANSACTED事务模式来打开文件(指定为 STGM_TRANSACTED | STGM_READWRITE | STGM_SHARE_DENY_NONE), 这样就可以让所有的程序都能打开复合文件了
但是以这种方式打开的话问题就来了, 当一个程序使用STGM_READWRITE | STGM_EXCLUSIVE 方式来打开Storage及Stream时(这里我是使用我的类在两个程序中以相同的方式同时访问一个复合文件来作测试的), 另一程序还是可以以同样的方式打开流(以STGM_TRANSACTED | STGM_READWRITE | STGM_SHARE_DENY_NONE打开文件, 以STGM_DSTGM_READWRITE | STGM_EXCLUSIVE打开Storage和Stream), 这样就不符合我的要求了(第二个程序应该打开流时失败)
对复合文件的操作熟悉的朋友指点一下,要怎么做才可以实现我的要求呢?
6 个解决方案
#1
COM?
#2
是使用了COM接口(IStorage和IStream)
#3
顶一下,分不够可以再给,谁来指点一下呀
#4
MK
#5
楼上的什么意思呀???????????????
#6
唉, 没人回答,又没解决问题,算了
结贴, 送分了,进来接分吧
结贴, 送分了,进来接分吧
#1
COM?
#2
是使用了COM接口(IStorage和IStream)
#3
顶一下,分不够可以再给,谁来指点一下呀
#4
MK
#5
楼上的什么意思呀???????????????
#6
唉, 没人回答,又没解决问题,算了
结贴, 送分了,进来接分吧
结贴, 送分了,进来接分吧