PInvoke を使用してアンマネージ C++ DLL 関数を呼び出す C# WPF アプリケーションに取り組んでいます。PInvoke 関数は、アパートメント状態が MTA に設定されている WPF スレッドから呼び出されます。PInvoke 呼び出しは正常に機能します。
アンマネージ C++ DLL は、DirectShow 関数を使用してウィンドウを作成し、ビデオ フィードを表示します。たとえば。 CoInitializeEx(NULL, COINIT_MULTITHREADED)
DirectShow を初期化するために PInvoke 関数が呼び出されたときに呼び出されます。DirectShow コードは正常に動作します (エラーは表示されません)。ウィンドウを開いてビデオフィードを表示することになっています。しかし、窓は開きません(一瞬開いて消えます)。
ダイレクト ショー ウィンドウが開かない理由がわかりません。私が知る限り、管理されていない dll からウィンドウを開くことを妨げるものは何もありません。
編集: 通常の C# アプリケーション (wpf なし) から DLL を呼び出すと、同じ結果が得られます。