これをタイトルに入れるのは難しいので、説明させてください。
Direct3D を使用してメッシュを表示し、directshow(vmr9 + アロケータ) を使用してビデオを再生し、ビデオ フレームをテクスチャとして Direct3D 部分に送信してメッシュに適用するアプリケーションがあります。アプリケーションは 24 時間年中無休で実行する必要があります。少なくとも 24 時間ごとに再起動することは許可されていますが、それ以上の頻度で再起動することはできません。
問題は、コーデック、ビデオ ドライバ、またはビデオ ファイル自体のいずれかが原因で、数時間の再生後に directshow が問題を引き起こしているように見えることです。その時点で、アプリケーションは単にビデオの再生を拒否します。ただし、Direct3D 部分は正常に動作しており、メッシュは表示されています。アプリケーションを再起動すると、すべてが正常に戻ります。
そのため、2 つの部分を 2 つの異なるプロセスに分割することを考えています。そのため、ビデオ プロセスがビデオの再生に失敗した場合でも、少なくとも Direct3D 部分を失うことなく、すぐに再起動できました。
ポインタを渡すことでビデオ プレーヤーから direct3d プロセスにテクスチャを渡すことができるかどうか、つまり別のプロセスのテクスチャをポインタから取得することができるかどうかという実際の質問がここにあります。保護されたメモリのアドレス指定のため、私の最初の推測は不可能です。
両方のプロセスで TCP 通信をセットアップしましたが、この時点ではポインターの通信について心配する必要はありません。
これはクレイジーなアイデアかもしれませんが、これまでにないほどうまくいくでしょう