投稿者 オショウ  (社会人) 投稿日時 2009/11/30 20:56:49
FA関係のソフト屋やってますので、ちょっと突っ込んでみます。

※ 時間が経過してしまっているので、すいません・・・

まず、タイマーイベントを起こしたいとのことですが、技術的に可能か不可能か
と言えば可能です。ですが、デバイスドライバー側から見た場合の時間保障とし
ては、実際には、1msが限界で、0.1msや0.01msは一般的にはできません。

次に.NET Frameworkを使って・・・となると、やはり1msが限界です。

※ 1msが保障されているわけではありません。
  DDK的には、保障されているらしいですが。

一般的では無い方法は、C言語でバリバリ書くことになります。

では、そのタイマーイベントの折、何をするのでしょうか?
1msや0.1ms以内で終わる処理を行う前提でしょうか?

高精度タイマーについて・・・
PCが持っている内部的タイマーを使用することは、API的には問題はありま
せんが、.NETにはそれだけの精度のタイマーイベントは要求できません。
では、不可能か?となるのですが、最悪はPCIバスにタイマーボード等を突
っ込んで、タイマーイベントを発生させ、そのイベントを受信して行うのです
が、1ms未満となると、やはり.NETでは無理があります。
コールバック関数を定義して、タイマーライブラリ側からユーザーアプリ側の
関数を呼び出させ処理を行うことになります。

タイマーイベントと言うよりは、割り込み処理と言った方がいいでしょう~

0.2ms割り込みで、500時間とか連続稼働させたことあります。
完全にC言語でバリバリ書きましたが・・・

昨今は・・・
WinDriverと言うものがあり、デバイスドライバーはDDKを使って製作した
ものですが、これを使用すると、ユーザーモードアプリレベルでデバドラレベ
ルの機能のものが作れます。

http://www.xlsoft.com/jp/products/windriver/windriver_windows.html

この場合は、開発環境として・・・
C、C#、VB.NET、VB 6.0 または Delphi をサポートする開発環境
とありますので、.NET使えますネ!

しかしながら、使えるからと言って、無茶なコードを書くと、OSごと落ちて
しまうことは当然ありますので、注意が必要です。

要望されることは、恐らく可能な話だと思いますが、サイクリックに発生する
タイマーや割り込み処理中に、どの程度の処理を行いたいのか?もしくは、何
をしたいのかが解りませんので、そういう内容の提示があれば、もっと具体的
なコメントも可能かと思います。

※ こちらの掲示板では、かなり高度な話になってしまいました・・・

  簡単に高機能なことがしたい・・・
  と言うのであれば、WinDriver等有償商品をお使いになることを検討され
  るのがよいように思います。

※ 余談ながら・・・
  話はそれますが・・・

  InTime
  http://www.mnc.co.jp/intime/

  こんなものもあります。
  昨今のハイスペックPCなら特に問題は無いでしょう~
  (マルチCPU・マルチコア環境が必要です)

以上。