IStorage::CreateStorage メソッド (objidl.h)
CreateStorage メソッドは、指定したアクセス モードで指定した名前を持つ、このストレージ オブジェクト内に入れ子になった新しいストレージ オブジェクトを作成して開きます。
構文
HRESULT CreateStorage(
[in] const OLECHAR *pwcsName,
[in] DWORD grfMode,
[in] DWORD reserved1,
[in] DWORD reserved2,
[out] IStorage **ppstg
);
パラメーター
[in] pwcsName
新しく作成されたストレージ オブジェクトの名前を含むワイド文字の null で終わる Unicode 文字列へのポインター。 名前は、後でストレージ オブジェクトを再度開くために使用できます。 名前の長さは 31 文字を超えてはなりません。文字列終端記号は含まれません。 ストリーム/ストレージ名の最初の文字として機能する 000 から 01f の文字は、OLE で使用するために予約されています。 これは複合ファイルの制限であり、構造化ストレージの制限ではありません。
[in] grfMode
新しく作成されたストレージ オブジェクトを開くときに使用するアクセス モードを指定する 値です。 使用可能な値の詳細と説明については、「 STGM 定数」を参照してください。
[in] reserved1
今後使用するために予約されています。0 にする必要があります。
[in] reserved2
今後使用するために予約されています。0 にする必要があります。
[out] ppstg
成功した場合は、新しく作成されたストレージ オブジェクトへの IStorage ポインターの場所へのポインター。 エラーが発生した場合、このパラメーターは NULL に設定されます。
戻り値
このメソッドは、これらの値のいずれかを返すことができます。
リターン コード | 説明 | |
---|---|---|
S_OK | ストレージ オブジェクトが正常に作成されました。 | |
E_PENDING | 非同期ストレージのみ: 必要なデータの一部またはすべてを現在使用できません。 | |
STG_E_ACCESSDENIED | ストレージ オブジェクトを作成するための十分なアクセス許可がありません。 | |
STG_E_FILEALREADYEXISTS | ストレージ オブジェクトに指定された名前はストレージ オブジェクトに既に存在し、 grfMode パラメーターにはフラグ STGM_FAILIFTHEREが含まれています。 | |
STG_E_INSUFFICIENTMEMORY | メモリ不足のため、ストレージ オブジェクトが作成されませんでした。 | |
STG_E_INVALIDFLAG | grfMode< パラメーターに指定された値が、有効な STGM 定数値ではありません。 | grfMode パラメーターに指定された he 値が無効です |
STG_E_INVALIDFUNCTION | grfMode パラメーターで指定されたフラグの組み合わせはサポートされていません。 | |
STG_E_INVALIDNAME | pwcsName の有効な値ではありません。 | |
STG_E_INVALIDPOINTER | ストレージ オブジェクトに指定されたポインターが無効でした。 | |
STG_E_INVALIDPARAMETER | パラメーターの 1 つが無効でした。 | |
STG_E_REVERTED | ストレージ オブジェクトは、トランザクション ツリーの上の元に戻す操作によって無効になっています。 | |
STG_E_TOOMANYOPENFILES | 開いているファイルが多すぎるため、ストレージ オブジェクトが作成されませんでした。 | |
STG_S_CONVERTED | 指定した名前の既存のストリームは、CONTENTS という 1 つのストリームを含む新しいストレージ オブジェクトに置き換えられました。 新しいストレージ オブジェクトが追加されます。 |
注釈
pwcsName パラメーターで指定された名前のストレージが親ストレージ オブジェクト内に既に存在し、grfMode パラメーターに STGM_CREATE フラグが含まれている場合、既存のストレージは新しいストレージに置き換えられます。 grfMode パラメーターに STGM_CONVERT フラグが含まれている場合、既存の要素は CONTENTS という名前のストリーム オブジェクトに変換され、CONTENTS ストリーム オブジェクトを含む新しいストレージ オブジェクトが作成されます。 古い要素の破棄と新しいストレージ オブジェクトの作成は、どちらも親ストレージ オブジェクトのトランザクション モードの対象になります。 STGM_CREATEも使用している場合は、STGM_CONVERTを使用できないことに注意してください。
IStorage::CreateStorage メソッドの COM 提供の複合ファイル実装では、次の動作はサポートされていません。
- 非ルート ストレージのSTGM_PRIORITY フラグ。
- 同じ親ストレージから同じストレージ オブジェクトを複数回開く。 STGM_SHARE_EXCLUSIVE フラグを指定する必要があります。
- STGM_DELETEONRELEASE フラグ。 このフラグを指定すると、関数は STG_E_INVALIDFLAGを返します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリ |UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | objidl.h |
Library | Uuid.lib |
[DLL] | Ole32.dll |