問題タブ [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.

0 投票する
7 に答える
22390 参照

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 では:

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

c# - WMIを介してCPUIDを取得しようとしたときに生成された「見つかりません」例外

私はこのコードを使用してプロセッサIDを取得しています:

Windows732ビットのVisualStudio2008を実行しています。残念ながら、mc.GetInstances()メソッドの呼び出しによって「見つかりません」という例外が発生しています。

これが同様のコードです(HDDシリアルをフェッチします):

このコードも失敗します。「disk.Get()」メソッドは「無効なクラス」例外を発生させます。

このコードをUACをオフにしてからオンにして実行しましたが、何も役に立ちません。

私は何が間違っているのですか?

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

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

なぜこんなに時間が増えているのでしょうか?

ありがとうございました、

イース

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

c++ - C++ を使用して Windows ドライブの種類を判断する包括的な方法を作成しようとしています。

ドライブのタイプを DOS パスで判別しようとしている管理されていない C++/MFC の例をたくさん見てきましたが、その方法については多くの混乱があるようです。そこで私は、すべての情報を 1 つの機能に統合し、Microsoft がずっと前に私たちのためにすべきだったことを実行しようとしています。

基本的に、最新のすべてのドライブを次のように分類する必要があります。

  • 固定駆動
  • リムーバブルドライブ
  • メディア ドライブ
  • その他 (コード内の説明を参照)

誰かが私のコードを以下でチェックできますか?

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

linux - ブロックデバイスとしてSATAHDDを使用する

私はLinuxカーネルにまったく慣れていないので、おそらく物事を混乱させます。しかし、どんなアドバイスも私を助けます;)

PCIeSATAカードを介してSATAHDDを接続していて、ブロックデバイスで使用readして好きにしようとしています。writeまた、データ電源の停電をHDDに保存したいのですが、キャッシュされません。そして最後に、各Linuxスタック層でどれだけの時間を失うかを分析する必要があります。しかし、一度に一歩。

現時点ではopen、*O_DIRECT*を使用してデバイスを試してみます。しかし、デバイスがどこにあるのかよくわかりません。として表示され/dev/sdd、1つのパーティションを作成しまし/dev/sdd1た。

  • openreadパーティションで/dev/sdd1動作します。write* O_DIRECT *で失敗します(ただし、適切なブロックサイズがあると確信しています)
  • open readwrite呼ばれる/dev/sddは完全に失敗します。
  • /dev/ブロックレイヤー上のデバイスを表す別のファイルはありますか?
  • 私の間違いと間違った仮定は何ですか?

これは私の現在のテストコードです

編集:私はパワーアーキテクチャで3.2カーネルを使用しています-これが重要な場合。

ファビアン、お時間をありがとうございました

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

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の回答で提案されているように、ソースを更新しました。残念ながら、まだエラーが発生します。ブロックサイズを見つける私の方法は大丈夫ですか?私は正しい位置合わせをしましたか?

読んでくれてありがとう、
ファビアン

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

c++ - 高度なフォーマットのハードディスクの Windows XP での物理セクター サイズ

ハード ディスクが Windows XP で高度なフォーマットであるかどうかを判断するために、ハード ディスクの物理セクター サイズを取得する必要があります。

を使ってみましたSTORAGE_ACCESS_ALIGNMENT_DESCRIPTORが、Windows XPには対応していません。私が使用するどの方法でも、4096 ではなく 512 が返されます。これには、返される値が 512 だけである WMI が含まれます。

私は C++ でコーディングしており、実際の物理セクター サイズを見つけるのに役立つ方法を教えていただければ非常にありがたいです。

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

vb6 - 現在のHDDタイプを取得するにはどうすればよいですか?

私はvb6でhddシリアル番号を取得する方法を見つけました。ただし、オプションを選択する必要があります

  • プライマリマスター
  • プライマリスレーブ
  • セカンダリマスター
  • 二次スレーブ

しかし、私はオプションを自動選択したいと思います。自動選択ロジックは、

上記の4種類のHDDを4台持っているとします。そして、ロジックは、現在のシステムがロードされているhddタイプを選択します。

現在のシステムがどのHDDタイプにあるかを検出する方法が本当にわかりません。助けてください。

これが私がHDDシリアル番号を選択するために使用するクラスです。HDSNクラス

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

external - NTFS/GPTマウントが終了コード13で終了しました

askubuntu.comで何の助けも得られなかったので、これは重複した投稿です。

最近NTFSにフォーマットした1TBの​​外付けハードドライブがあります。今まではUbuntu11.10に問題なくマウントされていました。OSやexhddに影響を与えるような変更は加えていません。

私が得るエラーは次のとおりです。

私はこれこれを読みました。しかし、どちらも役に立ちませんでした。

インストールしてみntfsfixましたが、そのようなパッケージはもう存在しません。私はこのHDDをWindowsマシンで使用したことがありません。これを修正するために他のマシンを使用する必要がある場合は、Macにアクセスできます。

何かアドバイス?

これは私のsudofdisk-l出力です:GPTとは世界で何ですか?私はそれをしませんでした。以前はNTFSでした。

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

php - 注意: 未定義のオフセット: 2 または HDD スペースを常に取得する方法

この行は私にそのエラーを与えます

私はhttp://www.installgentoo.net/からこのコードを入手 しました。私はWindowsを使用していますが、おそらくLinuxを使用しています

これがWindowsの問題である場合、WindowsとLinuxで機能するものを作成するにはどうすればよいですか(これは常に正しいHDDを取得するdisk_total_space("C:")ため、すべてのWebサーバーがCドライブにあるとは限らないため、次のようなものは使用しません.

私が使用している方法が必要な場合