1

XP で StgOpenStorage API を使用して OLE 複合ドキュメントを読み取っていますが、他のプロセスへのアクセスをブロックせずにファイルを読み取る
だけでよいことを Windows に伝えるための適切なフラグの組み合わせが見つかりません... 現在、私は使用してSTGM_READ | STGM_EXCLUSIVEいますが、明らかに、同時に別のアプリケーションからファイルを開こうとすると、アクセスが拒否されたと不平を言います..だから私は試してみましSTGM_READ | STGM_SHARE_DENY_NONE たが、無効なフラグについて不平を言います..

これを行う方法はありますか?私は間違った方向に進んでいますか?

前もって感謝します!

(関連する場合は、pythoncom 経由で Python から API を呼び出しています)

4

1 に答える 1

2

これは推測ですが、StgOpenStorageAPIのドキュメントから:

STGM_DIRECTフラグが指定されている場合、アクセスグループと共有グループから指定できるフラグの組み合わせは次のいずれか1つだけです。

STGM_READ | STGM_SHARE_DENY_WRITE
STGM_READWRITE | STGM_SHARE_EXCLUSIVE
STGM_READ | STGM_PRIORITY

STGM_TRANSACTEDがないことにより、直接モードが暗示されることに注意してください。つまり、STGM_DIRECTもSTGM_TRANSACTEDも指定されていない場合、STGM_DIRECTが想定されます。

これは、フラグをに変更することを示唆しています

STGM_READ | STGM_SHARE_DENY_NONE | STGM_TRANSACTED

あなたがやりたいことをする必要があります。これは理にかなっています。「直接」モードでは、誰かがストレージへの書き込みを開始できる場合、それらは私たちが読んでいたものを上書きします。

于 2009-07-07T12:12:44.403 に答える