Hi, I am new to Device Drivers. I am trying to replace WavePci in place of WaveCyclic in MSVAD. I am understanding WavePci implementation from sample AC'97. But since it is a real hardware driver with use of DMA,register etc.. So how can I avoid these DMA related code. like 1. It requires AdapterObject. which is created by DmaChannel->GetAdapterObject(); and DmaChannel is created by Port-> NewMasterDmaChannel(); (see driver\wavepciminiport.cpp) 2. In RevokeMappings() implementation we need index of stBDList. (see driver\wavepcistream.cpp) // Get current index nCurrentIndex = Wave->AdapterCommon-> ReadBMControlRegister8 (m_ulBDAddr + X_CIV); I couldn't figure out from where this register gets value.i.e. who writes currentIndex on this register ? And If I want to do it without actual register how can I do it ? I also have question on device powerstate used in AC'97 sample. In PowerDevice2/3 case why MoveBDList is used ? Since I cannot add this implementation in my virtual driver will affect on functionality of the driver. Thanks in Advance. -- ...Swapnil || Hare Krishna Hare Krishna Krishna Krishna Hare Hare || || Hare Rama Hare Rama Rama Rama Hare Hare ||