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を返します。
同じ名前のストレージ オブジェクトが既に存在し、 grfMode が STGM_FAILIFTHERE に設定されている場合、このメソッドは戻り値STG_E_FILEALREADYEXISTSで失敗します。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー objidl.h
Library Uuid.lib
[DLL] Ole32.dll

こちらもご覧ください

IStorage - 複合ファイルの実装

IStorage::OpenStorage