DMAのリセット

ImgBurn > ImgBurnの設定変更 > DMAのリセット

ImgBurn v2.5.1.0 から追加された新機能です。

ドライブの速度が遅くなったと感じた時に実行すると少し速くします。

必ず実行した方がいいと言う機能ではありません。

仮にドライブが速くなればImgBurnも安定稼働が増します。

確実に早くなると言う保証は有りませんが、ドライブでCRCエラーやタイムアウトが6回以上発生すると、ドライブからのデータの転送モードをOSは低いPIOモードにします。

それを高速な転送モードのDMAモードに戻すのが「DMAのリセット」です。

「ResetDMA.vbs VBAスクリプトと同じ機能」とImgBurn公式サイトでは説明しています。

OSのレジストリを変更します。不安や説明が理解出来ない方は実行する必要はありません。
(激速に成る訳ではありませんし、速くなる保証も無いからです)

以下に「DMAのリセット」方法を示します。


▼① Imgburnのメニューから [ツール(T)] –> [DMAのリセット(M)] を選択クリックします。

設定:DMAのリセット

 

 


▼② 「Windowsの全てのATAドライブのドライバーをDMA状態にリセットをします。

この変更はWindowsの再起動で反映されます。

続行しますか?」 てな感じのメッセージが以下に表示されます。

本当に実行していいかの再確認です。「はい(Y)」 ボタンをクリックします。

設定:DMAのリセット

This feature will attempt to reset the DMA status of all ATA drives with Windows drivers. Windows will redetect the status after the next reboot, therefore this procedure should be harmless.
Would you like to continue?


▼③ 以下の完了したメッセージが表示されます。

Windowsを再起動して下さい、とのメッセージです。「OK」ボタンをクリックして、Windowsを手動で再起動します。

※自動的に再起動はしません。

設定:DMAのリセット

The following ATA channels have been reset:
Master of セカンダリ IDE チャンネル:
Master of プライマリ IDE チャンネル:
Please reboot now to reset and redetect the DMA status.


▼④ 設定を反映する為に、Windowsを再起動します。

設定:DMAのリセット


サイト管理人のパソコンで実行しましたが、特に変化は有りませんでした。

 

戻る

 


▼ 以下はサイト管理人のメモです。

特に見る必要はありません。

▽ 補足追加説明

実際はドライブのレジストリを変更するので、OSの再起動が必要になる。

  1. レジストリキー"MasterIdDataCheckSum"を削除する。
  2. レジストリキー"ResetErrorCountersOnSuccess"=dword:00000001 を追加、又は再設定する。

▽ resetdma.vbs VBAスクリプトの内容

以下は http://winhlp.com/tools/resetdma.vbs を参照。

< resetdma.vbs tools winhlp.com>

‘ Visual Basic Script program to reset the DMA status of all ATA drives
‘ Copyright ゥ 2006 Hans-Georg Michna
‘ Version 2007-04-04
‘ Works in Windows XP, probably also in Windows 2000 and NT.
‘ Does no harm if Windows version is incompatible.

If MsgBox("This program will now reset the DMA status of all ATA drives with Windows drivers." _
& vbNewline & "Windows will redetect the status after the next reboot, therefore this procedure" _
& vbNewline & "should be harmless.", _
vbOkCancel, "Program start message") _
= vbOk Then

RegPath = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}\"
ValueName1Master = "MasterIdDataChecksum"
ValueName1Slave = "SlaveIdDataChecksum"
ValueName2Master = "UserMasterDeviceTimingModeAllowed"
ValueName2Slave = "UserSlaveDeviceTimingModeAllowed"
ValueName3 = "ResetErrorCountersOnSuccess"
MessageText = "The following ATA channels have been reset:"
MessageTextLen0 = Len(MessageText)
ConsecutiveMisses = 0
Set WshShell = WScript.CreateObject("WScript.Shell")

For i = 0 to 999
RegSubPath = Right("000" & i, 4) & "\"

‘ Master

Err.Clear
On Error Resume Next
WshShell.RegRead RegPath & RegSubPath & ValueName1Master
errMaster = Err.Number
On Error Goto 0
If errMaster = 0 Then
On Error Resume Next
WshShell.RegDelete RegPath & RegSubPath & ValueName1Master
WshShell.RegDelete RegPath & RegSubPath & ValueName2Master
On Error Goto 0
MessageText = MessageText & vbNewLine & "Master"
End If

‘ Slave

Err.Clear
On Error Resume Next
WshShell.RegRead RegPath & RegSubPath & ValueName1Slave
errSlave = Err.Number
On Error Goto 0
If errSlave = 0 Then
On Error Resume Next
WshShell.RegDelete RegPath & RegSubPath & ValueName1Slave
WshShell.RegDelete RegPath & RegSubPath & ValueName2Slave
On Error Goto 0
If errMaster = 0 Then
MessageText = MessageText & " and "
Else
MessageText = MessageText & vbNewLine
End If
MessageText = MessageText & "Slave"
End If

If errMaster = 0 Or errSlave = 0 Then
On Error Resume Next
WshShell.RegWrite RegPath & RegSubPath & ValueName3, 1, "REG_DWORD"
On Error Goto 0
ChannelName = "unnamed channel " & Left(RegSubPath, 4)
On Error Resume Next
ChannelName = WshShell.RegRead(RegPath & RegSubPath & "DriverDesc")
On Error Goto 0
MessageText = MessageText & " of " & ChannelName & ";"
ConsecutiveMisses = 0
Else
ConsecutiveMisses = ConsecutiveMisses + 1
If ConsecutiveMisses >= 32 Then Exit For ‘ Don’t search unnecessarily long.
End If
Next ‘ i

If Len(MessageText) <= MessageTextLen0 Then
MessageText = "No resettable ATA channels with Windows drivers found. Nothing changed."
Else
MessageText = MessageText & vbNewline _
& "Please reboot now to reset and redetect the DMA status."
End If

MsgBox MessageText, vbOkOnly, "Program finished normally"

End If ‘ MsgBox(…) = vbOk

‘ End of Visual Basic Script program

▽ 技術メモ

レジストリ「HKEY_LOCAL_MACHINE\SYSTEM \CurrentControlSet \Control \Class \{4D36E96A-E325-11CE-BFC1-08002BE10318}」下の
「0001」 : プライマリIDEチャネル、
「0002」 : セカンダリIDEチャネル
に関するキーです。

http://journal.mycom.co.jp/column/winxp/075/index.html を参考にさせて頂きました。

 

 

戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください