コードをアトミックに実行する必要があります。唯一の方法は割り込みを無効にすることだと思いますが、Windowsでそれを行うにはどうすればよいですか? それを可能にするWindows OSを探しているので、特定のウィンドウに焦点を当てていません。Windows CE でさえ良いでしょう。
ステファノ
割り込みを完全に無効にするユーザー作成コードの概念は、Windows のいくつかの基本的な設計上の仮定にほとんど反します。
まず、ユーザー モード アプリケーションからの割り込みを無効にすることはできません。(特権命令です。)
カーネル モードでは、IRQL を使用してほとんどの横取りを防ぐことができます (すべてではありません)。これは、Windows でプリエンプティブルでないハードウェア操作を実行する「標準的な」方法です。これがあなたが本当に探しているものだと思います。高レベルの IRQL の範囲内でコードを実行できる場合は、問題ありません。 IRQL については、このリンクを参照してください。 高く走るほど、より多くのものが壊れるということを覚えておいてください。パフォーマンス カウンターが不正確になること、デバイス バッファーがオーバーフローすることなどが予想されます。
バックドアとして、未加工のアセンブリ CLI/STI 命令をカーネル ドライバーに埋め込むことができますが、コードが非常に短い時間割り込みを無効にしない限り、これはおそらく多くのものを破壊します。そうでない場合は、ブルー スクリーンが表示されます。さらに、AMD64 コンパイラは、インライン アセンブリを実行しようとするユーザーと戦うと思います。
アトミック性の要件から手を引くことを強くお勧めします。
その他のオプション:
また、知っておくべき x86 に関するちょっとした秘密があり ます。RTOS をアセンブリで記述したとしても、x86 プラットフォームで記述したものはほとんどアトミックであることが保証されていません。CLI/STI を実行した場合でも、コードを中断できるシステム管理割り込みがあります。