Q:SendSoftwareInterrupt と FWSendSoftwareInterrupt の違いは何ですか?
A:DriverServicesLib の SendSoftwareInterrupt は、実際には、対応する割り込みハンドラをすぐに呼び出す以外は何もしません。
FWSendSoftwareInterrupt の動作は、WaitNextEvent に対するパッチに依存しています。通常、FWSendSoftwareInterrupt を呼び出すと、FWCreateSoftwareInterrupt を使ってインストールされたハンドラが、次に WaitNextEvent が呼び出されたときに実行されます。FWCreateSoftwareInterrupt を呼び出すとき、パラメータの 1 つは TaskID です。FWSendSoftwareInterrupt は、ソフトウェアの割り込みの TaskID と、Process Manager による現在のプロセスの TaskID が一致することを確認しようとします。呼び出されたときに、現在のプロセスが何であるかを問題にしないならば(ドライバの場合に一般的です)、FWCreateSoftwareInterrupt を呼び出すとき、FWCurrentTaskID の代わりに kInvalidID を渡します。こうすることによって、ソフトウェアの割り込みは、FWSendSoftwareInterrupt の呼び出し後、次に WaitNextEvent が呼び出されたときに呼び出されます。
[2002 年 2 月 13 日]
|