IStorage::CreateStream メソッド (objidl.h)

CreateStream メソッドは、このストレージ オブジェクトに含まれる指定された名前のストリーム オブジェクトを作成して開きます。 ストレージ オブジェクト内のすべての要素 (ストリームと他のストレージ オブジェクトの両方) は、同じネーム スペースに保持されます。

構文

HRESULT CreateStream(
  [in]  const OLECHAR *pwcsName,
  [in]  DWORD         grfMode,
  [in]  DWORD         reserved1,
  [in]  DWORD         reserved2,
  [out] IStream       **ppstm
);

パラメーター

[in] pwcsName

新しく作成されたストリームの名前を含むワイド文字の null で終わる Unicode 文字列へのポインター。 名前は、後でストリームを開いたり、再度開いたりするために使用できます。 名前の長さは 31 文字を超えてはなりません。文字列終端記号は含まれません。 ストリーム/ストレージ名の最初の文字として機能する 000 から 01f の文字は、OLE で使用するために予約されています。 これは複合ファイルの制限であり、構造化ストレージの制限ではありません。

[in] grfMode

新しく作成されたストリームを開くときに使用するアクセス モードを指定します。 使用可能な値の詳細と説明については、「 STGM 定数」を参照してください。

[in] reserved1

今後使用するために予約されています。0 にする必要があります。

[in] reserved2

今後使用するために予約されています。0 にする必要があります。

[out] ppstm

戻り時に、新しい IStream インターフェイス ポインターの場所へのポインター。 これは、操作が成功した場合にのみ有効です。 エラーが発生すると、このパラメーターは NULL に設定されます。

戻り値

このメソッドは、これらの値のいずれかを返すことができます。

リターン コード 説明
S_OK 新しいストリームが正常に作成されました。
E_PENDING 非同期ストレージのみ: 必要なデータの一部またはすべてを現在使用できません。
STG_E_ACCESSDENIED ストリームを作成するための十分なアクセス許可がありません。
STG_E_FILEALREADYEXISTS ストリームに指定された名前はストレージ オブジェクトに既に存在し、 grfMode パラメーターには値STGM_FAILIFTHEREが含まれています。
STG_E_INSUFFICIENTMEMORY メモリ不足のため、ストリームが作成されませんでした。
STG_E_INVALIDFLAG grfMode パラメーターに指定された値が有効な STGM 定数値ではありません。
STG_E_INVALIDFUNCTION grfMode パラメーターで指定されたフラグの組み合わせはサポートされていません。たとえば、このメソッドが STGM_SHARE_EXCLUSIVE フラグなしで呼び出された場合などです。
STG_E_INVALIDNAME pwcsName の値が無効です。
STG_E_INVALIDPOINTER ストリーム オブジェクトに指定されたポインターが無効です。
STG_E_INVALIDPARAMETER 1 つのパラメーターが無効です。
STG_E_REVERTED ストレージ オブジェクトは、トランザクション ツリーの上の元に戻す操作によって無効になっています。
STG_E_TOOMANYOPENFILES 開いているファイルが多すぎるため、ストリームが作成されませんでした。

注釈

pwcsName パラメーターで指定された名前のストリームが既に存在し、grfMode パラメーターに STGM_CREATE フラグが含まれている場合、既存のストリームは新しく作成されたストリームに置き換えられます。 古いストリームの破棄と新しいストリーム オブジェクトの作成の両方が、親ストレージ オブジェクトのトランザクション モードの対象となります。

COM が提供する IStorage::CreateStream メソッドの複合ファイル実装では、次の動作はサポートされていません。

  • STGM_DELETEONRELEASE フラグはサポートされていません。
  • トランザクション モード (STGM_TRANSACTED) は、ストリーム オブジェクトではサポートされていません。
  • 同じストレージから同じストリームを複数回開く操作はサポートされていません。 STGM_SHARE_EXCLUSIVE共有モード フラグは grfMode パラメーターで指定する必要があります。
ストリームが既に存在し、 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::OpenStream

Istream