Hi I use some driver I write before to run this test. Basically I use PortCls to implement my driver. The miniport type I choose is MiniportWaveCyclic and MiniportWaveRT. The test result is as bellow. The test in MiniportWaveCyclic driver is pass, in MiniportWaveRT driver is skip. So I think it should can pass. I also test it by use USB UAA. It also can passed. I attach the test result for you reference. BR, Tzung-Dar Tsai ------------------------ Test Result --------------------- Driver Implement by MiniportWaveCyclic ------------------ Device Under Test: Device Name = Pin # 0 on CMUAC Speaker [Render Pin] PnP ID = USB\VID_0D8C&PID_0102&REV_0010&MI_00 Wave Format used for instantiation: Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE Format.nChannels = 2 Format.nSamplesPerSec = 44100 Format.nAvgBytesPerSec = 176400 Format.nBlockAlign = 4 Format.wBitsPerSample = 16 Format.cbSize = 22 wValidBitsPerSample = 16 dwChannelMask = KSAUDIO_SPEAKER_STEREO (0x3) SubFormat = KSDATAFORMAT_SUBTYPE_PCM{00000001-0000-0010-8000-00AA00389B71} Successfully instantiated Render pin The current device supports standard streaming. Setting render pin to state KSSTATE_STOP Wave Format used for instantiation: Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE Format.nChannels = 2 Format.nSamplesPerSec = 44100 Format.nAvgBytesPerSec = 176400 Format.nBlockAlign = 4 Format.wBitsPerSample = 16 Format.cbSize = 22 wValidBitsPerSample = 16 dwChannelMask = KSAUDIO_SPEAKER_STEREO (0x3) SubFormat = KSDATAFORMAT_SUBTYPE_PCM{00000001-0000-0010-8000-00AA00389B71} Successfully instantiated Render pin The current device supports standard looped streaming. Setting render pin to state KSSTATE_STOP The current device supports standard streaming. The current device supports standard looped streaming. This is NOT a WaveRT Pin The current device supports standard streaming. The current device supports standard looped streaming. This is NOT a WaveRT Pin Start Case: ID 16.26:1.10 : Standard Streaming\Rendering Pin Tests\Streaming buffer from different threads:[Sun Oct 23 00:21:43 2011] Device Name = Pin # 0 on CMUAC Speaker [Render Pin] PnP ID = USB\VID_0D8C&PID_0102&REV_0010&MI_00 End Case: ID 16.26:1.10 : PASS : Standard Streaming\Rendering Pin Tests\Streaming buffer from different threads : [Sun Oct 23 00:21:44 2011] ------------------------------------------- Driver Implement by use MiniportWaveRT: ------------------------------------------- Device Under Test: Device Name = Pin # 0 on Speaker [Render Pin] PnP ID = USB\VID_0D8C&PID_0102&REV_0010&MI_00 Wave Format used for instantiation: Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE Format.nChannels = 2 Format.nSamplesPerSec = 44100 Format.nAvgBytesPerSec = 176400 Format.nBlockAlign = 4 Format.wBitsPerSample = 16 Format.cbSize = 22 wValidBitsPerSample = 16 dwChannelMask = KSAUDIO_SPEAKER_STEREO (0x3) SubFormat = KSDATAFORMAT_SUBTYPE_PCM{00000001-0000-0010-8000-00AA00389B71} CKsPin::Instantiate. Failed to instantiate Render pin! KsCreatePin returned = 0x00000491 [ GetLastError() returned 1169 (0x491) - There was no match for the specified key in the index. ]. Wave Format used for instantiation: Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE Format.nChannels = 2 Format.nSamplesPerSec = 44100 Format.nAvgBytesPerSec = 176400 Format.nBlockAlign = 4 Format.wBitsPerSample = 16 Format.cbSize = 22 wValidBitsPerSample = 16 dwChannelMask = KSAUDIO_SPEAKER_STEREO (0x3) SubFormat = KSDATAFORMAT_SUBTYPE_PCM{00000001-0000-0010-8000-00AA00389B71} Successfully instantiated Render pin The current device supports standard looped streaming. This is a WaveRT Pin Setting render pin to state KSSTATE_STOP The current device supports standard looped streaming. This is a WaveRT Pin The current device supports standard looped streaming. This is a WaveRT Pin Start Case: ID 16.26:1.10 : Standard Streaming\Rendering Pin Tests\Streaming buffer from different threads:[Sun Oct 23 00:24:12 2011] Device Name = Pin # 0 on Speaker [Render Pin] PnP ID = USB\VID_0D8C&PID_0102&REV_0010&MI_00 End Case: ID 16.26:1.10 : SKIPPED : Standard Streaming\Rendering Pin Tests\Streaming buffer from different threads : [Sun Oct 23 00:24:12 2011] -------------------------------------------USB UAA test Result ------------------------------------------- Device Under Test: Device Name = Pin # 0 on USB Sound Device [Render Pin] PnP ID = USB\VID_0D8C&PID_0102&REV_0010&MI_00 Wave Format used for instantiation: wFormatTag = WAVE_FORMAT_PCM nChannels = 2 nSamplesPerSec = 44100 nAvgBytesPerSec = 176400 nBlockAlign = 4 wBitsPerSample = 16 cbSize = 0 Successfully instantiated Render pin The current device supports standard streaming. Setting render pin to state KSSTATE_STOP Wave Format used for instantiation: wFormatTag = WAVE_FORMAT_PCM nChannels = 2 nSamplesPerSec = 44100 nAvgBytesPerSec = 176400 nBlockAlign = 4 wBitsPerSample = 16 cbSize = 0 CKsPin::Instantiate. Failed to instantiate Render pin! KsCreatePin returned = 0x00000491 [ GetLastError() returned 1169 (0x491) - There was no match for the specified key in the index. ]. The current device supports standard streaming. This is NOT a WaveRT Pin The current device supports standard streaming. This is NOT a WaveRT Pin Start Case: ID 16.26:1.10 : Standard Streaming\Rendering Pin Tests\Streaming buffer from different threads:[Sun Oct 23 00:18:53 2011] Device Name = Pin # 0 on USB Sound Device [Render Pin] PnP ID = USB\VID_0D8C&PID_0102&REV_0010&MI_00 End Case: ID 16.26:1.10 : PASS : Standard Streaming\Rendering Pin Tests\Streaming buffer from different threads : [Sun Oct 23 00:18:53 2011] ________________________________ 寄件者: Eugene Muzychenko <eugene@xxxxxxxxxxxxxx> 收件者: Tsai Tzung-Dar <wdmaudiodev@xxxxxxxxxxxxx> 寄件日期: 2011/10/29 (六) 12:27 AM 主旨: [wdmaudiodev] Re: WLK tests behave VERY strange Hello Tsai, > Do you implement it by use AVStream miniport or you use StreamClass > miniport? My driver basically used PortCls and now I'm handling some requests directly to avoid PortCls restrictions. > Because I don't think the WLK test in this item has bug. > Because if you use PortCls to implement it. It can pass. I found no PortCls miniport that passes case 1.10 of wavetest. It fails with the following: - My driver with direct IOCTL_KS_WRITE_STREAM and POSITION/POSITION2 handlers; - My driver with handling them via PortCls; - VMware VMAudio 5.10.0.3502 (PortCls miniport, signed by WHQL) - es1371mp 6.1.6499 (Ensoniq AudioPCI driver from Creative, PortCls miniport, signed by WHQL) - MSVAD (Simple) from WDK 7600.16385.1 (PortCls miniport) Here is test output for MSVAD (Simple): Start Tests:Wave Filter Testing:[Fri Oct 28 23:16:19 2011] Random Seed = 3506460159 Device Under Test: Device Name = Pin # 2 on MSVAD Wave [Render Pin] PnP ID = *msvadsimple Wave Format used for instantiation: wFormatTag = WAVE_FORMAT_PCM nChannels = 1 nSamplesPerSec = 8000 nAvgBytesPerSec = 8000 nBlockAlign = 1 wBitsPerSample = 8 cbSize = 0 Successfully instantiated Render pin The current device supports standard streaming. Setting render pin to state KSSTATE_STOP Wave Format used for instantiation: wFormatTag = WAVE_FORMAT_PCM nChannels = 1 nSamplesPerSec = 8000 nAvgBytesPerSec = 8000 nBlockAlign = 1 wBitsPerSample = 8 cbSize = 0 Successfully instantiated Render pin The current device supports standard looped streaming. Setting render pin to state KSSTATE_STOP The current device supports standard streaming. The current device supports standard looped streaming. This is NOT a WaveRT Pin The current device supports standard streaming. The current device supports standard looped streaming. This is NOT a WaveRT Pin Start Case: ID 16.26:1.10 : Standard Streaming\Rendering Pin Tests\Streaming buffer from different threads:[Fri Oct 28 23:16:19 2011] Device Name = Pin # 2 on MSVAD Wave [Render Pin] PnP ID = *msvadsimple ====================================================== Using Pin # 2 on MSVAD Wave as the render pin Testing format: Format.nChannels = 2 Format.nSamplesPerSec = 22050 wValidBitsPerSample = 16 Creating Pin with format: Connect.nPinId = 2 Connect.PinToHandle = 0x00000000 Format.FormatSize = 82 WaveFormat.Format.wFormatTag = 1 WaveFormat.Format.nChannels = 2 WaveFormat.Format.nSamplesPerSec = 22050 WaveFormat.Format.nAvgBytesPerSec = 88200 WaveFormat.Format.nBlockAlign = 4 WaveFormat.Format.wBitsPerSample = 16 WaveFormat.Format.cbSize = 0 WaveFormat.wValidBitsPerSample = 16 WaveFormat.dwChannelMask = 3 Successfully instantiated Render pin Submitting 17640 bytes to the pin Setting render pin to state KSSTATE_PAUSE Submitting IOCTL_KS_WRITE_STREAM IRP ... IRP is pending... Creating semaphore Created semaphore Creating thread 1 thread created Setting render pin to state KSSTATE_RUN GetLastError did not return ERROR_IO_PENDING even though the pin is paused [ GetLastError() returned 997 (0x3E5) - Overlapped I/O operation is in progress. ]. pin position pos2.playoffset = 0 , pos1.playOffset = 1324 pin position pos2.playoffset = 1324 , pos1.playOffset = 2736 pin position pos2.playoffset = 2736 , pos1.playOffset = 4060 pin position pos2.playoffset = 4060 , pos1.playOffset = 5468 pin position pos2.playoffset = 5468 , pos1.playOffset = 6880 pin position pos2.playoffset = 6880 , pos1.playOffset = 8204 pin position pos2.playoffset = 8204 , pos1.playOffset = 9616 pin position pos2.playoffset = 9616 , pos1.playOffset = 11028 pin position pos2.playoffset = 11028 , pos1.playOffset = 12348 pin position pos2.playoffset = 12348 , pos1.playOffset = 13760 pin position pos2.playoffset = 13760 , pos1.playOffset = 15084 pin position pos2.playoffset = 15084 , pos1.playOffset = 16496 pin position pos2.playoffset = 16496 , pos1.playOffset = 17640 FAIL: Position (17640) is less than the amount of data streamed (35280). Setting render pin to state KSSTATE_STOP Setting render pin to state KSSTATE_STOP ====================================================== Using Pin # 2 on MSVAD Wave as the render pin Testing format: Format.nChannels = 2 Format.nSamplesPerSec = 48000 wValidBitsPerSample = 16 Creating Pin with format: Connect.nPinId = 2 Connect.PinToHandle = 0x00000000 Format.FormatSize = 82 WaveFormat.Format.wFormatTag = 1 WaveFormat.Format.nChannels = 2 WaveFormat.Format.nSamplesPerSec = 48000 WaveFormat.Format.nAvgBytesPerSec = 192000 WaveFormat.Format.nBlockAlign = 4 WaveFormat.Format.wBitsPerSample = 16 WaveFormat.Format.cbSize = 0 WaveFormat.wValidBitsPerSample = 16 WaveFormat.dwChannelMask = 3 Successfully instantiated Render pin Submitting 38400 bytes to the pin Setting render pin to state KSSTATE_PAUSE Submitting IOCTL_KS_WRITE_STREAM IRP ... IRP is pending... Creating semaphore Created semaphore Creating thread 1 thread created Setting render pin to state KSSTATE_RUN GetLastError did not return ERROR_IO_PENDING even though the pin is paused [ GetLastError() returned 997 (0x3E5) - Overlapped I/O operation is in progress. ]. pin position pos2.playoffset = 0 , pos1.playOffset = 2880 pin position pos2.playoffset = 2880 , pos1.playOffset = 5952 pin position pos2.playoffset = 5952 , pos1.playOffset = 8832 pin position pos2.playoffset = 8832 , pos1.playOffset = 11904 pin position pos2.playoffset = 11904 , pos1.playOffset = 14976 pin position pos2.playoffset = 14976 , pos1.playOffset = 17856 pin position pos2.playoffset = 17856 , pos1.playOffset = 20928 pin position pos2.playoffset = 20928 , pos1.playOffset = 24000 pin position pos2.playoffset = 24000 , pos1.playOffset = 26880 pin position pos2.playoffset = 26880 , pos1.playOffset = 29952 pin position pos2.playoffset = 29952 , pos1.playOffset = 32832 pin position pos2.playoffset = 32832 , pos1.playOffset = 35904 pin position pos2.playoffset = 35904 , pos1.playOffset = 38400 FAIL: Position (38400) is less than the amount of data streamed (76800). Setting render pin to state KSSTATE_STOP Setting render pin to state KSSTATE_STOP End Case: ID 16.26:1.10 : FAIL : Standard Streaming\Rendering Pin Tests\Streaming buffer from different threads : [Fri Oct 28 23:16:19 2011] Standard Streaming:[FAIL:1] Rendering Pin Tests:[FAIL:1] 16.26:1.10 Streaming buffer from different threads:[FAIL:1] Regards, Eugene ****************** 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/