资源简介
这是我为某公司开发的虚拟声卡驱动,现提供代码供有需要的朋友共享
代码片段和文件信息
//By Fanxiushu 2011-10-24
#include “common.h“
#include “top_wav.h“
///common function
PWAVEFORMATEX GetWaveFormatEx( IN PKSDATAFORMAT pDataFormat )
{
PWAVEFORMATEX pWfx = NULL;
// If this is a known dataformat extract the waveformat info.
//
if
(
pDataFormat &&
( IsEqualGUIDAligned(pDataFormat->MajorFormat
KSDATAFORMAT_TYPE_AUDIO) &&
( IsEqualGUIDAligned(pDataFormat->Specifier
KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) ||
IsEqualGUIDAligned(pDataFormat->Specifier
KSDATAFORMAT_SPECIFIER_DSOUND) ) )
)
{
pWfx = PWAVEFORMATEX(pDataFormat + 1);
if (IsEqualGUIDAligned(pDataFormat->Specifier
KSDATAFORMAT_SPECIFIER_DSOUND))
{
PKSDSOUND_BUFFERDESC pwfxds;
pwfxds = PKSDSOUND_BUFFERDESC(pDataFormat + 1);
pWfx = &pwfxds->WaveFormatEx;
}
}
return pWfx;
}
NTSTATUS ValidateFormat(IN PKSDATAFORMAT pDataFormat)
{
NTSTATUS status = STATUS_INVALID_PARAMETER;
PWAVEFORMATEX pwfx;
pwfx = GetWaveFormatEx(pDataFormat);
if (pwfx)
{
if (IS_VALID_WAVEFORMATEX_GUID(&pDataFormat->SubFormat))
{
USHORT wfxID = EXTRACT_WAVEFORMATEX_ID(&pDataFormat->SubFormat);
switch (wfxID)
{
case WAVE_FORMAT_PCM:
{
switch (pwfx->wFormatTag)
{
case WAVE_FORMAT_PCM:
{
if( pwfx->nChannels>=MIN_CHANNELS&&pwfx->nChannels<=MAX_CHANNELS_PCM &&
pwfx->wBitsPerSample>=MIN_BITS_PER_SAMPLE_PCM && pwfx->wBitsPerSample<=MAX_BITS_PER_SAMPLE_PCM &&
pwfx->nSamplesPerSec>=MIN_SAMPLE_RATE && pwfx->nSamplesPerSec<=MAX_SAMPLE_RATE )
{
status = STATUS_SUCCESS;
}
break;
}
}
break;
}
default:
DPT(“Invalid format EXTRACT_WAVEFORMATEX_ID!“);
break;
}
}
else
{
DPT(“Invalid pDataFormat->SubFormat!“ );
}
}
return status;
}
///copy from MSVAD
NTSTATUS
PropertyHandler_BasicSupport
(
IN PPCPROPERTY_REQUEST PropertyRequest
IN ULONG Flags
IN DWORD PropTypeSetId
)
{
ASSERT(Flags & KSPROPERTY_TYPE_BASICSUPPORT);
NTSTATUS ntStatus = STATUS_INVALID_PARAMETER;
if (PropertyRequest->ValueSize >= sizeof(KSPROPERTY_DEscriptION))
{
// if return buffer can hold a KSPROPERTY_DEscriptION return it
//
PKSPROPERTY_DEscriptION PropDesc =
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3073 2011-11-04 14:28 driver\buildfre_win7_x86.log
文件 14669 2011-10-27 16:36 driver\common.cpp
文件 3914 2011-10-27 16:38 driver\common.h
文件 2743 2011-10-27 16:24 driver\data_trans.cpp
文件 1281 2011-11-04 12:07 driver\main.cpp
文件 675 2011-10-24 18:05 driver\makefile
文件 96798 2011-11-04 14:02 driver\objfre_win7_x86\i386\common.obj
文件 77546 2011-11-04 14:02 driver\objfre_win7_x86\i386\data_trans.obj
文件 75700 2011-11-04 14:02 driver\objfre_win7_x86\i386\main.obj
文件 1003 2011-11-04 14:07 driver\objfre_win7_x86\i386\main.obj.oacr.root.x86fre.pft.xm
文件 98859 2011-11-04 14:02 driver\objfre_win7_x86\i386\stream.obj
文件 599 2011-11-04 14:07 driver\objfre_win7_x86\i386\stream.obj.oacr.root.x86fre.pft.xm
文件 94902 2011-11-04 14:02 driver\objfre_win7_x86\i386\topo.obj
文件 192512 2011-11-04 14:02 driver\objfre_win7_x86\i386\vc90.pdb
文件 97083 2011-11-04 14:02 driver\objfre_win7_x86\i386\wave.obj
文件 908 2011-11-04 14:28 driver\objfre_win7_x86\i386\wav_mixer.res
文件 460 2011-11-04 14:28 driver\objfre_win7_x86\i386\_ob
文件 456 2011-11-04 14:27 driver\resource.h
文件 490 2011-10-27 15:20 driver\sources
文件 10524 2011-11-02 22:10 driver\stream.cpp
文件 1845 2011-10-26 16:34 driver\stream.h
文件 9804 2011-11-04 13:36 driver\topo.cpp
文件 13007 2011-10-27 15:39 driver\toptable.h
文件 1808 2011-10-27 15:09 driver\top_wav.h
文件 10922 2011-11-02 22:11 driver\wave.cpp
文件 6038 2010-02-08 20:06 driver\wavtable.h
文件 36636 2011-11-04 14:28 driver\wav_mixer.aps
文件 1286 2011-11-04 14:37 driver\wav_mixer.cat
文件 4191 2011-11-04 13:38 driver\wav_mixer.inf
.CA.... 461824 2011-11-04 14:28 driver\wav_mixer.pdb
............此处省略8个文件信息
- 上一篇:DirectShow虚拟摄像头工程
- 下一篇:目录重定向源代码工程
评论
共有 条评论