Hello Guys, After updating to latest HCK filters, test case "Standard Streaming\Rendering Pin Tests\Reset Pin while streaming data" got PASS. :). But i am getting failure in test case " Standard Streaming\Rendering Pin Tests\Calling get position from the different thread". Bellow are the logs for same test case, Successfully instantiated KSPIN_DATAFLOW_IN pin Submitting 44100 bytes to the pin KSPIN_DATAFLOW_IN pin is currently in state KSSTATE_STOP; want it to be in state KSSTATE_PAUSE Setting KSPIN_DATAFLOW_IN pin to state KSSTATE_ACQUIRE Setting KSPIN_DATAFLOW_IN pin to state KSSTATE_PAUSE Submitting IOCTL_KS_WRITE_STREAM IRP ... IRP is pending... Creating semaphore Created semaphore Creating thread 1 thread created KSPIN_DATAFLOW_IN pin is currently in state KSSTATE_PAUSE; want it to be in state KSSTATE_RUN Setting KSPIN_DATAFLOW_IN pin to state KSSTATE_RUN pin position pos2.playoffset = 0 , pos1.playOffset = 333 pin position pos2.playoffset = 333 , pos1.playOffset = 574 pin position pos2.playoffset = 574 , pos1.playOffset = 817 pin position pos2.playoffset = 817 , pos1.playOffset = 1037 pin position pos2.playoffset = 1037 , pos1.playOffset = 1280 pin position pos2.playoffset = 1280 , pos1.playOffset = 1501 pin position pos2.playoffset = 1501 , pos1.playOffset = 1721 pin position pos2.playoffset = 1721 , pos1.playOffset = 1942 pin position pos2.playoffset = 1942 , pos1.playOffset = 2163 pin position pos2.playoffset = 2163 , pos1.playOffset = 2405 pin position pos2.playoffset = 2405 , pos1.playOffset = 2626 pin position pos2.playoffset = 2626 , pos1.playOffset = 2847 pin position pos2.playoffset = 2847 , pos1.playOffset = 3288 pin position pos2.playoffset = 3288 , pos1.playOffset = 3509 pin position pos2.playoffset = 3509 , pos1.playOffset = 4612 pin position pos2.playoffset = 4612 , pos1.playOffset = 5274 pin position pos2.playoffset = 5274 , pos1.playOffset = 5494 pin position pos2.playoffset = 5494 , pos1.playOffset = 5715 pin position pos2.playoffset = 5715 , pos1.playOffset = 5936 pin position pos2.playoffset = 5936 , pos1.playOffset = 6290 pos1.PlayOffset < pPin->m_cbStreamData From the above test case and logs, i am guessing that there may be synchronization problem which is causing failure. MSDN says that, implementation of IDmaChannel in PortCls.sys is not multi-thread safe. So i locked and unlocked almost every function of IDmaChannel interface at the entry/exit with mutex. But still got failure. Also from test case name it seems that, test is calling IMiniportWaveCyclicStream::GetPosition from different threads. Is this correct ? Can anyone please help me to understand reason behind this failure ? Thanks. On Thu, Feb 6, 2014 at 12:02 PM, Gaurav Khuntale <gauravkhuntale@xxxxxxxxx>wrote: > I am trying to install MSVad but its not getting installed. Getting some > failures. Will update you once it got install. > > Thanks. > > > On Wed, Feb 5, 2014 at 11:59 PM, Matthew van Eerde < > Matthew.van.Eerde@xxxxxxxxxxxxx> wrote: > >> Could be a bug in portcls when calling into WaveCyclic miniports... does >> it repro on MSVad? >> >> >> >> *From:* wdmaudiodev-bounce@xxxxxxxxxxxxx [mailto: >> wdmaudiodev-bounce@xxxxxxxxxxxxx] *On Behalf Of *Gaurav Khuntale >> *Sent:* Tuesday, February 4, 2014 8:27 PM >> >> *To:* wdmaudiodev@xxxxxxxxxxxxx >> *Subject:* [wdmaudiodev] Re: Need help in Wave Test >> >> >> >> Hi Tim, >> >> No, i observed that when its paused then IDmaChannel::CopyTo function >> does not get call in my driver. So its means in paused state, no write >> operation is happening. Also as per the log file message "[ GetLastError() >> returned 21 (0x15) - The device is not ready. ]." , it seems that its >> returning with correct return status ( STATUS_DEVICE_NOT_READY ) when pin >> is in pause state and still write request comes. This is mentioned in >> explanation of IOCTL_KS_RESET_STATE on MSDN, >> http://msdn.microsoft.com/en-us/library/windows/hardware/ff560832%28v=vs.85%29.aspx. >> >> >> Thanks. >> >> >> >> On Wed, Feb 5, 2014 at 3:06 AM, Tim Roberts <timr@xxxxxxxxx> wrote: >> >> Gaurav Khuntale wrote: >> > >> > Start Case: ID 16.26:1.5: Standard Streaming\Rendering Pin Tests\Reset >> > Pin while streaming data >> > KSPIN_DATAFLOW_IN pin is currently in state KSSTATE_PAUSE; want >> > it to be in state KSSTATE_RUN >> > Setting KSPIN_DATAFLOW_IN pin to state KSSTATE_RUN >> > Position reported before issuing KSRESET_BEGIN = 121 bytes >> > KSPIN_DATAFLOW_IN pin is currently in state KSSTATE_RUN; want it >> > to be in state KSSTATE_RUN >> > Resetting Pin state: IOCTL_KS_RESET_STATE (KSRESET_BEGIN) >> > Position reported after issuing KSRESET_BEGIN = 0 bytes >> > Submitting IOCTL_KS_WRITE_STREAM IRP ... >> > GetLastError did not return ERROR_IO_PENDING even though the pin >> > is paused >> >> Looking at this again, I guess I'm a bit confused. The >> IOCTL_KS_RESET_STATE command should be handled by the port class port >> driver. I don't think it feeds down to the miniport at all. >> >> The key thing this seems to be complaining about is that your driver >> allowed a "write" to occur even though it is paused. Again, I'm not >> sure that is under your control. The MSVAD driver only checks for the >> "paused" state in a very few circumstances. >> >> >> -- >> Tim Roberts, timr@xxxxxxxxx >> Providenza & Boekelheide, Inc. >> >> ****************** >> >> WDMAUDIODEV addresses: >> Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx >> Subscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe >> Unsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx >> ?subject=unsubscribe >> Moderator: mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx >> >> URL to WDMAUDIODEV page: >> http://www.wdmaudiodev.com/ >> >> >> > >