Hi,Here is the logic flow: 1. GUI program sends DeviceIoControl command setup to driver: setup DMA descriptors 2. GUI program sends DeviceIoControl command Start to driver: call the routine of start DMA Read and write (with parameter of# of loops) 3. ISR routine receives interrupts Checks# of loops, if not, zero, call the same of above routine to restart DMA R/W. It works only if put a debug line before start DMA: KdPrintf("."); //if this line is commented, no interrupts will be received. StartDMA(); Anyone has any suggestions what is wrong? Thanks, Tiger
There are two problems: One it needs synchronization, and the other is to check the interrupt status registers, because the interrupt is shared by both read and write. That fixes the problem.