問題タブ [hdd]
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-vista - Vista Ultimate 64ビットでHDD(およびボリュームではない)シリアル番号を取得します
以前、WMI を使わずに HDD のシリアル番号を取得する方法を探していたところ、見つかりました。私が見つけて StackOverFlow.com に投稿したコードは、XP と Vista の両方の 32 ビット Windows で非常にうまく動作します。問題が発生するのは、64 ビット OS (具体的には Vista Ultimate 64) でシリアル番号を取得しようとしたときだけです。コードは常に String.Empty または Space を返します。
これを修正する方法を知っている人はいますか?
編集:
Dave Cluderay が提案したツールを使用したところ、興味深い結果が得られました。
Windows XP SP2 32 ビットでの DiskId32 からの出力は次のとおりです。
また、DiskId32 は Windows Vista Ultimate 64 ビットで実行されます。
Vista では情報が少ないことに注意してください。また、シリアル番号が返されないことに注意してください。また、もう 1 つのツールである EnumDisk は、Windows XP の「ATA」ではなく、Vista のハード ディスクを「SCSI」と呼んでいます。
何か案は?
編集2:
EnumDisks からの結果を投稿しています。
Windows XP SP2 32 ビットの場合:
また、Vista 64 Ultimate では:
c# - WMIを介してCPUIDを取得しようとしたときに生成された「見つかりません」例外
私はこのコードを使用してプロセッサIDを取得しています:
Windows732ビットのVisualStudio2008を実行しています。残念ながら、mc.GetInstances()メソッドの呼び出しによって「見つかりません」という例外が発生しています。
これが同様のコードです(HDDシリアルをフェッチします):
このコードも失敗します。「disk.Get()」メソッドは「無効なクラス」例外を発生させます。
このコードをUACをオフにしてからオンにして実行しましたが、何も役に立ちません。
私は何が間違っているのですか?
java - java.io を使用したネイティブ Java 配列の効率的なシリアル化
Javaシリアライゼーションについて質問があります。
FileOutputStream と BufferedOutputStream を Dataoutputstream と組み合わせて使用して、サイズ int[] array = new int[2^28] の 10 個の配列をハード ディスクに書き出すだけです (これはちょっと大きいことはわかっていますが、そのようにする必要があります)。 . 各シリアル化の前に、新しい FileOutputstream と他のすべてのストリームを作成し、その後、ストリームを閉じてフラッシュします。
問題: 最初のシリアル化には約 2 秒かかり、その後 tp 17 秒増加し、このレベルにとどまります。ここで何が問題なのですか?コードを調べてみると、FileOutputStreams が writeByte(...) に膨大な時間を費やしていることがわかります。これは HDD キャッシング (フル) によるものですか? どうすればこれを回避できますか? クリアできますか?
これが私の簡単なコードです:
どこで dataOut.write(int[], 0, end)
そして `protected void checkBuf(int need) throws IOException {
BufferedDataOutputStream は BufferedOutputStream を拡張し、fits フレームワークに付属しています。単純に BufferedOutputStream と DataOutputStream を組み合わせて、大きな配列を書き込むときのメソッド呼び出しの数を減らします (これにより、はるかに高速になります... 最大 10 倍...)。
出力は次のとおりです。
ベンチマークの開始
スタートラン 0
2.001972271
スタートラン1
1.986544604
スタートラン2
15.663881232
スタートラン3
17.652161328
スタートラン 4
18.020969301
スタートラン 5
11.647542466
スタートラン 6
なぜこんなに時間が増えているのでしょうか?
ありがとうございました、
イース
c++ - C++ を使用して Windows ドライブの種類を判断する包括的な方法を作成しようとしています。
ドライブのタイプを DOS パスで判別しようとしている管理されていない C++/MFC の例をたくさん見てきましたが、その方法については多くの混乱があるようです。そこで私は、すべての情報を 1 つの機能に統合し、Microsoft がずっと前に私たちのためにすべきだったことを実行しようとしています。
基本的に、最新のすべてのドライブを次のように分類する必要があります。
- 固定駆動
- リムーバブルドライブ
- メディア ドライブ
- その他 (コード内の説明を参照)
誰かが私のコードを以下でチェックできますか?
linux - ブロックデバイスとしてSATAHDDを使用する
私はLinuxカーネルにまったく慣れていないので、おそらく物事を混乱させます。しかし、どんなアドバイスも私を助けます;)
PCIeSATAカードを介してSATAHDDを接続していて、ブロックデバイスで使用read
して好きにしようとしています。write
また、データ電源の停電をHDDに保存したいのですが、キャッシュされません。そして最後に、各Linuxスタック層でどれだけの時間を失うかを分析する必要があります。しかし、一度に一歩。
現時点ではopen
、*O_DIRECT*を使用してデバイスを試してみます。しかし、デバイスがどこにあるのかよくわかりません。として表示され/dev/sdd
、1つのパーティションを作成しまし/dev/sdd1
た。
open
とread
パーティションで/dev/sdd1
動作します。write
* O_DIRECT *で失敗します(ただし、適切なブロックサイズがあると確信しています)open
read
とwrite
呼ばれる/dev/sdd
は完全に失敗します。/dev/
ブロックレイヤー上のデバイスを表す別のファイルはありますか?- 私の間違いと間違った仮定は何ですか?
これは私の現在のテストコードです
編集:私はパワーアーキテクチャで3.2カーネルを使用しています-これが重要な場合。
ファビアン、お時間をありがとうございました
linux - O_DIRECTを使用したHDDからのread()は22で失敗します(EINVAL、無効な引数)
read()
SATAHDDからベーシックを作りたい/dev/sdd
。Awrite()
は機能しているようです。また、フラグなしで動作しread()
ます。ブロックサイズに合わせる必要があることを読みました。だから私はこれを使ってブロックサイズを取得しました:write()
O_DIRECT
ご覧のとおり、私にはルートがあります。HDDはPCIeSATAカードを介して接続されてlspci -vv
おり、基本的なahci(drivers/ata/ahci.c
)ドライバーを使用していることがわかります。私は64ビットのPowerArchitectureで3.2.0Linuxカーネルを使用しています。
これが私のコードです:
出力は次のとおりです。
編集:Brett Haleの回答で提案されているように、ソースを更新しました。残念ながら、まだエラーが発生します。ブロックサイズを見つける私の方法は大丈夫ですか?私は正しい位置合わせをしましたか?
読んでくれてありがとう、
ファビアン
c++ - 高度なフォーマットのハードディスクの Windows XP での物理セクター サイズ
ハード ディスクが Windows XP で高度なフォーマットであるかどうかを判断するために、ハード ディスクの物理セクター サイズを取得する必要があります。
を使ってみましたSTORAGE_ACCESS_ALIGNMENT_DESCRIPTOR
が、Windows XPには対応していません。私が使用するどの方法でも、4096 ではなく 512 が返されます。これには、返される値が 512 だけである WMI が含まれます。
私は C++ でコーディングしており、実際の物理セクター サイズを見つけるのに役立つ方法を教えていただければ非常にありがたいです。
vb6 - 現在のHDDタイプを取得するにはどうすればよいですか?
私はvb6でhddシリアル番号を取得する方法を見つけました。ただし、オプションを選択する必要があります
- プライマリマスター
- プライマリスレーブ
- セカンダリマスター
- 二次スレーブ
しかし、私はオプションを自動選択したいと思います。自動選択ロジックは、
上記の4種類のHDDを4台持っているとします。そして、ロジックは、現在のシステムがロードされているhddタイプを選択します。
現在のシステムがどのHDDタイプにあるかを検出する方法が本当にわかりません。助けてください。
これが私がHDDシリアル番号を選択するために使用するクラスです。HDSNクラス
external - NTFS/GPTマウントが終了コード13で終了しました
askubuntu.comで何の助けも得られなかったので、これは重複した投稿です。
最近NTFSにフォーマットした1TBの外付けハードドライブがあります。今まではUbuntu11.10に問題なくマウントされていました。OSやexhddに影響を与えるような変更は加えていません。
私が得るエラーは次のとおりです。
私はこれとこれを読みました。しかし、どちらも役に立ちませんでした。
インストールしてみntfsfix
ましたが、そのようなパッケージはもう存在しません。私はこのHDDをWindowsマシンで使用したことがありません。これを修正するために他のマシンを使用する必要がある場合は、Macにアクセスできます。
何かアドバイス?
これは私のsudofdisk-l出力です:GPTとは世界で何ですか?私はそれをしませんでした。以前はNTFSでした。
php - 注意: 未定義のオフセット: 2 または HDD スペースを常に取得する方法
この行は私にそのエラーを与えます
私はhttp://www.installgentoo.net/からこのコードを入手 しました。私はWindowsを使用していますが、おそらくLinuxを使用しています
これがWindowsの問題である場合、WindowsとLinuxで機能するものを作成するにはどうすればよいですか(これは常に正しいHDDを取得するdisk_total_space("C:")
ため、すべてのWebサーバーがCドライブにあるとは限らないため、次のようなものは使用しません.
私が使用している方法が必要な場合