問題タブ [ioctl]
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.
mono - Linux ioctl を Mono で使用する
Mono フレームワークで ioctl コマンドを実行しようとしていますが、探しているものが見つかりません。
カーネル モジュールを持つ DVB カードにコマンドを送信しようとしています。誰かがこれを行う方法を明確にリンクまたは説明できることを願っています。カーネル モジュールを使用した Mono の例はどれも役立つと思います。
c - unlocked_ioctl と通常の ioctl の比較
私のドライバーの file_operations 構造には、次のものがあります。
つまり、使用される ioctl フィールドはありません。Big Kernel Lock を回避し、同期せずに device_ioctl() に入るには、これで十分ですか? または、コードのユーザー空間部分でも ioctl() 呼び出しを変更する必要がありますか?
c# - IOCTL_DVD_* 制御コードを使用して C# から DeviceIoControl を呼び出す
IOCTL_DVD_*
制御コードの C# から DeviceIoControl を呼び出そうとしています。多くの情報を読み、多くの例を試してみましたが、あまり進歩していません。
私が最終的にやろうとしてDVD_LAYER_DESCRIPTOR
いるのは、現在 DVD ドライブにあるメディアに関する構造を取得することです。CreateFile
DVD デバイスで正常に呼び出すことができますDeviceIoControl
が、制御コードを使用して呼び出そうとするとIOCTL_DVD_START_SESSION
、成功コードが返されますが、sessionId 値が正常に返されないようで、常に 0 が返されます。レイヤーの説明を取得しようとするとIOCTL_DVD_READ_STRUCTURE
失敗します。つまり、関数が失敗するか、成功を返しますが、空白の出力構造が返されます。)
同様の呼び出しを行う C コードを見つけた後、(Visual C++ 2008 Express Edition を使用して) このコードをコンパイルすることができ、DVD_LAYER_DESCRIPTOR
問題なくセッションを開始し、.
C# の問題は、外部関数の定義方法とパラメーターのマーシャリング方法に関連しているようです。そして、渡されて返されるさまざまな構造がどのように定義されているか。
www.pinvoke.net で定義方法を確認し、指定されたサンプル コードと定義の一部を使用しましたが、上記で概説したのと同じ問題が残っています。問題の一部は、IOCTL 制御コードごとにパラメーターが異なり、ほとんどが構造体ですがIOCTL_DVD_START_SESSION
、出力値は 32 ビット整数であることです。これらのさまざまなケースを処理するために、C# の extern メソッドをどのように定義できますか? また、適切なサイズのメンバー型で定義されたさまざまな構造体は、C コードと C# コードの間でサイズが異なることを示していますが、個々のメンバーは同じサイズです???
次のようなプログラムを使用して、C バージョンDeviceIOView
の C コードと C# コードの両方によって行われた呼び出しを監視するとIOCTL_DVD_START_SESSION
、3 のセッション ID が返され、DeviceIOView は、C# コードの実行時に返されるデータも 3 であることを示します。 C# コードでは 0 しか表示されないため、返されるパラメーターの一種のマーシャリングの問題
C# から DeviceIoControl を呼び出して DVD 情報にアクセスする方法について、アイデアや実際のサンプル コードを持っている人はいますか? (構造と機能がどのように定義され、使用されるべきかを示します。) 有用な Web サイトへのリンクやその他のアドバイスをいただければ幸いです。
(Visual C# 2008 Express Edition、.NET 3.5 で開発中)
N・ジョンズ
サンプルコード (追加)
このコードを実行するには、コマンド ラインで DVD ドライブのドライブ文字を指定する必要があります。
出力
最初のバージョンは、指定されたエラー コードで両方の呼び出しに失敗します。
122 - ERROR_INSUFFICIENT_BUFFER
87 - ERROR_INVALID_PARAMETER
2 番目のバージョンは成功したように見えますが、SessionId の値は初期化された値である -10 です。(MSDN から、この値は -1 から 3 の間である必要がありますか?) 終了セッションも成功します。
[ 注: 2 番目のバージョンの開始セッションは、他のすべての呼び出しでのみ成功するようです。理由はわかりませんが、エラー処理は再試行する必要があるため、これは私が持っている C コードの問題でもあるようです。]
linux - strace へのカスタム構造体型の追加
ioctl syscalls を介してカーネル ドライバーと対話するユーザー モード共有オブジェクトをリバース エンジニアリングしようとしています。カーネル ドライバーの ioctl インターフェイスの定義を含むヘッダー ファイルがあります (つまり、ioctl コマンド番号の #defines と、ioctl に送信されるさまざまなデータの構造体定義)。
strace には、システム コールに渡されるユーザー ポインターを逆参照する機能があることがわかりますが、ioctl に渡されるカスタム構造体を逆参照することはできません。ポインタアドレスだけでなく、意味のあるデータが ioctl に渡されるように、自分の定義を strace に追加する簡単な方法はありますか?
strace のソースがあり、正常にコンパイル/インストールしましたが、独自のヘッダーをインクルードしようとしても効果がありませんでした。
macos - osxの/devでキーボードを見つける方法
linux / ubuntuでは、キーボードとマウスのデバイスは/ dev / input / by-path /にあります。キーボードデバイスはosxのどこにマウントされていますか?USBキーボードを追加しましたが、/devフォルダーにデバイスが追加されませんでした。それはどこかにありますか、それとも完全にアクセスできませんか?ありがとう。
編集:私はlibusb:
046d:c315(バス26、デバイス3)とアップルの開発者ツールのusbプローバーを使用してキーボードに関する情報を得ることができました...
しかしそれらのどれも/dev特別ファイルまたは別の方法について言及していませんアクセスします。
ruby - rubyでioctlを介してessidを取得する
ワイヤレスツールに依存することを避けるために、ioctlを使用してデバイスから直接essidを取得したいのですが、Cではこれは問題になりませんが、Rubyではまったく異なります。
問題は、ioctlの入力/応答として使用されるwireless.hからの構造体に従うことです。
ポインタ部分は、メモリ領域の有効なアドレス、バイト単位の長さ、フラグフィールドの順である必要があります。Array#packとbit-struct gemを試してみましたが、まだ解決策が見つかりません。
このメモリポインタの問題を回避する方法はありますか?
c++ - Linux ioctl -> 現在の IP が dhcp によって取得されたかどうかを確認する方法
現在のインターフェース設定を取得するためにソケット ioctl をいじっています。すでに IP、インターフェース名、ネットマスクを取得し、インターフェースがアップかダウンかを確認できます (SIOCGIFCONF、SIOCGIFNETMASK、および SIOCGIFFLAGS に対して IOCTl を実行するだけです)。
現在の IP アドレスが dhcp を介して取得されたものか、静的なものかを確認する方法を探しています。
必要なものはすべて /etc/network/interfaces で確認できますが、プログラムでそれを行う方法を探しています (この単語は存在しますか?)。
誰かがこれについて何か洞察を持っていますか?
もう1つ、私はLinuxに取り組んでいます(今のところ)。
乾杯
perl - 「デバイスに不適切な ioctl」
AIX ボックスで Perl スクリプトを実行しています。
スクリプトは特定のディレクトリからファイルを開こうとしますが、ファイルに読み取り権限がないため、ファイルの読み取りに失敗しますが、別のエラーが表示されますinappropriate ioctl for device
.
のようなことを言うべきではありませんno read permissions for file
か?
このinappropriate ioctl for device
メッセージはどういう意味ですか?
どうすれば修正できますか?
編集:これは私がやったときに見つけたものですstrace
。
terminal - How do you get the terminal size in Go?
How do I get the terminal size in Go. In C it would look like this:
But how to i access TIOCGWINSZ in Go
macos - FreeBSD の make_dev() 関数に相当する OS X はありますか?
FreeBSD から OS X にいくつかのコードを移植しようとしています。コードはかなり低レベルでありmake_dev()
、ioctl()
.
将来、アップストリームの変更をより簡単にマージできるように、コードを可能な限りオリジナルに近づけたいと考えています。私の質問は、OS X でそのようなデバイス ファイルを作成する方法はありますか? ウィキペディアによると、イディオムはプラットフォームでサポートされています。誰かが私を正しい方向に向けることができますか?