阅读:1974回复:0
声卡过滤驱动问题
有人碰到过这个问题吗?我写了一个声卡的upper过滤驱动,在IOCTL_KS_WRITE_STREAM中获取到KSSTREAM_HEADER结构数据,可是根据这个结构获取到的数据长度和app播放的wave数据长度不一样,小很多,不知道为什么?
00000000 10:36:09.937 AudioFilter ->I am IRP_MJ_CREATE 00000001 10:36:09.937 EmptyPacketList(), Count=0 00000002 10:36:11.546 [1892] data size=171008, m_WaveLong=171008, 0xd40068 00000014 10:36:11.734 00000015 10:36:11.734 AudioFilter: nSamplesPerSec = 22050 00000016 10:36:11.734 AudioFilter: nAvgBytesPerSec= 88200 00000017 10:36:11.734 AudioFilter: nChannels = 2 00000018 10:36:11.734 AudioFilter: wBitsPerSample = 16 00000019 10:36:11.734 AudioFilter: wFormatTag = 1 00000020 10:36:11.734 00000021 10:36:11.734 AudioFilter: return KSSTATE = KSSTATE_ACQUIRE 00000022 10:36:11.734 AudioFilter: return KSSTATE = KSSTATE_ACQUIRE 00000023 10:36:11.734 AudioFilter: return KSSTATE = KSSTATE_ACQUIRE 00000024 10:36:11.734 AudioFilter: return KSSTATE = KSSTATE_PAUSE 00000025 10:36:11.734 AudioFilter: return KSSTATE = KSSTATE_PAUSE 00000026 10:36:11.734 AudioFilter: return KSSTATE = KSSTATE_PAUSE 00000027 10:36:11.734 AudioFilter: return KSSTATE = KSSTATE_PAUSE 00000028 10:36:11.734 [1892] nAvgBytesPerSec=88200 00000029 10:36:11.750 [1892] nSamplesPerSec=22050 00000030 10:36:11.750 [1892] nChannels=2 00000031 10:36:11.750 [1892] wBitsPerSample=16 00000032 10:36:11.750 [1892] wFormatTag=1 00000033 10:36:11.750 AudioFilter: return KSSTATE = KSSTATE_RUN 00000034 10:36:11.750 OutputBuffer=0x81a82000, Data=0x81a83000, OutputLength=48 00000035 10:36:11.750 OutputBuffer=0x81a82030, Data=0x81a87000, OutputLength=48 00000036 10:36:11.750 OutputBuffer=0x81a82060, Data=0x81a8b000, OutputLength=48 00000037 10:36:11.750 AudioFilter: return KSSTATE = KSSTATE_RUN 00000038 10:36:11.750 AudioFilter: return KSSTATE = KSSTATE_RUN 00000039 10:36:11.750 AudioFilter: return KSSTATE = KSSTATE_RUN 00000040 10:36:11.750 AudioFilter: return KSSTATE = KSSTATE_PAUSE 00000041 10:36:11.750 AudioFilter: return KSSTATE = KSSTATE_PAUSE 00000042 10:36:11.750 AudioFilter: return KSSTATE = KSSTATE_PAUSE 00000043 10:36:11.750 AudioFilter: return KSSTATE = KSSTATE_PAUSE 00000044 10:36:11.750 AudioFilter: return KSSTATE = KSSTATE_ACQUIRE 00000045 10:36:11.750 AudioFilter: return KSSTATE = KSSTATE_PAUSE 00000046 10:36:11.750 AudioFilter: return KSSTATE = KSSTATE_ACQUIRE 00000047 10:36:11.750 AudioFilter: return KSSTATE = KSSTATE_ACQUIRE 00000048 10:36:11.750 DataUsed=880, FrameExtent=16008, TypeSpecificFlags=0x0, OptionsFlags=0x10 00000049 10:36:11.750 DataUsed=884, FrameExtent=16008, TypeSpecificFlags=0x0, OptionsFlags=0x10 00000050 10:36:11.750 DataUsed=880, FrameExtent=16008, TypeSpecificFlags=0x0, OptionsFlags=0x10 00000051 10:36:11.750 AudioFilter: return KSSTATE = KSSTATE_STOP 00000052 10:36:11.750 AudioFilter: return KSSTATE = KSSTATE_STOP 00000053 10:36:11.750 AudioFilter: return KSSTATE = KSSTATE_STOP 00000054 10:36:14.046 AudioFilter: IOCTL_AUDIO_FORMAT 00000055 10:36:14.046 AudioFilter: nSamplesPerSec = 22050 00000056 10:36:14.046 AudioFilter: nAvgBytesPerSec= 88200 00000057 10:36:14.046 AudioFilter: nChannels = 2 00000058 10:36:14.046 AudioFilter: wBitsPerSample = 16 00000059 10:36:14.046 AudioFilter: wFormatTag = 1 00000060 10:36:14.046 00000061 10:36:15.062 AudioFilter ->I am IRP_MJ_CLEANUP 00000062 10:36:15.062 AudioFilter ->I am IRP_MJ_CLOSE |
|
|