問題タブ [low-level-io]
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 で DeviceIoControl() を使用して個々のセクター/クラスターを読み取る方法は?
Windows が休止状態になる準備をしているときにラップトップを落とした結果、ハード ドライブでヘッド クラッシュが発生しました。(次回は自由落下センサーを備えたハードドライブやラップトップを入手するように教えてくれます。) とにかく、SpinRiteを実行してデータを回復しようとすると、ディスク上のすべてのスペアセクターがすべて使用されてしまいます。これまでの回復可能なセクター。SpinRite は現在も進行中ですが、使用するスペア セクタがなくなるため、すべての不良セクタがどこにあるかを教えてもらう以外は、無駄な作業になると思います。
いずれにせよ、ハード ドライブからデータを回収するためのアプリケーションを作成する予定です。過去の最適化への取り組みから、FSCTL_GET_RETRIEVAL_POINTERS を使用して、特定のファイルの論理クラスター番号を把握できることを知っています。
その実際のクラスターのセクターを読み取るにはどうすればよいですか? ディスク、ファイル、およびボリュームのデバイス制御コードの MSDN のリストを掘り下げてみましたが、実際のクラスター データに到達する方法として思い浮かんだものは何もありませんでした。
その低レベルでわざわざ読もうとする必要さえありませんか?代わりに SetFilePointer() および ReadFile() 呼び出しを実行して、適切なクラスター サイズのオフセットをファイルに取得し、クラスター サイズのチャンクを読み取る必要がありますか?
読み取ろうとしているファイルに不良セクタがある場合、NTFS はファイル全体を不良としてマークし、今後そのファイルにアクセスできなくなりますか? その場合、NTFS にファイルを不良または無効としてマークしないようにするにはどうすればよいですか? (HD には再マッピングするスペア セクタがなくなっていることに注意してください。)
*nix の知識を振り払って、 /dev/ から読み取る方法を理解する必要がありますか?
更新: 私は自分の質問に対する答えを見つけました。:-) 解決策は、ファイル ハンドルではなくボリューム ハンドルで SetFilePointer() と ReadFile() を実行することです。
windows - NTFS 論理クラスターが空いているかどうかを確認する方法は?
NTFS ボリューム上の未使用のクラスターをすべて読み取るプログラムを作成したいと考えています。(誤って切り捨てられたファイルからデータを回復しようとしています)。
このページによると、ボリュームハンドルで SetFilePointer() と ReadFile() を呼び出して、ボリューム上の各論理クラスターを通過できます。しかし、どのクラスターがファイルによって使用されていて、どのクラスターが空いているかを知るにはどうすればよいでしょうか?
c# - Windows で OPTICAL ブロック デバイスに直接アクセスする方法
質問は、 How do I read a disk directly with .Net? に似ています。ただし、直接アクセスが必要なドライブは CD-ROM または DVD-ROM ドライブです。これらのドライブは物理ドライブとして含まれておらず、上記のトピックで引用されているように、 DeviceStreamクラスまたはCreateFile Win32 API メソッドを使用してアクセスすることはできません。
Windows カーネルは、接続されているさまざまなブロック デバイスの内部デバイス マーカーを自動的に作成します。最初の CD-ROM ドライブは\Device\CdRom0として表示されますが、これをCreateFile()経由で開こうとすると失敗します (明らかにhttp://support.microsoft.com/kb/235128によると)。
管理されていないアプリケーションがこれらのブロック デバイスにネイティブにアクセスできることを考慮すると (任意の CD 書き込みソフトウェア、Windows 用の DD、Cygwin [/dev/scdN 経由])、これらのブロック デバイスにアクセスするためのプログラムによる方法はありますか (できれば .NET で使用可能)?
python - python.select、リストを引数として送信
r=select([f,s],[],[])[0][0].
これは、f AND sが指すファイルの準備ができるまで、またはf OR sの読み取りの準備ができるまで待つことを意味しますか?
port - PC での LPT I/O アドレス マッピング
PC のレガシー パラレル ポート アドレスをマッピングできる USB から LPT へのアダプターについて聞いたことがあります。そのようなマッピングのレベルは何ですか? つまり、「in」または「out」x86 アセンブラー命令 (Windows または Linux) を使用してアダプターのピンにアクセスすることは可能ですか? そうでない場合、アドレスがマッピングされているとはどういう意味ですか? これはどのようなエミュレーションですか?ありがとう。
マルシン
c - 低レベルCI/O:あるファイルから読み取って別のファイルに書き込むと、無限ループに陥ります
低レベルのI/O(read()、write()、lseek())とperror()の使用のみを許可する割り当てに取り組んでいます。
必要なinファイルとoutファイルを正しいアクセス許可で開くことができましたが、出力すると、inファイルの内容が無限ループになります。以下のスニペットを参照してください...
コードからエラートラップをいくつか削除しました。変数が初期化され、includeステートメントが存在すると想定できます。
c - open() が成功した後、read() でプログラムが停止する
次のコードがwhile(chars = read(fd, buff, BUFF_SZ)) > 0)
. 次のprintf
行の は呼び出されておらず、すぐ上の行は呼び出されています。ファイル記述子は0
、有効な値である を返しています。
問題の行の後に何もトリガーされておらず、この行の前ではすべてが正常に見えるため、これをデバッグする方法さえわかりません。
コンパイル可能な完全なコード:
encoding - プログラムは実際に文字入力をどのように受け取るのでしょうか? スキャンコードから最終的な生の入力ビットまで
したがって、私の質問は簡単です: ユーザーが (物理キーボードまたはその他の方法で) 文字キーを「入力」した後、プログラムは生の入力ビットをどのように受け取るのですか?
つまり、プログラムが生のビットとして受け取った後の文字エンコーディングがどのように機能するかは知っていますが、そもそもそのビットシーケンスがどのように表示されるかについては明確ではありません。
私は少し読んでいましたが、これは私のGoogle-fuの難しい検索であることが判明しました. OS が入力デバイス (通常はキーボード) からスキャン コードを受け取り、これを文字マッピングとキーボード レイアウトを使用してエンコーディングにマップし、結果のビット シーケンスをプログラムに渡すようです。私は正しいですか?もしそうなら、私にとって唯一欠けている部分はこれです:
キーボード レイアウトは、スキャン コードが対応する文字をどのように定義しますか? Unicode コード ポイントを使用していますか? OS固有の内部テーブル?
次に、プログラムは、コンパイル時に (OS からの) 入力を期待する文字エンコーディングを定義しますか? まったくですか?
arm - Qemu を使用した ARM アセンブリ
arm-linux-gnueabi-as と qemu を使用して実行されるコードをインターネット全体で検索しました。整数値を出力します。文字列から。ルーチンが役立ちます。