問題タブ [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.
windows - Windows で Linux スタイルの /dev/sdXY でパーティションを開くにはどうすればよいですか?
Linux スタイル の Windows でパーティションを開くにはどうすればよい/dev/sdXY
ですか? 現在、パーティションのレイアウトを取得するために開いて\\\\.\\PhysicalDrive%d
呼び出しDeviceIoControl(IOCTL_DISK_GET_DRIVE_LAYOUT, ...)
、ファイルシステムを含む領域のオフセットとサイズを保存しています。私のコードでは、デバイスの IO 操作をパーティションへのオフセットでオフセットしました。
さらに、明らかに同期動作を削除するにはどうすればよいですか? Windows の物理ドライブの raw デバイスでの操作は非常に遅く、可能な場合は OS がキャッシュを行うことをお勧めします。
c - ioctl コマンドでユーザー空間から構造体をコピーすると失敗するのはなぜですか?
デバイス ドライバーを開発しており、IOCTL を利用する必要があります。残念ながら、ユーザー空間から構造体をコピーすることはできません。コードは次のとおりです (簡素化され、エラー処理が削除されています)。
構造
応用
カーネルモジュール
よろしく、
オリバー・ハナッピ
python - 操作は許可されていません
Pythonスクリプトでコマンドを実行したい
設定a+rw
しまし/dev/console
たが、通常のユーザーからスクリプトを実行すると:
fcntl.ioctl(console_fd, KDSETLED, SCR_LED) IOError: [Errno 1] 操作は許可されていません
通常のユーザーからそのスクリプトを実行する必要がある場合はどうすればよいですか?
linux - ネットワーク ioctl の man ページは何ですか?
ioctl SIOCGIFADDR を使用して、Linux のインターフェイスのアドレスを特定したいと考えています。これを行う方法を説明する Web リファレンスをいくつか見つけましたが、私のシステムには既にこれに関するリファレンスがあるはずです。SIOCGIFADDR とその仲間について説明している man ページ (またはその他のもの) はありますか? man netdevice
近いですが、問題のioctlがありません。
c++ - シリアル Mac OS X は、Arduino への USB で常にフリーズ/ロック/消える
AMSerial ライブラリと汎用 C (ioctl、termios) の両方を使用してXcodeで実行している C++ コードに問題があります。
新たに再起動した後、アプリケーションは正常に動作しますが、プログラムを「強制終了」した後、シリアル (と思います) が解放されません。
開いているファイルをチェックして/dev
、そこからシリアル USB への接続を切断しましたが、私の C++ はまだ USB ポートを開くことができません。
前述のライブラリを使用してポートを閉じても、ポートを無期限にブロックすることに関して、これを低レベルの Mac OS X の問題に絞り込みました。
状況を説明するために、USB ポートを介してArduino Duemilanoveにシリアルで 9600 ボーで数値を送信しようとしています。Arduino でシリアル モニタを実行するのはまったく問題ありませんが、C++ アプリケーションを実行すると、コンピュータがフリーズし、マウス/キーボードがフリーズすることがあります。ハード リセットが必要です。
この問題はどのように修正できますか? Mac OS X は USB フレンドリーではないようです。
windows - WindowsのデバイスにATAコマンドを直接送信しますか?
Windowsの物理ディスクにATAコマンドを送信し、デバイスから応答を取得しようとしています。
注:この場合、
IDENTIFY DEVICE
(0xEC)コマンドを送信します。デバイスは512バイトのデータブロックで応答します。(特に、ワード119のビット0(デバイスによるコマンドのサポートTRIM
)に関心があります)。
CreateFile
デバイスを開くために使用する必要があることを知っています。
しかし、この後、私は何をすべきかについて悩まされています。
0xEC
を使って送ることを考えました[DeviceIoControl][4]
:
しかし、これは完全に間違っています。DeviceIoControlに送信されるIoControlCodeは、マクロを使用して構築された有効なIO_CTLである必要があります。
SDKを見ると、有効なディスク管理制御コードがいくつかあります。例:
- IOCTL_DISK_CREATE_DISK
- IOCTL_DISK_GET_DRIVE_GEOMETRY
- IOCTL_DISK_GET_DRIVE_GEOMETRY_EX
- IOCTL_DISK_GET_PARTITION_INFO
- IOCTL_STORAGE_QUERY_PROPERTY
しかし、それらのどれもIDENTIFY DEVICE
コマンドではなく、それが返すものは何でも返しません。
したがって、コマンドを送信するための「生の」方法を使用する必要があると思います。
周りを検索して、文書化されていないIOCTLに出くわしました
これは、IOCTLの断片を分解すると、次のことを意味します。
inputBuffer
しかし、何を含める必要があるか、そのサイズ、何を含めるか、または必要なものについてのドキュメントはどこにもありませんoutputBuffer
。functionCode
また、 34(0x22)が何であるかを理解することもできません。
私の質問:生のATAコマンド(0xECなど)をATAデバイスに送信し、その応答を読み取るにはどうすればよいですか?
も参照してください
回答ピース
読み取り/書き込みアクセスでドライブを開きます。
IO制御コードATA_PASS_THROUGH_EX
で使用する入力バッファーとして構造を設定します。IOCTL_ATA_PASS_THROUGH
ドライブからの予想される512バイトの応答を保持するように出力バッファを設定します。
電話DeviceIoControl
:
ファイルハンドルを閉じます。
android - ioctlLOOP_SET_FDが失敗しました
ioctlLOOP_SET_FDが失敗しました
私はすでに同様の問題について尋ねていますが、ここにもう少し詳細を書きました
androidでubuntuを実行するために、rootstock rootstock -f kty1104-ThinkPad-Z60t -l kty1104 -p 1 --imagesize 2047M --notarball --seed linux-image-omap、lxde、build-essential、 openssh-server、tightvncserver、x11-xserver-utils
このimgは、sudo mount -o loop、noatime -t ext2 /home/kty1104/ubuntu.img / mnt sudo mount -t proc proc / mnt / proc chroot / mnt / bin/bashによってubuntuPCでchrootできます。
しかし、Androidでこのmount〜chrootコマンドを実行しようとすると、ioctl LOOP_SET_FDが失敗しました。マウントコマンドのファイル番号が正しくありません。chrootを強制すると、「セグメント障害」と表示されます。
問題はルートストックコマンドから来ていると思います誰かが私を助けることができますか?
c++ - C++ で open と i2c を使用する
私はそれを認識し、cpp オブジェクト内では機能open()
しioctl()
ません。関数内で呼び出された場合は操作を実行できmain()
ますが、クラス内では実行できません。ファイル システム呼び出しを行う別のオブジェクトを持つメイン ループで実行されているオブジェクトがあります。
したがって、基本的にメインループで開くことができます(ポインターの3を取得し、ioctl
成功します)。しかし、オブジェクトでそれを行うと、open に対して 0 が返され (これはおそらくエラーではありません)、ioctl は失敗します。
ios::
で動作しないため、 iostream オプションを使用できないことはわかっていますioctl
。cpp オブジェクト内で通常の ioctl を機能させるにはどうすればよいですか?
c - SIOCSIFADDRioctlを使用してIPアドレスを設定します
LinuxでIOCTLインターフェイスを使用してIPアドレスを取得および設定しようとしています。私はそれをうまく取得して設定することができます。IPアドレスを設定すると
ifconfig eth0
、適切なIPアドレスが表示されますが、システムが切断されます。つまり、システムはpingできません。これがIPアドレスを設定するための私のコードです。何か足りないものがあれば教えてください。
unix - AIXはSIOCGLIFCONFをサポートしていますか?
IPv4でネットワークアダプタのプロパティをプローブするには、SIOCGIFONF、SIOCGIFNETMASKなどを使用できます。HP-UXおよびSolarisでは、IPv6に相当するものはSIOCGLIFONF、SIOCGLIFNETMASKです。
AIXはこれらのioctl(おそらくAPARを使用)をサポートしていますか、それとも別の名前で呼ばれていますか?
標準ドキュメントへのポインタが役立ちます-グーグルで検索しましたが、何も見つかりませんでした。