Win32 API 日本語リファレンス
ホームMedia.MediaFoundation › IFileIo

IFileIo

COM
IID11993196-1244-4840-ab44-480975c4ffe4継承元IUnknown自前メソッド開始 vtbl3

メソッド 10

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

vtbl 3 HRESULT Initialize(FILE_ACCESSMODE eAccessMode, FILE_OPENMODE eOpenMode, LPWSTR pwszFileName)
eAccessModeFILE_ACCESSMODEinファイルへのアクセスモード(読み取り/書き込み等)を示すFILE_ACCESSMODE列挙値。
eOpenModeFILE_OPENMODEinファイルのオープン方法(新規作成/既存を開く等)を示すFILE_OPENMODE列挙値。
pwszFileNameLPWSTRin対象ファイルのパス(NULL終端のワイド文字列)。
vtbl 4 HRESULT GetLength(ULONGLONG* pqwLength)
pqwLengthULONGLONG*inoutファイルの全体サイズ(バイト)を受け取る64ビット出力ポインタ。
vtbl 5 HRESULT SetLength(ULONGLONG qwLength)
qwLengthULONGLONGin設定するファイルサイズ(バイト)の64ビット値。
vtbl 6 HRESULT GetCurrentPosition(ULONGLONG* pqwPosition)
pqwPositionULONGLONG*inout現在のファイル位置(バイトオフセット)を受け取る64ビット出力ポインタ。
vtbl 7 HRESULT SetCurrentPosition(ULONGLONG qwPosition)
qwPositionULONGLONGin設定するファイル位置(先頭からのバイトオフセット)の64ビット値。
vtbl 8 HRESULT IsEndOfStream(BOOL* pbEndOfStream)
pbEndOfStreamBOOL*inoutストリームの終端に達しているか否かを受け取るブール出力ポインタ。
vtbl 9 HRESULT Read(BYTE* pbt, DWORD ul, DWORD* pulRead)
pbtBYTE*inout読み取ったデータを格納するバイトバッファへのポインタ。
ulDWORDin読み取りを要求するバイト数。
pulReadDWORD*inout実際に読み取られたバイト数を受け取る出力ポインタ。
vtbl 10 HRESULT Write(BYTE* pbt, DWORD ul, DWORD* pulWritten)
pbtBYTE*inout書き込むデータを格納したバイトバッファへのポインタ。
ulDWORDin書き込みを要求するバイト数。
pulWrittenDWORD*inout実際に書き込まれたバイト数を受け取る出力ポインタ。
vtbl 11 HRESULT Seek(SEEK_ORIGIN eSeekOrigin, ULONGLONG qwSeekOffset, DWORD dwSeekFlags, ULONGLONG* pqwCurrentPosition)
eSeekOriginSEEK_ORIGINinシークの起点(先頭/現在位置/末尾)を示すSEEK_ORIGIN列挙値。
qwSeekOffsetULONGLONGin起点からの移動量(バイト)の64ビット値。
dwSeekFlagsDWORDinシーク動作を制御するフラグ。通常は0を指定する。
pqwCurrentPositionULONGLONG*inoutシーク後の新しいファイル位置を受け取る64ビット出力ポインタ。
vtbl 12 HRESULT Close()

HSP用 COM定義

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

出力引数:
#define global IID_IFileIo "{11993196-1244-4840-AB44-480975C4FFE4}"
#usecom global IFileIo IID_IFileIo "{}"
#comfunc global IFileIo_Initialize          3 int,int,wstr
#comfunc global IFileIo_GetLength           4 var
#comfunc global IFileIo_SetLength           5 int64
#comfunc global IFileIo_GetCurrentPosition  6 var
#comfunc global IFileIo_SetCurrentPosition  7 int64
#comfunc global IFileIo_IsEndOfStream       8 var
#comfunc global IFileIo_Read                9 var,int,var
#comfunc global IFileIo_Write               10 var,int,var
#comfunc global IFileIo_Seek                11 int,int64,int,var
#comfunc global IFileIo_Close               12
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。