資源簡介
這是我為某公司開發的虛擬聲卡驅動,現提供代碼供有需要的朋友共享

代碼片段和文件信息
//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虛擬攝像頭工程
- 下一篇:目錄重定向源代碼工程
評論
共有 條評論