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

ILockBytes

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

メソッド 7

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

vtbl 3 HRESULT ReadAt(ULONGLONG ulOffset, void* pv, DWORD cb, DWORD* pcbRead)
ulOffsetULONGLONGin読み取りを開始するバイトオフセットを指定する。
pvvoid*out読み取ったデータを格納するバッファへのポインタである。
cbDWORDin読み取るバイト数を指定する。
pcbReadDWORD*outoptional実際に読み取られたバイト数を受け取る。不要な場合は NULL を指定できる。
vtbl 4 HRESULT WriteAt(ULONGLONG ulOffset, void* pv, DWORD cb, DWORD* pcbWritten)
ulOffsetULONGLONGin書き込みを開始するバイトオフセットを指定する。
pvvoid*in書き込むデータが格納されたバッファへのポインタである。
cbDWORDin書き込むバイト数を指定する。
pcbWrittenDWORD*outoptional実際に書き込まれたバイト数を受け取る。不要な場合は NULL を指定できる。
vtbl 5 HRESULT Flush()
vtbl 6 HRESULT SetSize(ULONGLONG cb)
cbULONGLONGinバイトアレイの新しいサイズをバイト数で指定する。
vtbl 7 HRESULT LockRegion(ULONGLONG libOffset, ULONGLONG cb, DWORD dwLockType)
libOffsetULONGLONGinロックする範囲の先頭バイトオフセットを指定する。
cbULONGLONGinロックする範囲の長さをバイト数で指定する。
dwLockTypeDWORDin適用するロックの種類を示す LOCKTYPE 値を指定する。
vtbl 8 HRESULT UnlockRegion(ULONGLONG libOffset, ULONGLONG cb, DWORD dwLockType)
libOffsetULONGLONGinロック解除する範囲の先頭バイトオフセットを指定する。
cbULONGLONGinロック解除する範囲の長さをバイト数で指定する。
dwLockTypeDWORDin解除するロックの種類を示す LOCKTYPE 値を指定する。LockRegion 時と一致させる。
vtbl 9 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_ILockBytes "{0000000A-0000-0000-C000-000000000046}"
#usecom global ILockBytes IID_ILockBytes "{}"
#comfunc global ILockBytes_ReadAt        3 int64,sptr,int,var
#comfunc global ILockBytes_WriteAt       4 int64,sptr,int,var
#comfunc global ILockBytes_Flush         5
#comfunc global ILockBytes_SetSize       6 int64
#comfunc global ILockBytes_LockRegion    7 int64,int64,int
#comfunc global ILockBytes_UnlockRegion  8 int64,int64,int
#comfunc global ILockBytes_Stat          9 var,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。