次の方法で共有


コンテキスト外フック関数

次の一覧は、コンテキスト外フック関数の主な側面の概要を示しています。

  • コンテキスト外のフック関数は、コード本文または DLL 内のいずれにあるかにかかわらず、クライアントのアドレス空間に配置されます。
  • アウトコンテキスト フック関数は、サーバーのアドレス空間にマップされません。
  • イベントがトリガーされると、フック関数のパラメーターはプロセス境界を越えてマーシャリングされます。
  • アウトコンテキスト フック関数は、マーシャリングにより、コンテキスト内フック関数よりも著しく遅くなります。
  • システムはイベント通知をキューに入れ、非同期的に到着します (マーシャリングの実行に必要な時間が原因)。

イベント通知は非同期ですが、Microsoft Active Accessibility では、コールバック関数が生成された順序ですべてのイベントを確実に受信できます。

オペレーティング システムの USER コンポーネントは、コンテキスト外フック関数によって処理されるイベントにメモリを割り当てます。 フック関数が戻ると、メモリが解放されます。 フック関数がイベントを十分に迅速に処理しない場合、USER リソースが低下し、最終的にエラーまたは非常に遅い応答時間が発生します。 これらの問題は、次の場合に発生する可能性があります。

  • イベントは非常に迅速に発生します。
  • システムが低速です。
  • フック関数は、イベントの処理に時間がかかります。
  • クライアントは Windows 9x で実行されています。