Win32 API 日本語リファレンス
ホームSystem.Com.StructuredStorage › IStorage

IStorage

COM
IID0000000b-0000-0000-c000-000000000046継承元IUnknown自前メソッド開始 vtbl3

メソッド 15

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT CreateStream(LPWSTR pwcsName, STGM grfMode, DWORD reserved1, DWORD reserved2, IStream** ppstm)
pwcsNameLPWSTRin作成するストリームの名前を指定する。
grfModeSTGMinストリームのアクセスモードおよび共有モードを示す STGM フラグを指定する。
reserved1DWORDin予約済みパラメータであり、0 を指定する。
reserved2DWORDin予約済みパラメータであり、0 を指定する。
ppstmIStream**out作成された新しいストリームの IStream へのポインタを受け取る。
vtbl 4 HRESULT OpenStream(LPWSTR pwcsName, void* reserved1, STGM grfMode, DWORD reserved2, IStream** ppstm)
pwcsNameLPWSTRin開く既存ストリームの名前を指定する。
reserved1void*optional予約済みパラメータであり、NULL を指定する。
grfModeSTGMinストリームのアクセスモードおよび共有モードを示す STGM フラグを指定する。
reserved2DWORDin予約済みパラメータであり、0 を指定する。
ppstmIStream**out開かれたストリームの IStream へのポインタを受け取る。
vtbl 5 HRESULT CreateStorage(LPWSTR pwcsName, STGM grfMode, DWORD reserved1, DWORD reserved2, IStorage** ppstg)
pwcsNameLPWSTRin作成するサブストレージの名前を指定する。
grfModeSTGMinストレージのアクセスモードおよび共有モードを示す STGM フラグを指定する。
reserved1DWORDin予約済みパラメータであり、0 を指定する。
reserved2DWORDin予約済みパラメータであり、0 を指定する。
ppstgIStorage**out作成された新しいサブストレージの IStorage へのポインタを受け取る。
vtbl 6 HRESULT OpenStorage(LPWSTR pwcsName, IStorage* pstgPriority, STGM grfMode, WORD** snbExclude, DWORD reserved, IStorage** ppstg)
pwcsNameLPWSTRin開く既存サブストレージの名前を指定する。pstgPriority が NULL でない場合は NULL も指定できる。
pstgPriorityIStorage*in優先モードで以前に開かれたストレージへのポインタを指定する。使用しない場合は NULL を指定する。
grfModeSTGMinストレージのアクセスモードおよび共有モードを示す STGM フラグを指定する。
snbExcludeWORD**inコピー対象から除外する要素名の配列(SNB)を指定する。除外しない場合は NULL を指定する。
reservedDWORDin予約済みパラメータであり、0 を指定する。
ppstgIStorage**out開かれたサブストレージの IStorage へのポインタを受け取る。
vtbl 7 HRESULT CopyTo(DWORD ciidExclude, GUID* rgiidExclude, WORD** snbExclude, IStorage* pstgDest)
ciidExcludeDWORDinrgiidExclude 配列に含まれる除外対象 IID の個数を指定する。
rgiidExcludeGUID*inoptionalコピー対象から除外するオブジェクト型を示す IID の配列を指定する。除外しない場合は NULL を指定できる。
snbExcludeWORD**inoptionalコピー対象から除外する要素名の配列(SNB)を指定する。除外しない場合は NULL を指定できる。
pstgDestIStorage*inコピー先となるストレージの IStorage へのポインタである。
vtbl 8 HRESULT MoveElementTo(LPWSTR pwcsName, IStorage* pstgDest, LPWSTR pwcsNewName, DWORD grfFlags)
pwcsNameLPWSTRin移動またはコピーする要素の名前を指定する。
pstgDestIStorage*in移動またはコピー先となるストレージの IStorage へのポインタである。
pwcsNewNameLPWSTRin移動先における新しい要素名を指定する。
grfFlagsDWORDin移動かコピーかを示す STGMOVE フラグを指定する。
vtbl 9 HRESULT Commit(DWORD grfCommitFlags)
grfCommitFlagsDWORDinコミット動作を制御する STGC フラグを指定する。
vtbl 10 HRESULT Revert()
vtbl 11 HRESULT EnumElements(DWORD reserved1, void* reserved2, DWORD reserved3, IEnumSTATSTG** ppenum)
reserved1DWORDoptional予約済みパラメータであり、0 を指定する。
reserved2void*optional予約済みパラメータであり、NULL を指定する。
reserved3DWORDoptional予約済みパラメータであり、0 を指定する。
ppenumIEnumSTATSTG**outこのストレージ内の要素を列挙する IEnumSTATSTG 列挙子へのポインタを受け取る。
vtbl 12 HRESULT DestroyElement(LPWSTR pwcsName)
pwcsNameLPWSTRin削除する要素(ストリームまたはサブストレージ)の名前を指定する。
vtbl 13 HRESULT RenameElement(LPWSTR pwcsOldName, LPWSTR pwcsNewName)
pwcsOldNameLPWSTRin名前を変更する既存要素の現在の名前を指定する。
pwcsNewNameLPWSTRin要素に付与する新しい名前を指定する。
vtbl 14 HRESULT SetElementTimes(LPWSTR pwcsName, FILETIME* pctime, FILETIME* patime, FILETIME* pmtime)
pwcsNameLPWSTRin時刻を設定する要素の名前を指定する。ストレージ自身を対象とする場合は NULL を指定する。
pctimeFILETIME*in作成日時を指定する FILETIME へのポインタである。変更しない場合は NULL を指定する。
patimeFILETIME*in最終アクセス日時を指定する FILETIME へのポインタである。変更しない場合は NULL を指定する。
pmtimeFILETIME*in最終更新日時を指定する FILETIME へのポインタである。変更しない場合は NULL を指定する。
vtbl 15 HRESULT SetClass(GUID* clsid)
clsidGUID*inこのストレージに関連付ける CLSID を指定する。
vtbl 16 HRESULT SetStateBits(DWORD grfStateBits, DWORD grfMask)
grfStateBitsDWORDin設定するステートビットの値を指定する。
grfMaskDWORDin変更対象とするステートビットを示すマスクを指定する。
vtbl 17 HRESULT Stat(STATSTG* pstatstg, DWORD grfStatFlag)
pstatstgSTATSTG*outこのストレージの統計情報を格納する STATSTG 構造体へのポインタである。
grfStatFlagDWORDin名前を取得するかどうかを制御する STATFLAG 値を指定する。

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IStorage "{0000000B-0000-0000-C000-000000000046}"
#usecom global IStorage IID_IStorage "{}"
#comfunc global IStorage_CreateStream     3 wstr,int,int,int,sptr
#comfunc global IStorage_OpenStream       4 wstr,sptr,int,int,sptr
#comfunc global IStorage_CreateStorage    5 wstr,int,int,int,sptr
#comfunc global IStorage_OpenStorage      6 wstr,sptr,int,var,int,sptr
#comfunc global IStorage_CopyTo           7 int,var,var,sptr
#comfunc global IStorage_MoveElementTo    8 wstr,sptr,wstr,int
#comfunc global IStorage_Commit           9 int
#comfunc global IStorage_Revert           10
#comfunc global IStorage_EnumElements     11 int,sptr,int,sptr
#comfunc global IStorage_DestroyElement   12 wstr
#comfunc global IStorage_RenameElement    13 wstr,wstr
#comfunc global IStorage_SetElementTimes  14 wstr,var,var,var
#comfunc global IStorage_SetClass         15 var
#comfunc global IStorage_SetStateBits     16 int,int
#comfunc global IStorage_Stat             17 var,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。