Skip navigation

JSI Tip 1170. DMA ATAPI device driver.

Starting with Service Pack 2, Windows NT provides a new device driver for DMA (Direct Memory Access) capable ATAPI devices.

The new driver improves CPU utilization over standard PIO (Programmed Input/Output), making IDE drives almost usable .

When using PCI bus mastering DMA, only a single interupt is serviced when an IDE command completes, compared to PIO which requires an interrupt for each block of data. This reduces CPU load to 9% - 30% for servicing the I/O versus 90% - 100% with PIO.

To enable DMA, your system must have:

- PCI command register bit two (Master Enable) set.

- PCI device Class code set to one.

- PCI device Subclass code set to one.

- Programmer's interface bit seven set.

- Busmaster status register bits five and six set (Older BIOSs don't support this).

You can determine DMA status by using regedt32 to navigate to:


where N is 0 for the primary channel and 1 for the secondary channel.

If the Value name DMAEnabled, a type REG_DWORD entry, is 1, DMA is enabled.

The ATAPI driver can enable DMA on a per channel basis. All devices on an enabled channel must be DMA capable.

To enable DMA on a channel, create the following key:


Add Value name DriverParameter as a type REG_SZ entry, and set the string to DMADetectionLevel = 0x1.

To disable DMA on a channel, set DriverParameter to DMADetectionLevel = 0x0.

You must shutdown and restart for these changes to take effect.

NOTE: You can check the status of DMA by using the DMACheck utility.

Hide comments


  • Allowed HTML tags: <em> <strong> <blockquote> <br> <p>

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.