Frage

Ich bin mit dem StgOpenStorage API unter XP einen OLE-Compound Document zu lesen, aber ich kann nicht die richtige Mischung von Flags finde Windows mitzuteilen, was ich brauche nur zu lesen die Datei, ohne zu blockieren Zugang zu ihm zu einem anderen Verfahren ...
Im Moment bin ich mit STGM_READ | STGM_EXCLUSIVE aber natürlich, wenn zur gleichen Zeit ich versuche, aus einer anderen Anwendung die Datei zu öffnen, klagt sie über Zugriff verweigert .. Also habe ich versucht, mit STGM_READ | STGM_SHARE_DENY_NONE aber es beschwert sich über ungültige Flaggen ..

Gibt es eine Möglichkeit, dies zu tun? Bin ich auf dem falschen Weg?

Vielen Dank im Voraus!

(Ich rufe die API von Python über pythoncom, wenn es relevant ist)

War es hilfreich?

Lösung

Das ist eine Vermutung, aber von der StgOpenStorage API-Dokumentation:

When the STGM_DIRECT flag is specified, only one of the following combination
of flags may be specified from the access and sharing groups.
  STGM_READ | STGM_SHARE_DENY_WRITE
  STGM_READWRITE | STGM_SHARE_EXCLUSIVE
  STGM_READ | STGM_PRIORITY
Be aware that direct mode is implied by the absence of STGM_TRANSACTED.
That is, if neither STGM_DIRECT nor STGM_TRANSACTED is specified, STGM_DIRECT
is assumed.

Dies deutet darauf hin, dass eine Änderung der Fahnen

STGM_READ | STGM_SHARE_DENY_NONE | STGM_TRANSACTED

sollte das tun, was Sie wollen. Das macht Sinn:. In ‚direktem‘ Modus, wenn jemand auf die Speicher des Schreiben beginnen könnte, dann würden sie überschreiben, was wir lesen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top