1

スマートフォン(Motorola Atrix 4G)に32GBのMicroSDがあります。電話は私のWindowsXP(SP3)ラップトップに接続されており、micro sdは「マスストレージモード」でアクセスされます。つまり、ドライブ文字が割り当てられ、ラップトップからアクセスできます。MicroSDはFAT32でフォーマットされています。MicroSDには、12個のエクステント(サイズ2GB)で構成される仮想ハードディスク(vmdk)が含まれています。私のコードは、ローカルハードディスク上のREDOファイルをmicrosd上のvmdkエクステントとマージします。コードは、REDOファイル内のすべての「グレインテーブル」エントリをループし、グレインテーブルエントリがゼロ以外の場合、参照されている「グレイン」または連続するグレインのグループを読み取ります(vmware用語のグレインはREDOファイルの64kブロックです) REDOファイルから、vmdk内の対応する場所をシークし、その場所にグレインを書き込みます。

問題は、この「コミット」操作の途中でMicroSDが切断されることです(常に正確に同じ時点であるとは限りません)。「ディスクがありません」というエラーメッセージが表示されます。イベントログには、ID51の警告が記録されます-「ページング操作中にデバイス\Device \ Harddisk2\Dでエラーが検出されました」。このエラーの後、microsd上のファイルはWindowsシステムから「見えなくなります」。デバイスを再接続すると、すべてのファイルがラップトップから再び表示されます。

これまで私は以下を試しました:

  1. さまざまなケーブルを試しましたが、そのうちの1つは13''->効果がありません

  2. microsdカード(Samsung、クラス10 32GB)をカードリーダーを介してホストシステムに接続しました->問題は発生しませんでした

  3. 別のmicrosd(Lexar、クラス10 32GB)を試しました->同じ問題

  4. 直接接続されているカードリーダーでLexarmicrosdを試しました->問題は発生しませんでした

  5. 別の電話を試しました(Samsung Galaxy S2、Motorola Razr M)->同じ問題

  6. XPの動作を示す同じシステムを含むWindows7を実行しているいくつかのシステムでコードを実行しました->問題は表示されませんでした(!!!!)

  7. 私は同じ2番目のXPシステムを持っています->同じ問題

  8. 'grain'がディスクに書き込まれた直後にSleep(500)を挿入して書き込み操作を抑制しました->問題は発生しませんでした

残念ながら、8はコミット操作の速度を低下させるため、優れた回避策ではありません。

誰かアイデアはありますか?

前もって感謝します

4

0 に答える 0