次の方法で共有


仮想関数テーブルのアドレスの取得

C プログラミング言語で記述されたアプリケーションでは、NewBall 関数を使用して IAVIStreamVtbl 構造体のアドレスを取得できます。 この関数は、 IAVIStreamVtbl へのポインターを含む構造体のアドレスを返します。 IAVIStreamVtbl ポインターに続く情報は、AVIBall によって内部的に使用されるデータを指定します。 ストリーム ハンドラーは、 IAVIStreamVtbl ポインターの後に独自の情報を追加できます。 この情報は、ストリーム ハンドラーへの後続の呼び出しで返されます。

PAVISTREAM WINAPI NewBall(VOID) 
{ 
    PAVIBALL pball; 
    pball = (PAVIBALL) GlobalAllocPtr(GHND, sizeof(AVIBALL)); 
    if (!pball) 
        return 0; 
    pball->lpvtbl = &AVIBallHandler; 
    pball->lpvtbl->Create((PAVISTREAM) pball, 0, 0); 
    return (PAVISTREAM) pball; 
}