How to Determine Which IDE DMA/Ultra DMA Mode Is Being Used

ID: Q198127


The information in this article applies to:
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Datacenter Server
  • Microsoft Windows 2000 Professional
  • Microsoft Windows 2000 Server
  • Microsoft Windows NT Server version 4.0
  • Microsoft Windows NT Server, Enterprise Edition version 4.0
  • Microsoft Windows NT Workstation version 4.0


SUMMARY

Windows 2000 by default supports both DMA and Ultra DMA bus-mastering input/output (I/O) on IDE-based computers and devices that support DMA and Ultra DMA.

Windows NT 4.0 requires Service Pack 4 or later and additional registry settings to enable Ultra DMA I/O with IDE controllers and devices.

For additional information, see the following articles in the Microsoft Knowledge Base:

Q158873 How to Enable IDE DMA Bus-Mastering Using SP2 Atapi.sys

Q164378 WinNT 4.0 SP2 or SP3 Atapi Does Not Support Ultra DMA Devices


MORE INFORMATION

To determine whether DMA bus mastering is being used, check the DMAEnabled value in the following registry key


   HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\ScsiPort<X> 
where <X> represents the IDE channel (0 is the primary channel, 1 is the secondary channel).

If the DMAEnabled value has a data value of 0x1, DMA is enabled. If DMA is not enabled, Programmed I/O (PIO) is being used.

There is no way to tell from this registry value whether DMA or Ultra DMA is being used.

Determining DMA Mode

For Windows 2000 only, you can check some additional registry values to determine which MultiWord DMA (MWDMA) or Ultra DMA mode is in use for each controller and device.

Valid modes are MWDMA modes 0-2 and Ultra UDMA modes 0-2.

Check the following registry key(s):

   HKEY_Local_Machine\system\currentcontrolset\Control\class\ 
      {4D36E96A-E325-11CE-BFC1-08002BE10318}\ 

      0001\MasterDeviceTimingMode: DWORD:0x2010 (primary IDE channel)
      0001\SlaveDeviceTimingMode:  DWORD:0x410  (primary IDE channel)
      0002\MasterDeviceTimingMode: DWORD:0x2010 (secondary IDE channel)
      0002\SlaveDeviceTimingMode:  DWORD:0x2010 (secondary IDE channel) 
If the value has bit 8, 9, or 10 set, the channel is in MWDMA mode If the value has bit 11, 12, or 13 set, the channel is in Ultra DMA mode.

Specifically, bit 10 means MWDMA mode 2. Bit 13 means UDMA mode 2.

For example:

   Primary master x2010 = 10000000010000: bit 13 is set: UDMA mode 2.
   Primary slave x410   =    10000010000: bit 10 is set: MWDMA mode 2. 

Additional query words:

Keywords : kbenv
Version : WINDOWS:2000; winnt:4.0
Platform : WINDOWS winnt
Issue type : kbhowto


Last Reviewed: December 29, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.