次の方法で共有


ビデオ VBI キャプチャ

DirectX 5.2 では、ビデオ垂直帰線消去期間 (VBI) キャプチャ用に、2 つの DirectDraw ドライバー関数が導入されました。 その関数とは、DxTransferDxGetTransferStatus です。

DxTransfer 関数は、ビデオと VBI のキャプチャを容易にします。 この関数は IRQ 時に呼び出されるので、できる限り迅速に戻る必要があります。 DxTransfer が呼び出されたときに、ディスプレイ ハードウェアがバス マスターを実行できる状態でなければ、ビデオ ミニポート ドライバーが、複数のバス マスターの内部キューを保持する必要があります (キューに保持するバス マスターの実際の数は、ドライバーの開発者次第です)。 これにより、ハードウェアの準備ができたときにハードウェアでバス マスターを実行することができます。 言い換えると、ドライバーでポーリングを実行してバス マスターの完了を待機するべきではありません。

DirectDraw は、DxTransfer 関数を呼び出すときに、DDTRANSFERININFO 構造体のメンバー dwTransferID に転送 ID を入力します。 その後、ビデオ ミニポート ドライバーは、DxGetTransferStatus 関数を呼び出すときに、その ID を使用できます。

バス マスターが完了したら、ディスプレイ ハードウェアで IRQ を生成する必要があります。 その後、ビデオ ミニポート ドライバーは、DxEnableIRQ で指定された IRQCallback 関数を呼び出す必要があります。 この IRQCallback 呼び出しでは、ビデオ ミニポート ドライバーは DDIRQ_BUSMASTER フラグを指定します。 DirectDraw は次に、DxGetTransferStatus 関数を呼び出して、完了したバス マスターを判定します。 ビデオ ミニポート ドライバーは、前に DxTransfer 呼び出しで DirectDraw からドライバーに渡された転送 ID (dwTransferID) を返す必要があります。 このようにして、ドライバーのキューに 5 つのバス マスターが保持されている場合に、DirectDraw は最後に完了したバス マスターを特定することができます。