問題タブ [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.

0 投票する
1 に答える
376 参照

c++ - IOUSBHostPipe::CompleteAsyncIO コールバックを作成するには?

USB デバイスと通信する SystemExtension を作成しています。私の最初の計画はTransfer、必要なIOMemoryDe​​scriptorTransferを割り当てるクラスを作成し、クラスが通信するインターフェイスを渡すことです。AsyncIOの完了によるコールバックをクラスに作成したい思います。複数の読み取りをキューに入れる必要がある場合は、このクラスのインスタンスをさらに作成できます。コールバックでは、データを解凍して別のreadを送信します。TransfercompleteCallback

Transferでクラスを作成しOSTypeAlloc(Transfer)ます。

私が直面している問題は、OSAction の作成が次のスタック トレースで失敗することです。

代わりに、usb デバイスが接続されたときにシステムによってインスタンス化されるクラスで定義、実装、および作成されるようにコールバックを移動すると (このクラスは plist で key で指定されますIOUserClass)、OSActionオブジェクトの作成は正常に機能します。

への呼び出しは、 へのポインタを への最初の引数として渡すことIOUSBHostInterface::Openによって行われます。これでいいのでしょうか?または、オブジェクトが からコールバックを受け取るオブジェクトと同じである必要がありますか。IOUserClassIOUserClassOpenIOServiceAsyncIO

0 投票する
1 に答える
301 参照

macos - USB DriverKit の Start メソッドでは呼び出されない

DriverKit dext を作成しており、System Extension フレームワークを使用してアクティブ化できます。com.apple.developer.driverkitがtrue に設定されているusbの資格があり ます.com.apple.developer.driverkit.transport.usbは辞書として追加されていますが、サブ値はありません(空です)。

USB デバイスが接続された後、dext の Start メソッドで呼び出されることを期待していましたが、呼び出しが表示されません。

ステップ/構成が欠落しているかどうか、何か考えはありますか?

0 投票する
1 に答える
3450 参照

swift - システム拡張機能またはネットワーク拡張機能を強制終了するには?

だから私は Swift で Network Extension を使って macOS アプリを構築しています。いくつかのテストの後、拡張機能はシステム内のプロセスとして残ります。アプリを停止することも強制終了することもできますが、Network Extension を停止、強制終了、またはアンロードすることはできません。ネットワーク拡張機能は何度も登場します。

macOS を再起動しましたが、ネットワーク拡張機能がまだプロセスとして残っています。システムから完全に削除するにはどうすればよいですか?

0 投票する
1 に答える
138 参照

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 を使用して送信した IOBufferMemoryDe​​scriptor を使用して、割り込み完了のために 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 (完了)"