2009-06-30 15 views
1

ハードディスクの一部の構成(RAID、ランダムパーティション、オペレーティングシステムパーティションではなく別のIDEコントローラを使用)でアプリケーションを実行していると何らかの理由でnullGetLastErrorERROR_INVALID_PARAMETERのコード。特定のHDD構成でVirtualAllocが動作しない

フラグ(MEM_COMMIT | MEM_TOP_DOWN, PAGE_READWRITE)から離れた唯一のパラメータは、ディスクジオメトリから得られたセクタサイズの倍数として計算されたサイズです(残念ながら、NDAなどの理由でポストコードは使用できません)。

誰もがこれを経験したことがありますか?誰かがWindowsがページサイズを扱う可能性のある理由を知っていれば、RAIDの一部であるディスク上で別の方法でパーティションを作成することもできます。

+1

既に予約されているブロックをコミットしようとしているときに、ブロックを予約したときにアドレスが割り当て細分の倍数に切り捨てられているかどうかチェックしていますか?要求されたサイズの計算では、異常に大量のメモリを要求することに対して何らかの防御がありますか? –

+0

オフセットはセクタサイズの細かさに切り捨てられ、エラーの発生を防ぐためにチェックインされますが、大量のメモリが要求されていないかのように見えますが、長さが不足した場合 – Stowelly

+0

問題はDeviceIoControlにあるようですが、プライマリハードドライブではないディスクの場合、有効なドライブジオメトリ、アイデアは返されませんか? – Stowelly

答えて

0

問題がIOCTL_DISK_GET_DRIVE_GEOMETRYがプライマリHDD以外のものを使用した場合、完全なゴミを返すように見えた戻るしようとしたときのDeviceIoControlを行うことだった、私の代わりにセクタ情報を取得するにはGetDiskFreeSpaceのを使用してこれを解決し、すべての作業罰金

です

明らかになぜIOCTL_DISK_GET_DRIVE_GEOMETRYがゴミであるかを知ることは理想的ですが、うまくいきます!

関連する問題