KEXT では、vnode またはファイル スコープ リスナーを介してファイル クローズをリッスンしています。特定の (ごく少数の) ファイルについては、システム デーモンにファイル パスを送信する必要があります。システム デーモンは何らかの処理を行い (これはデーモンで実行する必要があります)、結果を KEXT に返します。デーモンからの応答が得られるまで、ファイルを閉じる呼び出しをブロックする必要があります。結果に基づいて、クローズコールでいくつかの操作を行い、クローズコールを正常に返す必要があります。フォーラムでは、KEXT 通信関連のトピックについて多くの議論が行われています。しかし、それらは決定的なものではなく、非常に古いもの (2002 年ごろ) のようです。この要件は、FtlSendMessage(...)
Win32 API で処理できます。Macで同等のものを探しています
これが私が見たものであり、私の理解を要約したいと思います:
- マッハ メッセージ: キューイング メカニズムを備えた送信側ポートと応答ポートを使用して、双方向通信の非常に優れた方法を提供します。ただし、マッハ メッセージ API (例:
mach_msg
、 ) は KPImach_port_allocate
でbootstrap_look_up
はないようです。mach APIを使用mach_msg_send_from_kernel
できますが、それだけでは双方向通信には役立ちません。私の理解は正しいですか? - IOUserClient : これは、ユーザー空間から KEXT への通信と、KEXT からのいくつかのコールバックに関連しているようです。KEXT からデーモンへの通信を開始し、デーモンからの結果を待つ方法が見つかりませんでした。何か不足していますか?
- Sockets : KEXT から Daemon への双方向通信チャネル全体を実装する必要があるため、これが最後のオプションになる可能性があります。
ioct
l/sysctl
: 私は彼らについてあまり知りません。私が読んだことから、特に双方向通信には推奨されないオプションです- RPC-Mig : 繰り返しますが、私はそれらについてあまり知りません。私が見たものから複雑に見えます。これが推奨される方法かどうかはわかりません。
- KUNCUserNotification : これは、KEXT からユーザーに通知を提供しているだけのようです。それは私の要件を満たしていません。
サポートされているプラットフォームは (10.5 以降) です。要件を見て、誰かがこのトピックに関するいくつかの指針を提案して提供できますか?
前もって感謝します。