問題タブ [iokit]

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 に答える
325 参照

cocoa - IOSSharedDataQueue の例

IOSharedDataQueue を使用するためのサンプル コードはどこにありますか (ユーザー空間からカーネル空間にデータを送信したい)。

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

c - IOKitを使用してIODeviceTreeパスを取得する

IOKitフレームワークを使用してデバイスのIODeviceTreeパスを取得しようとしています。IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/SATA@B/AppleMCP79AHCI次のコードを使用して、デバイスのIOServiceパス()を取得できます。

ただし、IODeviceTree平面内のデバイスのパスを取得する必要があります。平面ではIODeviceTree、パスはのようになりますIODeviceTree:/PCI0@0/SATA@B。単純に置き換えkIOServicePlaneてみましkIODeviceTreePlaneたが、何も返されませんでした。私はの経験がないIOKitので、私がここでやっていることは明らかなことだと確信しています。

ありがとう

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

xcode - Kexts で Dylib をリンクしますか?

(IOKit) libusb と jpeglib を使用して USB ベースのフレームバッファを実装する OS X 用の kext を作成しました。これらはどちらも dylib であり、何らかの理由で XCode で適切にリンクされず、OS が kext をロードしようとしたときに依存関係が解決されません。

この全体の背景は、Samsung がセカンド モニターとして機能する LCD 額縁を製造していることです。唯一の問題は、それが DisplayLink やその他の既知のプロトコルではないことです。Windows 専用のドライバーはカスタム ヘッダーを吐き出し、各フレームは JPEG としてエンコードされ、デバイスに送信されます。私の実装では OS X でこれを行いますが、libusb はフレームバッファ デバイスであり、起動時にロードする必要があるため、libusb を使用しました。ホットプラグ検出や IOKit の USB デバイス要件よりも、ディスプレイの駆動にもっと対処したかったのです。

助けてくれてありがとう!あなたたちは素晴らしいです。

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

macos - AppleUSBCDCACMData IOClass の IOServiceMatching: 異常ですか?

次のコード スニペットを使用して、Mac 内のすべての AppleUSBCDCACMData IOClass デバイスのリストを抽出しようとしています (Apple サンプル コードの小規模な変更のみ)。このデバイスは、7 つの /dev/cu.usbmodemx デバイス ノードを作成する USB モデムです。

私の観察では、IOServiceGetMatchingServices によって返された反復子は空です (つまり、反復するものは何もありません)。しかし、「AppleUSBCDCACMControl」をパラメーターとして IOServiceMatching に渡すと、7 つの要素のリストの反復子が取得されます。これは IORegistryExplorer ビューに準拠しています。 ここでIORegistryExplorer のスクリーンショットを参照してください。http://tumblr.deepak.dk/post/1666218968/ioregistryexplorer 私はいくつかの非標準の独自の IOClasses でも​​同じ問題に直面したためです。これは、AppleUSBCDC ドライバーをロードする任意の USB モデム (3g/HSDPA) を使用して再現できます。

私は何を間違っていますか?

0 投票する
2 に答える
1361 参照

macos - IOServiceGetMatchingServicesを使用したOSXストレージデバイスリストの取得

OSXシステム上の物理ストレージデバイスのリストを取得する必要があります。kIOStorageClassキーを使用するIOServiceGetMatchingServicesは、すべてのハードウェアストレージデバイスではなく、すべてのボリュームのリストを提供します。どうすればよいですか?

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

cocoa - Cocoa は電源アダプタのステータスを取得します

私は現在バックアップアプリケーションに取り組んでおり、最近機能を追加するという多くのリクエストを受け取りました.その一番上にあるのは、タイムマシンのように「バッテリー電源でバックアップする」のようなチェックボックスを追加することです.

では、電源アダプタの状態 (プラグインとプラグイン) を取得する方法はありますか? iMac などのデスクトップ Mac を持っていれば、おそらく常にプラグインされていると思います。したがって、コンピュータがポータブルかどうかを検出する手段が必要です。

IOKit は注目すべきライブラリであると思いますが、とにかくそのフレームワークにはほとんど存在しないドキュメントを見つけることができませんでした。では、古い Carbon フレームワークなので、その電源状態が変化したときに呼び出されるコールバックを登録する方法はありますか? そうすれば、このチェックボックスの機能を適切に実装できます。

この件を明確にするための助けをいただければ幸いです。

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

macos - Mac OS X カーネル拡張でキャッシュするために OS によって再利用されるメモリ バッファを割り当てるにはどうすればよいですか?

私が読んだドキュメントと xnu ソースに基づいて、Mac OS Xは Unified Buffer Cache (UBC) を使用してファイルI/O をキャッシュすることを理解しています。UBC は、使用可能な RAM に基づいて可能な限り大きくなりますが、UBC ページは、メモリが不足したときに最初に犠牲になるページの一部です。

私のドライバーでは、ディスク上のさまざまなメタデータを扱います。UBC や同様のメカニズムを使用して、このデータの MRU キャッシュを維持し、速度を向上させたいと考えていますが、カーネルが必要なときにいつでもそのメモリを取り戻すことができるようにしたいと考えています。ただし、メタデータはファイルデータを表していないため、UBC のドメインに直接分類されません。使用できる下位レベルのメカニズムはありますか、またはバッファー自体を処理する UBC の一部のみを使用できますか?

私は現在、HFS+ のソース コードを調べて、ファイルシステムのメタデータをキャッシュするかどうか、およびその方法を調べていますが、あまり成功していません。

もちろん、主な代替手段は、キャッシュ用に特定のメモリ領域を予約し、独自の LRU カリングを行うことです。固定キャッシュ サイズを選択するか、ある種のヒューリスティックを使用することができますが、RAM が豊富な場合はメモリの使用量が少なすぎ、そうでない場合はメモリが多すぎます。

アップデート:

さらに検索したところ、 のインスタンスがオプションIOBufferMemoryDescriptorで作成される可能性があることがわかりました。これにより、破棄するメモリ「公正なゲーム」をマークするためにそれをkIOMemoryPurgeable呼び出すことができます。IOMemoryDescriptor::setPurgeable()私はそれを試して、結果で質問を更新します。

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

objective-c - IO キットから IOPMLib.h をインポートするには?

次のコードで Mac を起動しようとしていますが、

インポートする適切なフレームワーク/ヘッダーを見つけるのに苦労しています。

私は使用して#import <IOKit/pwr_mgt/IOPMLib.h>いますが、コンパイラはまだ文句を言います。助言がありますか?ありがとう。

編集

次のエラー メッセージが表示されます

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

iphone - Cocoaで接続されているすべてのiDeviceを一覧表示

バックアップアプリに一種のバックアップ機能を実装したいのですが、デバイスでは実行できないため、Macで実行する必要があります。接続されているiDevice(主にiPhoneとiPod Touch)をコンピューターに一覧表示するにはどうすればよいですか?接続されているすべてのUSBデバイスの膨大な配列を調べて、Appleベンダーコードが含まれているデバイスを確認できると思いますが、もっと良い方法があることはわかっています。

また、これにはIOKitを使用する必要があると思いますが、これを使用したことがないので、サンプルコードと、正しい方向を示すための役立つヒントをいただければ幸いです。次に、デバイス名を取得してデバイス上のファイルにアクセスする必要がありますが、デバイスを理解した後は簡単になると思います。

0 投票する
4 に答える
6309 参照

c - I/O キットを使用したシリアルから USB デバイスへのアクセス

次の問題があります: USB 経由で位置データを NMEA データとしてライブで送信できる Wintec WBT-202 GPS デバイスがあります。usbser.sysこの USB の内部では、標準ドライバーを使用して Windows で実行される単なる USB からシリアルへのブリッジです。

私の問題は、Mac OS X で動作させることです。

USB GPS マウスのハードウェアには、USB インターフェースも担当する Atmel AT91SAM7S256 チップが使用されています。

Mac OS X での問題は何も起きていません。このデバイスにアクセスできるようにするために作成された新しいキャラクター デバイスはありません/dev

Windows では、標準ドライバーusbser.sysが使用されます。vendorID と productID をこのドライバーにポイントする .inf ファイルだけがあります。Windows で Snoopy Pro (USB スニッフィング ソフトウェア) を使用すると、デバイスが適切に初期化されると、データが ASCII NMEA 文字列として送信されることがわかります。

質問 1usbser.sys Mac OS X に相当するものはありますか? はいの場合、コードレス kext を使用してドライバーのマッチングが適切に行われるようにすることはできますか?

これがうまくいかない場合は、ユーザー空間から IOKit を使用して、デバイスとの間でメッセージを送受信します。Apple のドキュメントを完全には理解していないため、これがどのように機能するかについてはまだ疑問があります。USB デバイスが接続されている場合は、ドライバーのマッチングが行われます。ドライバーが見つからない場合はどうなりますか。

質問 2ユーザー空間からカーネルで「対話」できる汎用 USB ドライバーがロードされている可能性はありますか? 適切なドライバーがロードされていることを確認するにはどうすればよいですか?

質問 3 WWDC08 で「I/O Kit 入門」セッションがあったのを見ましたが、このセッション ビデオにアクセスする方法はありますか?

USBProbe のログと I/O レジストリの抜粋を追加しました。

まともなチュートリアルを提供するドキュメントをどのように開始できるかについてのコメントは大歓迎です。

Mac OS X Internals - A System Internals by Amit Singh、Apple のドキュメント「Getting started with I/O Kit」、「I/O Kit Fundamentals Guide」、および USB プライベート データ サンプルを調べました。

付録

USBプローブ

IO レジストリ

USB プローブ ログオン デバイス接続

編集: デバイスの接続後に console.app からのログ ファイルの抜粋を追加しました