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

IMediaSeeking

COM
IID36b73880-c2c8-11cf-8b46-00805f6cef60継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IMediaSeeking インターフェイスは、ストリーム内の位置へのシーク、および再生レートの設定を行うためのメソッドを提供します。

メソッド 17

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

vtbl 3 HRESULT GetCapabilities(DWORD* pCapabilities)

GetCapabilities メソッドは、ストリームのすべてのシーク機能を取得します。

pCapabilitiesDWORD*outAM_SEEKING_SEEKING_CAPABILITIES フラグのビット単位の組み合わせを受け取る変数へのポインター。

戻り値

HRESULT 値を返します。とりうる値には次のものがあります。

リターンコード 説明
S_OK
成功。
E_POINTER
NULL ポインター引数。

解説(Remarks)

このメソッドは、ストリームのすべてのシーク機能に関する情報を返します。pCapabilities を調べるには、関心のある各 AM_SEEKING_SEEKING_CAPABILITIES 値に対して個別にビット単位の AND 演算を実行します。

C++
DWORD dwCaps = 0;
pMediaSeeking->GetCapabilities(&dwCaps);

if (dwCaps & AM_SEEKING_CanGetCurrentPos) { // ストリームは現在位置へシークできる。 } if (dwCaps & AM_SEEKING_CanPlayBackwards) { // ストリームは逆方向に再生できる。 }

vtbl 4 HRESULT CheckCapabilities(DWORD* pCapabilities)

CheckCapabilities メソッドは、ストリームが指定したシーク機能を備えているかどうかを問い合わせます。

pCapabilitiesDWORD*inout入力時には、1 つ以上の AM_SEEKING_SEEKING_CAPABILITIES 属性をビット単位の OR で結合した値を格納する変数へのポインター。メソッドから戻ると、その値はそれらの属性のうちどれが利用可能かを示します。

戻り値

HRESULT 値を返します。とりうる値には次のものがあります。

リターンコード 説明
S_FALSE
pCapabilities の機能の一部は存在しますが、すべてではありません。
S_OK
pCapabilities のすべての機能が存在します。
E_FAIL
pCapabilities の機能はいずれも存在しません。
E_POINTER
NULL ポインター引数。

解説(Remarks)

特定のいくつかの機能だけに関心がある場合は、ストリームのすべてのシーク機能を調べる IMediaSeeking::GetCapabilities を呼び出すよりも、このメソッドを呼び出す方が効率的です。

このメソッドを呼び出すには、DWORD 変数を宣言し、テストしたい AM_SEEKING_SEEKING_CAPABILITIES フラグをビット単位の OR で結合した値を設定します。この値のアドレスを pCapabilities パラメーターに渡します。メソッドから戻ると、pCapabilities には元のビットのサブセットが格納され、どの機能が存在するかを示します。戻り値は、要求した機能の一部・なし・すべてのいずれが存在するかを示します。

次のコード例は、ストリームが前方シーク、後方シーク、および絶対シークをサポートしているかどうかを調べる方法を示しています。

C++
// 確認したい機能のフラグを設定する。

DWORD dwCaps = AM_SEEKING_CanSeekAbsolute | AM_SEEKING_CanSeekForwards | AM_SEEKING_CanSeekBackwards;

HRESULT hr = pMediaSeeking->CheckCapabilities(&dwCaps); if(FAILED(hr)) { // ストリームはシークできない。 } else if (hr == S_OK) {
// ストリームは前方・後方・絶対位置へシークできる。 } else if (hr == S_FALSE) // ストリームは一部の機能を備えている。 { if (dwCaps & AM_SEEKING_CanSeekAbsolute) { // ストリームは絶対位置へシークできる。 } if (dwCaps & AM_SEEKING_CanSeekForwards) { // ストリームは前方へシークできる。 } if (dwCaps & AM_SEEKING_CanSeekBackwards) { // ストリームは後方へシークできる。 } }

vtbl 5 HRESULT IsFormatSupported(GUID* pFormat)

IsFormatSupported メソッドは、指定した時間形式がシーク操作でサポートされているかどうかを判定します。

pFormatGUID*in時間形式を指定する GUID へのポインター。時間形式 GUID を参照してください。

戻り値

HRESULT 値を返します。とりうる値には次のものがあります。

リターンコード 説明
S_FALSE
この形式はサポートされていません。
S_OK
この形式はサポートされています。
E_NOTIMPL
実装されていません。
E_POINTER
NULL ポインター引数。
vtbl 6 HRESULT QueryPreferredFormat(GUID* pFormat)

QueryPreferredFormat メソッドは、シークに推奨される時間形式を取得します。

pFormatGUID*out時間形式を指定する GUID を受け取る変数へのポインター。時間形式 GUID を参照してください。

戻り値

HRESULT 値を返します。とりうる値には次のものがあります。

リターンコード 説明
S_OK
成功。
E_NOTIMPL
実装されていません。
E_POINTER
NULL ポインター引数。
vtbl 7 HRESULT GetTimeFormat(GUID* pFormat)

GetTimeFormat メソッドは、現在シーク操作に使用されている時間形式を取得します。

pFormatGUID*out時間形式を指定する GUID を受け取る変数へのポインター。時間形式 GUID を参照してください。

戻り値

HRESULT 値を返します。とりうる値には次のものがあります。

リターンコード 説明
S_OK
成功。
E_POINTER
NULL ポインター引数。
vtbl 8 HRESULT IsUsingTimeFormat(GUID* pFormat)

IsUsingTimeFormat メソッドは、シーク操作が現在指定した時間形式を使用しているかどうかを判定します。

pFormatGUID*in時間形式を指定する GUID へのポインター。時間形式 GUID を参照してください。

戻り値

HRESULT 値を返します。とりうる値には次のものがあります。

リターンコード 説明
S_FALSE
指定した形式は現在の形式ではありません。
S_OK
指定した形式が現在の形式です。
E_NOTIMPL
実装されていません。
E_POINTER
NULL ポインター引数。

解説(Remarks)

このメソッドは GUID をコピーする必要がないため、IMediaSeeking::GetTimeFormat メソッドよりもわずかに効率的です。

vtbl 9 HRESULT SetTimeFormat(GUID* pFormat)

SetTimeFormat メソッドは、以降のシーク操作に使用する時間形式を設定します。

pFormatGUID*in時間形式を指定する GUID へのポインター。時間形式 GUID を参照してください。

戻り値

HRESULT 値を返します。とりうる値には次のものがあります。

リターンコード 説明
S_OK
成功。
E_INVALIDARG
引数が無効です。
E_NOTIMPL
メソッドがサポートされていません。
E_POINTER
NULL ポインター引数。
VFW_E_WRONG_STATE
フィルターグラフが停止していません。

解説(Remarks)

このメソッドは、IMediaSeeking::GetPositionsIMediaSeeking::SetPositions など、他の IMediaSeeking メソッドで使用される時間の単位を指定します。これらの他のメソッドを呼び出す際、時間値を表すパラメーターはすべて現在の時間形式の単位で与えられます。

既定の時間形式は REFERENCE_TIME 単位 (100 ナノ秒) です。その他の時間形式には、フレーム、サンプル、バイトがあります。特定の形式がサポートされているかどうかを判定するには、IMediaSeeking::IsFormatSupported メソッドを呼び出します。ある形式がサポートされている場合、SetTimeFormat を呼び出すことでその形式に切り替えることができます。同時にアクティブにできる時間形式は 1 つだけです。

vtbl 10 HRESULT GetDuration(LONGLONG* pDuration)

GetDuration メソッドは、ストリームの再生時間 (長さ) を取得します。

pDurationLONGLONG*out現在の時間形式の単位で、再生時間を受け取ります。

戻り値

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

このメソッドは、通常の再生速度でのストリームの再生時間を取得します。再生レートを変更しても再生時間は変わりません。

再生時間は現在の時間形式で表されます。既定の時間形式は REFERENCE_TIME 単位 (100 ナノ秒) です。時間形式を変更するには、IMediaSeeking::SetTimeFormat メソッドを使用します。

ソースの形式によっては、再生時間が正確でない場合があります。たとえば、ソースに可変ビットレート (VBR) ストリームが含まれている場合、このメソッドは推定された再生時間を返すことがあります。

vtbl 11 HRESULT GetStopPosition(LONGLONG* pStop)

GetStopPosition メソッドは、ストリームの再生時間を基準として、再生が停止する時刻を取得します。

pStopLONGLONG*out現在の時間形式の単位で、停止時刻を受け取る変数へのポインター。

戻り値

HRESULT 値を返します。とりうる値には次のものがあります。

リターンコード 説明
S_OK
成功。
E_NOTIMPL
メソッドがサポートされていません。
E_POINTER
NULL ポインター引数。

解説(Remarks)

再生レートは、このメソッドが返す値に影響しません。

返される値は現在の時間形式で表されます。既定の時間形式は REFERENCE_TIME 単位 (100 ナノ秒) です。時間形式を変更するには、IMediaSeeking::SetTimeFormat メソッドを使用します。

vtbl 12 HRESULT GetCurrentPosition(LONGLONG* pCurrent)

GetCurrentPosition メソッドは、ストリーム全体の再生時間を基準として、現在位置を取得します。

pCurrentLONGLONG*out現在の時間形式の単位で、現在位置を受け取る変数へのポインター。

戻り値

HRESULT 値を返します。とりうる値には次のものがあります。

リターンコード 説明
S_OK
成功。
E_NOTIMPL
メソッドがサポートされていません。
E_POINTER
NULL ポインター引数。

解説(Remarks)

このメソッドは、再生が到達した現在位置を返します。この値には、再生レートと開始時刻に対する調整が含まれます。たとえば、開始時刻が 5 秒、再生レートが 2.0 で、グラフを 4 秒間実行した場合、現在位置は 5 + (4 x 2.0) = 13.0 秒になります。

返される値は現在の時間形式の単位で表されます。現在の時間形式を確認するには、GetTimeFormat メソッドを呼び出します。

グラフが一時停止または停止している場合、現在位置は再生が再開される時点を表します。

Filter Graph Manager は、現在のストリーム時刻から位置を計算します。グラフ内のフィルターに問い合わせは行いません。ファイル再生の場合、再生はストリーム時刻に同期されるため、正確な結果が得られます。ファイル書き込みの場合、結果は正確ではありません。ファイル書き込みグラフで現在位置を取得するには、マルチプレクサーフィルターに問い合わせます。(ただし、ライブキャプチャでは位置は意味を持ちません。)

返される値は現在の時間形式で表されます。既定の時間形式は REFERENCE_TIME 単位 (100 ナノ秒) です。時間形式を変更するには、IMediaSeeking::SetTimeFormat メソッドを使用します。

vtbl 13 HRESULT ConvertTimeFormat(LONGLONG* pTarget, GUID* pTargetFormat, LONGLONG Source, GUID* pSourceFormat)

ConvertTimeFormat メソッドは、ある時間形式から別の時間形式へ変換します。

pTargetLONGLONG*out変換後の時間を受け取る変数へのポインター。
pTargetFormatGUID*inoptional変換先の形式を指定する GUID へのポインター。NULL の場合は現在の形式が使用されます。時間形式 GUID を参照してください。
SourceLONGLONGin変換する時間値。
pSourceFormatGUID*inoptional変換元の形式を指定する GUID へのポインター。NULL の場合は現在の形式が使用されます。時間形式 GUID を参照してください。

戻り値

HRESULT 値を返します。とりうる値には次のものがあります。

リターンコード 説明
S_OK
成功。
E_INVALIDARG
これらの型の間の変換はサポートされていません。
E_NOTIMPL
メソッドがサポートされていません。
E_POINTER
NULL ポインター引数。
vtbl 14 HRESULT SetPositions(LONGLONG* pCurrent, DWORD dwCurrentFlags, LONGLONG* pStop, DWORD dwStopFlags)

SetPositions メソッドは、現在位置と停止位置を設定します。

pCurrentLONGLONG*inoutoptional[in,out] 現在の時間形式の単位で、現在位置を指定する変数へのポインター。
dwCurrentFlagsDWORDinフラグのビット単位の組み合わせ。「解説」を参照してください。
pStopLONGLONG*inoutoptional[in,out] 現在の時間形式の単位で、停止時刻を指定する変数へのポインター。
dwStopFlagsDWORDinフラグのビット単位の組み合わせ。「解説」を参照してください。

戻り値

HRESULT 値を返します。とりうる値には次のものがあります。

リターンコード 説明
S_FALSE
位置の変更なし。(両方のフラグでシークなしが指定されています。)
S_OK
成功。
E_INVALIDARG
引数が無効です。
E_NOTIMPL
メソッドがサポートされていません。
E_POINTER
NULL ポインター引数。

解説(Remarks)

dwCurrentFlags パラメーターと dwStopFlags パラメーターは、シークの種類を定義します。次のフラグが定義されています。

位置指定フラグ 説明
AM_SEEKING_NoPositioning 位置を変更しません。(時間パラメーターは NULL でもかまいません。)
AM_SEEKING_AbsolutePositioning 指定した位置は絶対位置です。
AM_SEEKING_RelativePositioning 指定した位置は前の値に対する相対位置です。
AM_SEEKING_IncrementalPositioning 停止位置 (pStop) は現在位置 (pCurrent) に対する相対位置です。
修飾フラグ 説明
AM_SEEKING_SeekToKeyFrame 最も近いキーフレームへシークします。これは高速になる可能性がありますが、精度は低くなります。DirectShow に付属するフィルターはいずれもこのフラグをサポートしていません。これをサポートする可能性が最も高いフィルターはデコーダーです。
AM_SEEKING_ReturnTime 対応するリファレンスタイムを返します。
AM_SEEKING_Segment セグメントシークを使用します。
AM_SEEKING_NoFlush フラッシュを行いません。

各パラメーターには、位置指定フラグを 1 つ使用します。必要に応じて、1 つ以上の修飾フラグを含めることができます。

AM_SEEKING_ReturnTime フラグを指定すると、メソッドは位置の値をリファレンスタイムに変換し、それを pCurrent または pStop 変数に返します。このフラグは、フレームなど別の時間形式を使用している場合に便利です。

AM_SEEKING_Segment フラグと AM_SEEKING_NoFlush フラグは、シームレスなループ再生をサポートします。

ループ再生を行うには、グラフが IMediaSeeking::GetCapabilities メソッドで AM_SEEKING_CanDoSegments を報告する必要があります。現在、この機能をサポートしているのは WAVE Parser Filter のみです。

入力される pCurrentpStop の値は現在の時間形式で表されます。既定の時間形式は REFERENCE_TIME 単位 (100 ナノ秒) です。時間形式を変更するには、IMediaSeeking::SetTimeFormat メソッドを使用します。AM_SEEKING_ReturnTime フラグが指定されている場合、メソッドは出力される値を REFERENCE_TIME 単位に変換します。

フィルター開発者向け

このメソッドを実装する場合、AM_SEEKING_PositioningBitsMask の値を使用して修飾フラグをマスクすることで、呼び出し元が現在位置と停止位置のどちらの変更を要求しているかを確認できます。次に例を示します。
DWORD dwCurrentPos = dwCurrentFlags & AM_SEEKING_PositioningBitsMask
if (dwCurrentPos == AM_SEEKING_AbsolutePositioning)
{ 
    // 新しい位置を pCurrent に設定する。
    m_rtStart = *pCurrent;
}
else if (dwCurrentPos == AM_SEEKING_RelativePositioning)
{
    // 現在位置を pCurrent の分だけ加算する。
    m_rtStart += *pCurrent;
}
詳細については、基底クラスライブラリの CSourceSeeking::SetPositions メソッドのソースコードを参照してください。
vtbl 15 HRESULT GetPositions(LONGLONG* pCurrent, LONGLONG* pStop)

GetPositions メソッドは、ストリーム全体の再生時間を基準として、現在位置と停止位置を取得します。

pCurrentLONGLONG*outoptional現在の時間形式の単位で、現在位置を受け取る変数へのポインター。
pStopLONGLONG*outoptional現在の時間形式の単位で、停止位置を受け取る変数へのポインター。

戻り値

HRESULT 値を返します。とりうる値には次のものがあります。

リターンコード 説明
S_OK
成功。
E_NOTIMPL
メソッドがサポートされていません。
E_POINTER
NULL ポインター引数。

解説(Remarks)

現在位置と停止位置はどちらも元のストリームを基準としており、再生レートには依存しません。

返される値は現在の時間形式で表されます。既定の時間形式は REFERENCE_TIME 単位 (100 ナノ秒) です。時間形式を変更するには、IMediaSeeking::SetTimeFormat メソッドを使用します。

vtbl 16 HRESULT GetAvailable(LONGLONG* pEarliest, LONGLONG* pLatest)

GetAvailable メソッドは、シークが効率的に行える時間の範囲を取得します。

pEarliestLONGLONG*outoptional効率的にシークできる最も早い時刻を受け取る変数へのポインター。
pLatestLONGLONG*outoptional効率的にシークできる最も遅い時刻を受け取る変数へのポインター。

戻り値

HRESULT 値を返します。とりうる値には次のものがあります。

リターンコード 説明
S_OK
成功。
E_NOTIMPL
メソッドがサポートされていません。
E_POINTER
NULL ポインター引数。

解説(Remarks)

このメソッドは主に、ネットワーク経由で送信されるストリームなど、過度な遅延が発生する可能性のあるメディアストリームでのシークを対象としています。返される値は、すでに到着していて容易にシークできるキャッシュ済みデータを示します。これらの返されたパラメーターを超える値へシークすると、データの到着を待つ間、アプリケーションに遅延が発生すると想定されます。

すべての時間値は現在の時間形式で表されます。既定の時間形式は REFERENCE_TIME 単位 (100 ナノ秒) です。時間形式を変更するには、IMediaSeeking::SetTimeFormat メソッドを使用します。

vtbl 17 HRESULT SetRate(DOUBLE dRate)

SetRate メソッドは、再生レートを設定します。

dRateDOUBLEin再生レート。ゼロにはできません。

戻り値

HRESULT 値を返します。とりうる値には次のものがあります。

リターンコード 説明
S_OK
成功。
E_INVALIDARG
指定したレートがゼロまたは負の値でした。(「解説」を参照してください。)
E_NOTIMPL
実装されていません。
E_POINTER
NULL ポインター引数。
VFW_E_UNSUPPORTED_AUDIO
オーディオデバイスまたはフィルターがこのレートをサポートしていません。

解説(Remarks)

再生レートは、通常速度に対する比率として表されます。したがって、1.0 は通常の再生速度、0.5 は半分の速度、2.0 は 2 倍の速度を表します。オーディオストリームでは、レートを変更するとピッチも変化します。

負の値は逆方向再生を表します。ほとんどのフィルターは逆方向再生をサポートしておらず、dRate パラメーターが負の場合はエラーコードを返します。

アプリケーションが Filter Graph Manager に対してこのメソッドを呼び出すと、Filter Graph Manager は次の処理を行います。

  1. IMediaSeeking::GetCurrentPosition メソッドを呼び出します。この呼び出しは、Filter Graph Manager が計算した現在位置を返します。
  2. フィルターグラフを停止します (グラフが一時停止中または実行中の場合)。
  3. 現在位置を開始時刻として、フィルターに対して IMediaSeeking::SetPositions メソッドを呼び出します。これにより、ストリーム時刻がゼロにリセットされます。
  4. 新しいレートを指定して、フィルターに対して SetRate メソッドを呼び出します。
  5. フィルターグラフが一時停止中または実行中だった場合は、再開します。
手順 4 でエラーが発生した場合、Filter Graph Manager は以前のレートを復元しようとします。

フィルターは、レート変更に対して次のように応答する必要があります。

パーサーフィルターおよびソースフィルター: タイムスタンプを生成するフィルターが SetRate 呼び出しに応答します。これは通常、AVI Splitter Filter などのパーサーフィルターですが、ソースフィルターの場合もあります。シークまたはレート変更が行われた後、フィルターは新しい設定で IPin::NewSegment メソッドを呼び出す必要があります。レート変更後は、それに応じてタイムスタンプを調整する必要があります。レート変更の前にはシークが行われ、タイムスタンプはゼロから再開されるため、フィルターは単純にレートで除算することで新しいタイムスタンプを計算できます。

デコーダーフィルター: デコーダーは、SetRate 呼び出しに対して上流へ渡す以外の処理を行うべきではありません。代わりに、上流のパーサーが発行する NewSegment 呼び出しに応答する必要があります。デコーダーフィルターは、新しいセグメント情報を受け取ると、その値を保存し、NewSegment 呼び出しを下流へ渡す必要があります。一部のデコーダーは、入力を補間して追加のタイムスタンプを生成する必要があります。その際にはレート変更を考慮する必要があります。

レンダラー: ビデオレンダラーは通常、入力されるフレームがすでに正しいタイムスタンプを持っているため、レート変更を無視できます。オーディオレンダラーは再生レートを変更する必要があります。オーディオデコーダーは通常、レート変更に伴う変換を行わないためです。

vtbl 18 HRESULT GetRate(DOUBLE* pdRate)

GetRate メソッドは、再生レートを取得します。

pdRateDOUBLE*out再生レートを受け取る変数へのポインター。

戻り値

HRESULT 値を返します。とりうる値には次のものがあります。

リターンコード 説明
S_OK
成功。
E_NOTIMPL
メソッドがサポートされていません。
E_POINTER
NULL ポインター引数。

解説(Remarks)

再生レートは、通常速度に対する比率として表されます。したがって、1.0 は通常の再生速度、0.5 は半分の速度、2.0 は 2 倍の速度を表します。

vtbl 19 HRESULT GetPreroll(LONGLONG* pllPreroll)

GetPreroll メソッドは、開始位置より前にキューへ入れられるデータの量を取得します。

pllPrerollLONGLONG*out現在の時間形式の単位で、プリロール時間を受け取る変数へのポインター。

戻り値

HRESULT 値を返します。とりうる値には次のものがあります。

リターンコード 説明
S_OK
成功。
E_NOTIMPL
メソッドがサポートされていません。
E_POINTER
NULL ポインター引数。

解説(Remarks)

プリロールとは、テーププレーヤーなどの非ランダムアクセスデバイスが再生を開始すべき、開始位置より前の時間のことです。

返される値は現在の時間形式で表されます。既定の時間形式は REFERENCE_TIME 単位 (100 ナノ秒) です。時間形式を変更するには、IMediaSeeking::SetTimeFormat メソッドを使用します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

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

出力引数:
#define global IID_IMediaSeeking "{36B73880-C2C8-11CF-8B46-00805F6CEF60}"
#usecom global IMediaSeeking IID_IMediaSeeking "{}"
#comfunc global IMediaSeeking_GetCapabilities       3 var
#comfunc global IMediaSeeking_CheckCapabilities     4 var
#comfunc global IMediaSeeking_IsFormatSupported     5 var
#comfunc global IMediaSeeking_QueryPreferredFormat  6 var
#comfunc global IMediaSeeking_GetTimeFormat         7 var
#comfunc global IMediaSeeking_IsUsingTimeFormat     8 var
#comfunc global IMediaSeeking_SetTimeFormat         9 var
#comfunc global IMediaSeeking_GetDuration           10 var
#comfunc global IMediaSeeking_GetStopPosition       11 var
#comfunc global IMediaSeeking_GetCurrentPosition    12 var
#comfunc global IMediaSeeking_ConvertTimeFormat     13 var,var,int64,var
#comfunc global IMediaSeeking_SetPositions          14 var,int,var,int
#comfunc global IMediaSeeking_GetPositions          15 var,var
#comfunc global IMediaSeeking_GetAvailable          16 var,var
#comfunc global IMediaSeeking_SetRate               17 double
#comfunc global IMediaSeeking_GetRate               18 var
#comfunc global IMediaSeeking_GetPreroll            19 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。