IMFByteStream
COM公式ドキュメント
ローカルファイル、ネットワークファイル、その他のソースなど、何らかのデータソースからのバイトストリームを表します。
解説(Remarks)
次の関数は、ローカルファイルに対する IMFByteStream ポインターを返します。
メディアソース用のバイトストリームは、読み取りアクセスで開くことができます。アーカイブメディアシンク用のバイトストリームは、読み取りと書き込みの両方のアクセスで開く必要があります。(アーカイブシンクは書き込み中にファイルの一部を読み取る必要がある場合があるため、読み取りアクセスが必要になることがあります。)このインターフェイスの実装によっては、次のインターフェイスの一つ以上を公開するものもあります。
Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、このインターフェイスは次のプラットフォームで利用できます。- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
メソッド 15
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
バイトストリームの特性を取得します。
| pdwCapabilities | DWORD* | out | 0 個以上のフラグのビットごとの OR を受け取ります。次のフラグが定義されています。
|
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、このインターフェイスは次のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
ストリームの長さを取得します。
| pqwLength | ULONGLONG* | out | ストリームの長さをバイト単位で受け取ります。長さが不明な場合、この値は -1 になります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、このインターフェイスは次のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
ストリームの長さを設定します。
| qwLength | ULONGLONG | in | ストリームの長さ (バイト単位)。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、このインターフェイスは次のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
ストリーム内の現在の読み取りまたは書き込み位置を取得します。
| pqwPosition | ULONGLONG* | out | 現在の位置をバイト単位で受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
現在の位置を更新するメソッドは、Read、BeginRead、Write、BeginWrite、SetCurrentPosition、および Seek です。
Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、このインターフェイスは次のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
現在の読み取りまたは書き込み位置を設定します。
| qwPosition | ULONGLONG | in | ストリームの先頭からのバイトオフセットとして指定する、ストリーム内の新しい位置。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 引数が無効です。 |
解説(Remarks)
新しい位置がストリームの長さより大きい場合、このメソッドは E_INVALIDARG を返します。
実装に関する注意:このメソッドは、qwPosition パラメーターに渡された値に現在の位置を設定することで、ストリーム内の現在の位置を更新する必要があります。現在の位置を更新できるその他のメソッドは、Read、BeginRead、Write、BeginWrite、および Seek です。
Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、このインターフェイスは次のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
現在の位置がストリームの終端に達したかどうかを照会します。
| pfEndOfStream | BOOL* | out | ストリームの終端に達した場合は TRUE、それ以外の場合は FALSE を受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、このインターフェイスは次のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
ストリームからデータを読み取ります。
| pb | BYTE* | out | データを受け取るバッファーへのポインター。呼び出し元がバッファーを割り当てる必要があります。 |
| cb | DWORD | in | バッファーのサイズ (バイト単位)。 |
| pcbRead | DWORD* | out | バッファーにコピーされたバイト数を受け取ります。このパラメーターに NULL を指定することはできません。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、ストリームの現在の位置から最大で cb バイトを読み取り、呼び出し元が提供するバッファーにコピーします。読み取られたバイト数は pcbRead パラメーターで返されます。このメソッドはファイルの終端に達してもエラーコードを返さないため、アプリケーションはメソッドが戻った後に pcbRead の値を確認する必要があります。
このメソッドは同期的です。読み取り操作が完了するまでブロックします。
実装に関する注意:このメソッドは、読み取られたバイト数 (pcbRead パラメーターで返される値で指定される) を現在の位置に加算することで、ストリーム内の現在の位置を更新する必要があります。現在の位置を更新できるその他のメソッドは、Read、Write、BeginWrite、Seek、および SetCurrentPosition です。
Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、このインターフェイスは次のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
例
次の例は、バイトストリームから呼び出し元が割り当てたメディアバッファーにデータを読み取ります。メディアバッファーの詳細については、Media Buffers を参照してください。
// Read data from a byte stream into a media buffer.
//
// This function reads a maximum of cbMax bytes, or up to the size of the
// buffer, whichever is smaller. If the end of the byte stream is reached, the
// actual amount of data read might be less than either of these values.
//
// To find out how much data was read, call IMFMediaBuffer::GetCurrentLength.
HRESULT ReadFromByteStream(
IMFByteStream *pStream, // Pointer to the byte stream.
IMFMediaBuffer *pBuffer, // Pointer to the media buffer.
DWORD cbMax // Maximum amount to read.
)
{
DWORD cbBufferMax = 0;
DWORD cbRead = 0;
BYTE *pData= NULL;
HRESULT hr = pBuffer->Lock(&pData, &cbBufferMax, NULL);
// Do not exceed the maximum size of the buffer.
if (SUCCEEDED(hr))
{
if (cbMax > cbBufferMax)
{
cbMax = cbBufferMax;
}
// Read up to cbMax bytes.
hr = pStream->Read(pData, cbMax, &cbRead);
}
// Update the size of the valid data in the buffer.
if (SUCCEEDED(hr))
{
hr = pBuffer->SetCurrentLength(cbRead);
}
if (pData)
{
pBuffer->Unlock();
}
return hr;
}
次の例は同様ですが、データを保持するために新しいメディアバッファーを割り当てます。
//-------------------------------------------------------------------
// AllocReadFromByteStream
//
// Reads data from a byte stream and returns a media buffer that
// contains the data.
//-------------------------------------------------------------------
HRESULT AllocReadFromByteStream(
IMFByteStream *pStream, // Pointer to the byte stream.
DWORD cbToRead, // Number of bytes to read.
IMFMediaBuffer **ppBuffer // Receives a pointer to the media buffer.
)
{
HRESULT hr = S_OK;
BYTE *pData = NULL;
DWORD cbRead = 0; // Actual amount of data read.
IMFMediaBuffer *pBuffer = NULL;
// Create the media buffer.
// This function allocates the memory for the buffer.
hr = MFCreateMemoryBuffer(cbToRead, &pBuffer);
// Get a pointer to the memory buffer.
if (SUCCEEDED(hr))
{
hr = pBuffer->Lock(&pData, NULL, NULL);
}
// Read the data from the byte stream.
if (SUCCEEDED(hr))
{
hr = pStream->Read(pData, cbToRead, &cbRead);
}
// Update the size of the valid data in the buffer.
if (SUCCEEDED(hr))
{
hr = pBuffer->SetCurrentLength(cbRead);
}
// Return the pointer to the caller.
if (SUCCEEDED(hr))
{
*ppBuffer = pBuffer;
(*ppBuffer)->AddRef();
}
if (pData)
{
pBuffer->Unlock();
}
SafeRelease(&pBuffer);
return hr;
}
ストリームからの非同期読み取り操作を開始します。
| pb | BYTE* | out | データを受け取るバッファーへのポインター。呼び出し元がバッファーを割り当てる必要があります。 |
| cb | DWORD | in | バッファーのサイズ (バイト単位)。 |
| pCallback | IMFAsyncCallback* | in | コールバックオブジェクトの IMFAsyncCallback インターフェイスへのポインター。呼び出し元がこのインターフェイスを実装する必要があります。 |
| punkState | IUnknown* | in | 呼び出し元が定義する状態オブジェクトの IUnknown インターフェイスへのポインター。このパラメーターは NULL にすることができます。このオブジェクトを使用して状態情報を保持できます。コールバックが呼び出されるときに、このオブジェクトが呼び出し元に返されます。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
すべてのデータがバッファーに読み取られると、コールバックオブジェクトの IMFAsyncCallback::Invoke メソッドが呼び出されます。その時点で、アプリケーションは IMFByteStream::EndRead を呼び出して非同期要求を完了する必要があります。
非同期読み取りが保留中の間は、バッファーの読み取り、書き込み、解放、または再割り当てを行わないでください。
実装に関する注意:このメソッドは、読み取られるバイト数 (pcbRead パラメーターで返される値で指定される) を現在の位置に加算することで、ストリーム内の現在の位置を更新する必要があります。現在の位置を更新できるその他のメソッドは、BeginRead、Write、BeginWrite、Seek、および SetCurrentPosition です。
Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、このインターフェイスは次のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
非同期読み取り操作を完了します。
| pResult | IMFAsyncResult* | in | IMFAsyncResult インターフェイスへのポインター。コールバックオブジェクトが IMFAsyncCallback::Invoke メソッドで受け取ったものと同じポインターを渡します。 |
| pcbRead | DWORD* | out | 読み取られたバイト数を受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
IMFByteStream::BeginRead メソッドが非同期に完了した後に、このメソッドを呼び出します。
Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、このインターフェイスは次のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
ストリームにデータを書き込みます。
| pb | BYTE* | in | 書き込むデータを格納するバッファーへのポインター。 |
| cb | DWORD | in | バッファーのサイズ (バイト単位)。 |
| pcbWritten | DWORD* | out | 書き込まれたバイト数を受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、ストリームの現在の位置から開始して、pb バッファーの内容をストリームに書き込みます。書き込まれたバイト数は pcbWritten パラメーターで返されます。
このメソッドは同期的です。書き込み操作が完了するまでブロックします。
実装に関する注意:このメソッドは、ストリームに書き込まれたバイト数 (pcbWritten で返される値で指定される) を現在の位置オフセットに加算することで、ストリーム内の現在の位置を更新する必要があります。
現在の位置を更新できるその他のメソッドは、Read、BeginRead、BeginWrite、Seek、および SetCurrentPosition です。
Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、このインターフェイスは次のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
例
次の例は、メディアバッファーからバイトストリームにデータを書き込みます。メディアバッファーの詳細については、Media Buffers を参照してください。
//-------------------------------------------------------------------
// WriteBufferToByteStream
//
// Writes data from a media buffer to a byte stream.
//-------------------------------------------------------------------
HRESULT WriteBufferToByteStream(
IMFByteStream *pStream, // Pointer to the byte stream.
IMFMediaBuffer *pBuffer, // Pointer to the media buffer.
DWORD *pcbWritten // Receives the number of bytes written.
)
{
HRESULT hr = S_OK;
DWORD cbData = 0;
DWORD cbWritten = 0;
BYTE *pMem = NULL;
hr = pBuffer->Lock(&pMem, NULL, &cbData);
if (SUCCEEDED(hr))
{
hr = pStream->Write(pMem, cbData, &cbWritten);
}
if (SUCCEEDED(hr))
{
if (pcbWritten)
{
*pcbWritten = cbWritten;
}
}
if (pMem)
{
pBuffer->Unlock();
}
return hr;
}
次の関数テンプレートは、型指定された変数をバイトストリームに書き込みます。
template <class T>
HRESULT WriteToStream(
IMFByteStream *pStream, // Pointer to the byte stream.
const T* p, // Data to write to the stream.
ULONG cb = sizeof(T) // Size of the data in bytes.
)
{
ULONG cbWritten = 0;
HRESULT hr = S_OK;
hr = pStream->Write((const BYTE*)p, cb, &cbWritten);
if (SUCCEEDED(hr) && (cbWritten != cb))
{
hr = E_FAIL;
}
return hr;
}
ストリームへの非同期書き込み操作を開始します。
| pb | BYTE* | in | 書き込むデータを格納するバッファーへのポインター。 |
| cb | DWORD | in | バッファーのサイズ (バイト単位)。 |
| pCallback | IMFAsyncCallback* | in | コールバックオブジェクトの IMFAsyncCallback インターフェイスへのポインター。呼び出し元がこのインターフェイスを実装する必要があります。 |
| punkState | IUnknown* | in | 呼び出し元が定義する状態オブジェクトの IUnknown インターフェイスへのポインター。このパラメーターは NULL にすることができます。このオブジェクトを使用して状態情報を保持できます。コールバックが呼び出されるときに、このオブジェクトが呼び出し元に返されます。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
すべてのデータがストリームに書き込まれると、コールバックオブジェクトの IMFAsyncCallback::Invoke メソッドが呼び出されます。その時点で、アプリケーションは IMFByteStream::EndWrite を呼び出して非同期要求を完了する必要があります。
非同期書き込みがまだ保留中の間は、バッファーの再割り当て、解放、または書き込みを行わないでください。
実装に関する注意:このメソッドは、ストリームに書き込まれるバイト数 (pcbWritten で返される値で指定される) を現在の位置に加算することで、ストリーム内の現在の位置を更新する必要があります。現在の位置を更新できるその他のメソッドは、Read、BeginRead、Write、Seek、および SetCurrentPosition です。
Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、このインターフェイスは次のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
非同期書き込み操作を完了します。
| pResult | IMFAsyncResult* | in | IMFAsyncResult インターフェイスへのポインター。コールバックオブジェクトが IMFAsyncCallback::Invoke メソッドで受け取ったものと同じポインターを渡します。 |
| pcbWritten | DWORD* | out | 書き込まれたバイト数を受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
IMFByteStream::BeginWrite メソッドが非同期に完了したときに、このメソッドを呼び出します。
Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、このインターフェイスは次のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
指定されたオフセットだけストリーム内の現在の位置を移動します。
| SeekOrigin | MFBYTESTREAM_SEEK_ORIGIN | in | MFBYTESTREAM_SEEK_ORIGIN 列挙体のメンバーとして、シークの起点を指定します。オフセットはこの位置を基準に計算されます。 | ||||
| llSeekOffset | LONGLONG | in | シークの起点からのバイトオフセットとして、新しい位置を指定します。 | ||||
| dwSeekFlags | DWORD | in | 0 個以上のフラグを指定します。次のフラグが定義されています。
| ||||
| pqwCurrentPosition | ULONGLONG* | out | シーク後の新しい位置を受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、このインターフェイスは次のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
ストリームが使用する内部バッファーをすべてクリアします。ストリームに書き込んでいる場合、バッファーされたデータは、基になるファイルまたはデバイスに書き込まれます。
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
バイトストリームが読み取り専用の場合、このメソッドは何も行いません。
Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、このインターフェイスは次のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
ストリームを閉じ、ソケットやファイルハンドルなど、ストリームに関連付けられたリソースをすべて解放します。このメソッドは、保留中の非同期 I/O 要求もすべてキャンセルします。
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、このインターフェイスは次のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされた Windows XP Media Center Edition 2005。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMFByteStream "{AD4C1B00-4BF7-422F-9175-756693D9130D}" #usecom global IMFByteStream IID_IMFByteStream "{}" #comfunc global IMFByteStream_GetCapabilities 3 var #comfunc global IMFByteStream_GetLength 4 var #comfunc global IMFByteStream_SetLength 5 int64 #comfunc global IMFByteStream_GetCurrentPosition 6 var #comfunc global IMFByteStream_SetCurrentPosition 7 int64 #comfunc global IMFByteStream_IsEndOfStream 8 var #comfunc global IMFByteStream_Read 9 var,int,var #comfunc global IMFByteStream_BeginRead 10 var,int,sptr,sptr #comfunc global IMFByteStream_EndRead 11 sptr,var #comfunc global IMFByteStream_Write 12 var,int,var #comfunc global IMFByteStream_BeginWrite 13 var,int,sptr,sptr #comfunc global IMFByteStream_EndWrite 14 sptr,var #comfunc global IMFByteStream_Seek 15 int,int64,int,var #comfunc global IMFByteStream_Flush 16 #comfunc global IMFByteStream_Close 17 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IMFByteStream "{AD4C1B00-4BF7-422F-9175-756693D9130D}" #usecom global IMFByteStream IID_IMFByteStream "{}" #comfunc global IMFByteStream_GetCapabilities 3 sptr #comfunc global IMFByteStream_GetLength 4 sptr #comfunc global IMFByteStream_SetLength 5 int64 #comfunc global IMFByteStream_GetCurrentPosition 6 sptr #comfunc global IMFByteStream_SetCurrentPosition 7 int64 #comfunc global IMFByteStream_IsEndOfStream 8 sptr #comfunc global IMFByteStream_Read 9 sptr,int,sptr #comfunc global IMFByteStream_BeginRead 10 sptr,int,sptr,sptr #comfunc global IMFByteStream_EndRead 11 sptr,sptr #comfunc global IMFByteStream_Write 12 sptr,int,sptr #comfunc global IMFByteStream_BeginWrite 13 sptr,int,sptr,sptr #comfunc global IMFByteStream_EndWrite 14 sptr,sptr #comfunc global IMFByteStream_Seek 15 int,int64,int,sptr #comfunc global IMFByteStream_Flush 16 #comfunc global IMFByteStream_Close 17 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。