an enumeration class specifying the conditions for creating and deleting the object and access modes for the object.
AutoHotkey | AHK v2 alpha |
OS | Windows 2000 Professional / Windows 2000 Server or higher |
STGM | an enumeration class specifying the conditions for creating and deleting the object and access modes for the object. |
Access | |
READ | Indicates that the object is read-only, meaning that modifications cannot be made. |
WRITE | Enables you to save changes to the object, but does not permit access to its data. |
READWRITE | Enables access and modification of object data. |
Sharing | |
SHARE_DENY_NONE | Specifies that subsequent openings of the object are not denied read or write access. |
SHARE_DENY_READ | Prevents others from subsequently opening the object in READ mode. |
SHARE_DENY_WRITE | Prevents others from subsequently opening the object for WRITE or READWRITE access. |
SHARE_EXCLUSIVE | Prevents others from subsequently opening the object in any mode. |
PRIORITY | Opens the storage object with exclusive access to the most recently committed version. |
Creation | |
CREATE | Indicates that an existing storage object or stream should be removed before the new object replaces it. |
CONVERT | Creates the new object while preserving existing data in a stream named “Contents”. |
FAILIFTHERE | Causes the create operation to fail if an existing object with the specified name exists. |
Transactioning | |
DIRECT | Indicates that, in direct mode, each change to a storage or stream element is written as it occurs. |
TRANSACTED | Indicates that, in transacted mode, changes are buffered and written only if an explicit commit operation is called. |
Transactioning performance | |
NOSCRATCH | Indicates that, in transacted mode, a temporary scratch file is usually used to save modifications until the Commit method is called. |
NOSNAPSHOT | This flag is used when opening a storage object with TRANSACTED and without SHARE_EXCLUSIVE or SHARE_DENY_WRITE. |
Direct SWMR and Simple | |
SIMPLE | Provides a faster implementation of a compound file in a limited, but frequently used, case. |
DIRECT_SWMR | Supports direct mode for single-writer, multireader file operations. |
Delete On Release | |
DELETEONRELEASE | Indicates that the underlying file is to be automatically destroyed when the root storage object is released. |
Indicates that the object is read-only, meaning that modifications cannot be made. For example, if a stream object is opened with READ, the ISequentialStream::Read method may be called, but the ISequentialStream::Write method may not. Similarly, if a storage object opened with READ, the IStorage::OpenStream and IStorage::OpenStorage methods may be called, but the IStorage::CreateStream and IStorage::CreateStorage methods may not.
Prevents others from subsequently opening the object in READ mode. It is typically used on a root storage object.
Prevents others from subsequently opening the object for WRITE or READWRITE access. In transacted mode, sharing of SHARE_DENY_WRITE or SHARE_EXCLUSIVE can significantly improve performance because they do not require snapshots.
Prevents others from subsequently opening the object in any mode. Be aware that this value is not a simple bitwise OR operation of the SHARE_DENY_READ and SHARE_DENY_WRITE values. In transacted mode, sharing of SHARE_DENY_WRITE or SHARE_EXCLUSIVE can significantly improve performance because they do not require snapshots.
Opens the storage object with exclusive access to the most recently committed version. Thus, other users cannot commit changes to the object while you have it open in priority mode. You gain performance benefits for copy operations, but you prevent others from committing changes. Limit the time that objects are open in priority mode. You must specify DIRECT and READ with priority mode, and you cannot specify DELETEONRELEASE. DELETEONRELEASE is only valid when creating a root object, such as with StgCreateStorageEx. It is not valid when opening an existing root object, such as with StgOpenStorageEx. It is also not valid when creating or opening a subelement, such as with IStorage::OpenStorage.
Indicates that an existing storage object or stream should be removed before the new object replaces it. A new object is created when this flag is specified only if the existing object has been successfully removed.
This flag cannot be used with open operations, such as StgOpenStorageEx or IStorage::OpenStream.
Creates the new object while preserving existing data in a stream named “Contents”. In the case of a storage object or a byte array, the old data is formatted into a stream regardless of whether the existing file or byte array currently contains a layered storage object. This flag can only be used when creating a root storage object. It cannot be used within a storage object; for example, in IStorage::CreateStream. It is also not valid to use this flag and the DELETEONRELEASE flag simultaneously.
Causes the create operation to fail if an existing object with the specified name exists. In this case, STG_E_FILEALREADYEXISTS is returned. This is the default creation mode; that is, if no other create flag is specified, FAILIFTHERE is implied.
Indicates that, in direct mode, each change to a storage or stream element is written as it occurs. This is the default if neither DIRECT nor TRANSACTED is specified.
Indicates that, in transacted mode, changes are buffered and written only if an explicit commit operation is called. To ignore the changes, call the Revert method in the IStream, IStorage, or IPropertyStorage interface. The COM compound file implementation of IStorage does not support transacted streams, which means that streams can be opened only in direct mode, and you cannot revert changes to them, however transacted storages are supported. The compound file, stand-alone, and NTFS file system implementations of IPropertySetStorage similarly do not support transacted, simple property sets because these property sets are stored in streams. However, transactioning of nonsimple property sets, which can be created by specifying the PROPSETFLAG_NONSIMPLE flag in the grfFlags parameter of IPropertySetStorage::Create, are supported.
Indicates that, in transacted mode, a temporary scratch file is usually used to save modifications until the Commit method is called. Specifying NOSCRATCH permits the unused portion of the original file to be used as work space instead of creating a new file for that purpose. This does not affect the data in the original file, and in certain cases can result in improved performance. It is not valid to specify this flag without also specifying TRANSACTED, and this flag may only be used in a root open.
This flag is used when opening a storage object with TRANSACTED and without SHARE_EXCLUSIVE or SHARE_DENY_WRITE. In this case, specifying NOSNAPSHOT prevents the system-provided implementation from creating a snapshot copy of the file. Instead, changes to the file are written to the end of the file. Unused space is not reclaimed unless consolidation is performed during the commit, and there is only one current writer on the file. When the file is opened in no snapshot mode, another open operation cannot be performed without specifying NOSNAPSHOT. This flag may only be used in a root open operation.
Indicates that the underlying file is to be automatically destroyed when the root storage object is released. This feature is most useful for creating temporary files. This flag can only be used when creating a root object, such as with StgCreateStorageEx. It is not valid when opening a root object, such as with StgOpenStorageEx, or when creating or opening a subelement, such as with IStorage::CreateStream. It is also not valid to use this flag and the CONVERT flag simultaneously.