StgOpenStorageEx

ファイルシステム内の既存のルートストレージオブジェクトを開く。複合ファイルと通常のファイルを開くにはこの関数を使用する。

StgOpenStorageEx pwcsName, grfMode, stgfmt, grfAttrs, pStgOptions, pSecurityDescriptor, riid, ppObjectOpen

pwcsName : [wstr] ストレージオブジェクトを含むファイルのパスへの null 終端の Unicode 文字列へのポインタ。この文字列のサイズは MAX_PATH 文字を超えてはならない。Windows Server 2003 と Windows XP/2000:CreateFile 関数とは異なり、"\\?\" プレフィックスを使用して MAX_PATH 制限を超えることはできない。
grfMode : [int] 新しいストレージオブジェクトを開くアクセスモードを指定する値。詳細については STGM Constants を参照のこと。呼び出し元がトランザクションモードと STGM_CREATE または STGM_CONVERT を一緒に指定した場合、上書きまたは変換はルートストレージに対して commit 操作が呼び出されたときに発生する。ルートストレージオブジェクトに対して IStorage::Commit が呼び出されなかった場合、ファイルの以前の内容が復元される。STGM_CREATE および STGM_CONVERT は STGM_NOSNAPSHOT フラグと組み合わせることができない。これは、トランザクションモードでファイルを上書きまたは変換する際にスナップショットコピーが必要となるためである。ストレージオブジェクトが直接モード(STGM_DIRECT)で STGM_WRITE または STGM_READWRITE のいずれかへのアクセスで開かれる場合、STGM_DIRECT_SWMR モードが指定されていない限り、共有モードは STGM_SHARE_EXCLUSIVE でなければならない。詳細については Remarks セクションを参照のこと。ストレージオブジェクトが直接モードで STGM_READ へのアクセスで開かれる場合、STGM_PRIORITY または STGM_DIRECT_SWMR が指定されていない限り、共有モードは STGM_SHARE_EXCLUSIVE または STGM_SHARE_DENY_WRITE のいずれかでなければならない。詳細については Remarks セクションを参照のこと。ファイルを開くモードは実装のパフォーマンスに影響を与えることがある。詳細については Compound File Implementation Limits を参照のこと。
stgfmt : [int] ストレージファイル形式を指定する値。詳細については STGFMT 列挙を参照のこと。
grfAttrs : [int] stgfmt パラメータの値に依存する値。STGFMT_DOCFILE はゼロ(0)または FILE_FLAG_NO_BUFFERING でなければならない。この値の詳細については CreateFile を参照のこと。pStgOptions で指定されたファイルのセクタサイズが基礎となるディスクの物理セクタサイズの整数倍でない場合、この操作は失敗する。stgfmt のその他すべての値はゼロでなければならない。
pStgOptions : [var] 開かれるストレージオブジェクトに関するデータを含む STGOPTIONS 構造体へのポインタ。pStgOptions パラメータは stgfmt パラメータが STGFMT_DOCFILE に設定されている場合のみ有効である。usVersion メンバーは StgOpenStorageEx を呼び出す前に設定しなければならない。詳細については STGOPTIONS 構造体を参照のこと。
pSecurityDescriptor : [int] 予約。ゼロでなければならない。
riid : [var] 返されるインターフェイスポインタの GUID を指定する値。IStorage インターフェイスを取得するための IID_IStorage、または IPropertySetStorage インターフェイスを取得するための IID_IPropertySetStorage のヘッダで指定された値も指定できる。
ppObjectOpen : [var] 開かれたストレージオブジェクト上のインターフェイスへのポインタを受け取るインターフェイスポインタ変数のアドレス。操作が失敗した場合は NULL を含む。

(プラグイン / モジュール : ole32.dll)

解説

ファイルシステム内の既存のルートストレージオブジェクトを開く。複合ファイルと通常のファイルを開くにはこの関数を使用する。

[戻り値]
この関数は HRESULT にラップされたファイルシステムエラーやシステムエラーも返すことがある。詳細については Error
Handling Strategies と Handling Unknown Errors を参照のこと。

[備考]
StgOpenStorageExStgOpenStorage
関数のスーパーセットであり、新しいコードでは使用すべきである。構造化ストレージへの今後の拡張はこの関数を通じて公開される。サポートされるプラットフォームの詳細については
Requirements セクションを参照のこと。StgOpenStorageEx 関数は grfMode
パラメータのアクセスモードに従って指定されたルートストレージオブジェクトを開き、成功した場合は ppObjectOpen
パラメータで開かれたストレージオブジェクトのインターフェイスポインタを提供する。この関数は IStorage
複合ファイル実装、IPropertySetStorage 複合ファイル実装、または IPropertySetStorage の NTFS
ファイルシステム実装を取得するために使用できる。ファイルを開くとき、システムは指定する STGFMT
フラグ、ファイルの種類、およびファイルが格納されるドライブの種類に応じて構造化ストレージ実装を選択する。StgOpenStorageEx
関数を使用して、構造化ストレージドキュメントのルートストレージや、プロパティセットをサポートする任意のファイルのプロパティセットストレージにアクセスする。さまざまな
STGFMT 値に対してどのインターフェイス識別子(IID)がサポートされているかについての詳細は STGFMT を参照のこと。NTFS
プロパティセット実装にアクセスするためにこの関数でファイルが開かれる場合、特別な共有ルールが適用される。詳細については
IPropertySetStorage-NTFS Implementation を参照のこと。複合ファイルが
STGM_TRANSACTED を指定したトランザクションモードと STGM_READ
を指定した読み取り専用モードで開かれる場合、返されたストレージオブジェクトを変更することが可能である。たとえば
IStorage::CreateStream を呼び出すことができる。しかし、IStorage::Commit
を呼び出してそれらの変更をコミットすることはできない。したがって、そのような変更は失われる。grfMode パラメータでこの関数に
STGM_CREATE、STGM_DELETEONRELEASE、STGM_CONVERT
フラグを使用することは無効である。サブストレージのないストレージオブジェクトを保存するシンプルモードをサポートするために、StgOpenStorageEx
関数は grfMode パラメータの有効なモードとして次の 2 つのフラグの組み合わせのいずれかを受け入れる:
(以下省略)

情報

プラグイン / モジュールole32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の ole32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_ole32_gen2.hs