IOKit で HID デバイスからデータを受け取るには IOHIDDeviceRegisterInputReportCallback()
で callback を登録する。逆に callback の登録を解除したいときは専用の関数があるわけではなく Apple の資料によると
Note: To unregister pass NULL for the callback.
登録するときと同じ関数を、(callback: NULL)
で呼べばいいらしい。
...と知ってからずっと試しているけど、どんな書き方をしても解除したはずの古い context で callback が呼ばれてしまい、アプリケーションがクラッシュ。
どうしようもないので IOKit のソースコードを読んでみることに。
確かに CFSetRemoveValue()
で取り除こうとしているようだけど callback 込みで比較しているからどうやっても取り除かれないという...
Apple に報告する元気は残っていない。
Share
リンクも共有もお気軽に。記事を書くモチベーションの向上に役立てます。