IStorage::OpenStream メソッド (objidl.h)
OpenStream メソッドは、指定したアクセス モードで、このストレージ オブジェクト内の既存のストリーム オブジェクトを開きます。
構文
HRESULT OpenStream(
[in] const OLECHAR *pwcsName,
[in] void *reserved1,
[in] DWORD grfMode,
[in] DWORD reserved2,
[out] IStream **ppstm
);
パラメーター
[in] pwcsName
開くストリームの名前を含むワイド文字の null で終わる Unicode 文字列へのポインター。 ストリーム/ストレージ名の最初の文字として機能する 000 から 01f の文字は、OLE で使用するために予約されています。 これは複合ファイルの制限であり、構造化ストレージの制限ではありません。
[in] reserved1
将来の使用のために予約されています。 は NULL である必要があります。
[in] grfMode
開いているストリームに割り当てるアクセス モードを指定します。 使用可能な値の詳細と説明については、「 STGM 定数」を参照してください。 選択する他のモードでは、複合ファイルの実装でこのメソッドを呼び出すときに、少なくとも STGM_SHARE_EXCLUSIVE を指定する必要があります。
[in] reserved2
今後使用するために予約されています。0 にする必要があります。
[out] ppstm
新しく開かれたストリーム オブジェクトへのインターフェイス ポインターを受け取る IStream ポインター変数へのポインター。 エラーが発生した場合は、*ppstm を NULL に設定する必要があります。
戻り値
このメソッドは、これらの値のいずれかを返すことができます。
リターン コード | 説明 |
---|---|
S_OK | ストリームが正常に開きました。 |
E_PENDING | 非同期ストレージのみ: ストリーム データの一部またはすべてを現在使用できません。 |
STG_E_ACCESSDENIED | ストリームを開くには十分なアクセス許可がありません。 |
STG_E_FILENOTFOUND | 指定した名前のストリームが存在しません。 |
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 | 開いているファイルが多すぎるため、ストリームを開くことができませんでした。 |
注釈
IStorage::OpenStream は 、grfMode で指定されたアクセス モードで、このストレージ オブジェクト内の既存のストリーム オブジェクトを開きます。 grfMode で指定できるアクセス許可には制限があります。 たとえば、このストレージ オブジェクトに対するアクセス許可によって、ストリームに対するアクセス許可が制限されます。 一般に、ストリームのアクセス制限は、親ストレージのアクセス制限よりも厳しくする必要があります。 複合ファイル ストリームは、STGM_SHARE_EXCLUSIVEで開く必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリ |UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | objidl.h |
Library | Uuid.lib |
[DLL] | Ole32.dll |