コンテキスト外フック関数
次の一覧は、コンテキスト外フック関数の主な側面の概要を示しています。
- コンテキスト外フック関数は、クライアントのアドレス空間 (コード本文または DLL 内) に配置されます。
- コンテキスト外フック関数は、サーバーのアドレス空間にマップされません。
- イベントがトリガーされると、フック関数のパラメーターはプロセス境界を越えてマーシャリングされます。
- コンテキスト外フック関数は、マーシャリングにより、コンテキスト内フック関数よりも著しく遅くなります。
- (マーシャリングの実行に必要な時間が原因で) 非同期に到着するように、システムはイベント通知をキューに入れます。
イベント通知は非同期ですが、Microsoft Active Accessibility は、コールバック関数が生成された順序ですべてのイベントを確実に受信することを保証します。
オペレーティング システムの USER コンポーネントは、コンテキスト外フック関数によって処理されるイベントにメモリを割り当てます。 フック関数が戻ると、メモリが解放されます。 フック関数がイベントを十分に迅速に処理しない場合、USER リソースが低下し、最終的にエラーまたは非常に低速な応答時間が発生します。 これらの問題は、次の場合に発生する可能性があります。
- イベントは非常に迅速に発生します。
- システムが低速です。
- フック関数は、イベントをゆっくりと処理します。
- クライアントは Windows 9x で実行されています。