問題タブ [macos-system-extension]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - IOUSBHostPipe::CompleteAsyncIO コールバックを作成するには?
USB デバイスと通信する SystemExtension を作成しています。私の最初の計画はTransfer
、必要なIOMemoryDescriptorTransfer
を割り当てるクラスを作成し、クラスが通信するインターフェイスを渡すことです。AsyncIOの完了によるコールバックをクラスに作成したいと思います。複数の読み取りをキューに入れる必要がある場合は、このクラスのインスタンスをさらに作成できます。コールバックでは、データを解凍して別のreadを送信します。Transfer
completeCallback
Transfer
でクラスを作成しOSTypeAlloc(Transfer)
ます。
私が直面している問題は、OSAction の作成が次のスタック トレースで失敗することです。
代わりに、usb デバイスが接続されたときにシステムによってインスタンス化されるクラスで定義、実装、および作成されるようにコールバックを移動すると (このクラスは plist で key で指定されますIOUserClass
)、OSActionオブジェクトの作成は正常に機能します。
への呼び出しは、 へのポインタを への最初の引数として渡すことIOUSBHostInterface::Open
によって行われます。これでいいのでしょうか?または、オブジェクトが からコールバックを受け取るオブジェクトと同じである必要がありますか。IOUserClass
IOUserClass
Open
IOService
AsyncIO
macos - USB DriverKit の Start メソッドでは呼び出されない
DriverKit dext を作成しており、System Extension フレームワークを使用してアクティブ化できます。com.apple.developer.driverkitがtrue に設定されているusbの資格があり ます.com.apple.developer.driverkit.transport.usbは辞書として追加されていますが、サブ値はありません(空です)。
USB デバイスが接続された後、dext の Start メソッドで呼び出されることを期待していましたが、呼び出しが表示されません。
ステップ/構成が欠落しているかどうか、何か考えはありますか?
swift - システム拡張機能またはネットワーク拡張機能を強制終了するには?
だから私は Swift で Network Extension を使って macOS アプリを構築しています。いくつかのテストの後、拡張機能はシステム内のプロセスとして残ります。アプリを停止することも強制終了することもできますが、Network Extension を停止、強制終了、またはアンロードすることはできません。ネットワーク拡張機能は何度も登場します。
macOS を再起動しましたが、ネットワーク拡張機能がまだプロセスとして残っています。システムから完全に削除するにはどうすればよいですか?
c++ - 割り込み EP で AsyncIO を介して送信される CompleteAsyncIO の IOMemoryBufferDescriptor にアクセスする方法
割り込み EP に AsyncIO を使用してリクエストを送信しようとしています。このリクエストでは、action-> GetReference() を使用して完了 (CompleteAsyncIO) が呼び出されます。Ivars 構造を取得しました。USB デバイスから受信した割り込み完了データを期待していましたが、残念ながら関連データが表示されません。Wireshark でデバッグしようとした受信データは 16 バイトで、CompleteAsyncIO actualbytes も 16 バイトです。
IOMemoryBufferDescriptor を使用してデバイスから受信した割り込みデータを取得する正しい方法は何ですか?
OSAction CompleteAsyncIO の作成
USB 割り込み EP の IOMemoryBufferDescriptor 割り当て:
AsyncIO 要求を送信して EP に割り込みます
フレームワークによって呼び出される CompleteAsyncIO
AsyncIO を使用して送信した IOBufferMemoryDescriptor を使用して、割り込み完了のために USB デバイスから受信した実際のデータを取得するにはどうすればよいですか? アドレスを現在のプロセスのアドレス空間にマップする必要がありますか?
実際のデータ長のみが一致するUSBフィルターを備えたwiresharkを見ています。
Wireshark ログ a1 20 00 00 01 00 02 00 03 00 00 00 00 00 00 00 (16 バイト データ) "3029","32.105745","64.16.4","host","USB","40"," URB_INTERRUPT in (送信済み)" "3030","32.169565","64.16.4","host","USB","56","URB_INTERRUPT in (完了)"