IntervalZeroのRTX製品のネイティブ呼び出しをラップするマネージコードを書いています。RTXは基本的に、カーネルプロキシを設定することにより、Windowsでのリアルタイムコーディングを可能にします。ここで重要なのは、DllMainがDLL_THREAD_ATTACHで呼び出されたときにRTXがプロキシを生成することです(そしてDLL_THREAD_DETACHでプロキシを破棄します)。そのプロキシが生成されておらず、ライブラリを呼び出すと、すぐにBSODが発生します。
mstest.exeが単体テストを実行すると、ThreadPoolクラスを使用してそれらをキューに入れると99.9%確信しています(この動作を説明するのはこれだけです)。残念なことに、RTXライブラリが読み込まれる前にスレッドがすでに作成されているため、DllMainが呼び出されることはなく、RTXサブシステムはその存在を認識しません。したがって、単体テストでライブラリを呼び出そうとすると、処理が取り消されます。 。
合理的で自動化可能なテストカバレッジを取得できるように、このようなもので単体テストを実行できる必要があります。テストごとに実行時に新しいスレッドを生成するようにmstestに指示する方法はありますか?通常はそれを行うのが遅くなることはわかっていますが、ブルースクリーンの後で戻るよりもはるかに高速になります。