問題タブ [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 投票する
4 に答える
3780 参照

objective-c - Core Foundation /IOキットの新しいマルチGPUAppleラップトップでCGDirectDisplayIDの変更の問題を解決するにはどうすればよいですか?

Mac OS Xでは、すべてのディスプレイに一意のCGDirectDisplayID番号が割り当てられます。)を使用するCGGetActiveDisplayList([NSScreen screens]、それらにアクセスすることができます。Appleのドキュメントによると:

表示IDは、プロセス間およびシステムの再起動後も保持でき、特定の表示パラメーターが変更されない限り、通常は一定のままです。

新しい2010年半ばのMacBookProでは、Appleは自動切り替えのIntel/nVidiaグラフィックスの使用を開始しました。ラップトップには、2つのGPU、低電力のIntelと高電力のnVidiaがあります。以前のデュアルGPUラップトップ(2009モデル)には自動GPU切り替えがなく、GPU切り替えを行うには、ユーザーが設定を変更し、ログオフしてから再度ログオンする必要がありました。古いシステムでもGPUは1つしかありませんでした。

2010年半ばのモデルには、ディスプレイが1つのGPUから次のGPUに切り替わるときにCGDirectDisplayIDが同じままにならないという問題があります。例えば:

  1. ノートパソコンの電源がオンになります。
  2. 内蔵LCDスクリーンはIntelチップセットによって駆動されます。ディスプレイID: 30002
  3. 外部ディスプレイが接続されています。
  4. 内蔵 LCDスクリーンはnVidiaチップセットに切り替わります。表示IDの変更: 30004
  5. 外部ディスプレイはnVidiaチップセットによって駆動されます。
  6. ...この時点で、Intelチップセットは休止しています...
  7. ユーザーが外部ディスプレイのプラグを抜きます。
  8. 内蔵LCDスクリーンがIntelチップセットに戻ります。表示IDが元に戻ります:30002

私の質問は、GPUの変更によって変更されたときに、古いディスプレイIDを新しいディスプレイIDに一致させるにはどうすればよいですか?


について考えた:

ディスプレイIDが2だけ変わることに気づきましたが、これがすべての新しいMacBook Proに共通するのか、それとも私のものだけなのかを判断するのに十分なテストMacがありません。とにかく、「互いに+/- 2のディスプレイIDをチェックするだけ」が機能する場合は、一種の応急修理です。


試した:

CGDisplayRegisterReconfigurationCallback()表示が変更される前後に通知する、には、一致するロジックがありません。登録されているメソッド内にこのようなものを入れても機能しません。

上で起こっていることは次のとおりです。

  1. 表示設定が変更される前にoldInfoDictをキャッシュしています。
  2. 表示設定が変更されるのを待っています
  3. 次に、を使用してoldInfoDictnewInfoDictと比較します。IODisplayMatchDictionaries()
  4. IODisplayMatchDictionaries()BOOLを返します。「はい」は同じか、「いいえ」は異なります。

残念ながら、IODisplayMatchDictionaries()同じディスプレイがGPUを変更した場合、YESは返されません。比較している辞書の例を次に示します(IODisplayLocationキーを見てください)。

ご覧IODisplayLocationのとおり、GPUを切り替えるとキーが変わるため、IODisplayMatchDictionaries()機能しません。

DisplayProductID理論的には、キーとキーだけを比較できDisplayVendorIDますが、エンドユーザーソフトウェアを作成していて、ユーザーが2つ以上の同一のモニターを接続している(つまり、両方に同じDisplayProductID / DisplayVendorIDがある)状況が心配です。 。言い換えれば、それは潜在的なグリッチに開かれた完全ではない解決策です。


どんな助けでも大歓迎です!:)

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

c - macosxでのユーザーアクティビティの検出

関数「IOPMSchedulePowerEvent」を使用してスリープまたはウェイクイベントをスケジュールし、デーモンを「IORegisterForSystemPower」に登録して電源状態の変更を受信します。すべてが正常に動作します!

システムがスリープ状態になり、後でスケジュールされた時間にウェイクアップすると、デーモンが何らかの作業を行い、その後、システムは再びスリープ状態になるはずです。

今私の質問:

  1. システムがユーザーまたはスケジュールされた時間によって起動されたかどうかをどのように検出できますか?

  2. ユーザーが現在システムを使用している場合、デーモンがシステムをスリープモードにする必要がないことをどのように検出できますか?

ありがとうNobik

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

iphone - IOKit.frameworkを使用してiPhoneでUSBデバイスを見つけようとしています

外部デバイスと通信するために USB ポートが必要なプロジェクトに取り組んでいます。ネットで例 (Apple と /developer/IOKit/usb の例) を探し、他の例を試してみましたが、デバイスが見つかりません。

私のコードでは、関数が関数で次の反復子 (実際にはポインター) を探す場所でブロックしていますgetNextIterator。しかし、良い値を返すことはないため、コードはブロックされています。ところで、私はツールチェーンを使用しており、プロジェクトに IOKit.framework を追加しました。私が今欲しいのは、USB バス上の誰かと通信したり、ping を実行したりすることだけです! ブロックしています...変数が常に=から0であるため、ループFindDeviceに入ることができません...小さなMacプログラムでコードをテストしましたが、動作します...whileusbDevice

これが私のコードです:

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

iphone - iPad (iphone os) カーネル拡張

以前、カーネル拡張機能を含む Mac OSX 用のアプリケーションを作成しました。実際のハードウェアを駆動するのではなく、カーネル内の IOKit サービスです。ここでのタスクは、iPad でアプリケーション全体の移植が可能かどうかを判断することです。これは基本的に、iPad 用にカーネル拡張を記述できるかどうかを意味します。

私はこれまで iPhone OS 開発の経験がまったくなかったので、まったく無知です。しかし、私が聞いたところでは、iPhone OS ベースのデバイス、特に iPad は非常に閉鎖的なプラットフォームです。では、アプリケーション パッケージの一部として iPad 用のカーネル エクステンションを開発して配布することは可能ですか? 特定の Apple 開発者プログラムに署名する必要がありますか? 他に知っておくべきことはありますか?

ありがとう。

0 投票する
3 に答える
5734 参照

iphone - iPhoneのバッテリー残量を取得する

簡単な質問があります。iPhoneのバッテリー残量を取得するにはどうすればよいですか?

簡単ですか?ただし、少し問題があります。 UIKitを使用できません。ここに私がこれまでに書いたものがありますが、うまくいかないと思います:

バッテリーレベルを取得するには、 IOKitに頼る必要があると確信しています。私のアプリケーションは、UIKit を使用できない低レベルのアプリケーションであるため、UIKit を使用しません。私が使用しているフレームワークは次のとおりです。

代替テキスト http://img837.imageshack.us/img837/1829/screenshot20100718at211.png

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

c++ - IOKit で定数または列挙型の文字列表現を取得できますか?

IOKit で定義されている定数と列挙型の文字列表現を取得する方法はありますか?

私はIOKitに飼料を作り、USBデバイスが返すいくつかのパラメータをコンソールからログアウトしようとしています。しかし、私は数字のリストになってしまいます。これらの意味をリストする別の方法はありますか?

たとえば、IOHIDKeys.h

またはさらに悪いことに(私にとって)IOHIDUsageTables.hで、16進値を調べてヘッダーで見つける必要があります...例:

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

xcode - iokitフレームワークを使用してMac OS Xでプログラムでブロックデバイスを作成する

私は mac os x プログラミングの完全な初心者なので、これを理解するのにいくつか問題があります。mac os x で通常のドライブとして機能するブロックデバイスを mac os x leopard で作成したいのですが、その後、インストール中に作成したドライブに従って、そのデバイスまたはドライブのジオメトリ。私はxcodeを使用していて、ドライバー開発をしたいので、iokitフレームワークを使用しています。このタスクを達成するためにどのヘッダー ファイルと API を使用すればよいか教えてください。どんな助けでも大歓迎です。私を助けてください!!!アイアンハイド707。

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

ios - iPod/iPhone USB 製品 ID

すべての Apple USB 製品 ID のリストはどこかにありますか? IOKit を使用して、取り付けられた/取り外された USB デバイスの通知を取得し、デバイスを識別したいと考えています。現在、デバイス名を取得して「iPod」と「iPhone」を検索していますが、アクセサリである可能性があるため(またはそうである可能性があるため)、実際には安全ではないと思います。

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

xcode - Mac OS X Leopard で IOBlockStorageDriver を作成する

mac os x leopard で単純な IOBlockStorageDriver を作成するにはどうすればよいですか。どんな助けでも大歓迎です。

0 投票する
3 に答える
3862 参照

objective-c - IOKit IOReturn エラー コードを文字列にマッピングする

エラー 0x10 が発生したときに、そのエラー コードを理解できるようにしたいと考えています。IOReturn.h と mach/error.h を調べるのは特に便利ではありません。0x22 エラー コードが表示されたとき、私は迷っていました。これは本当にばかげた質問ですが、IOReturn エラー コードをエラーを説明する String にマップできる error2String のような関数はありますか?