Upload
gervase-lane
View
229
Download
1
Tags:
Embed Size (px)
Citation preview
New Developments in New Developments in WDM Audio Drivers in WDM Audio Drivers in Windows XP Windows XP
Martin PuryearMartin PuryearDevelopment LeadDevelopment LeadWindows Core AudioWindows Core AudioMicrosoft CorporationMicrosoft Corporation
AgendaAgenda Slides to be posted on WinHEC siteSlides to be posted on WinHEC site New featuresNew features DDK documentation additionsupdatesDDK documentation additionsupdates Newupdated DDK samplesNewupdated DDK samples New DDK toolsNew DDK tools Important OS changesImportant OS changes Common problems Common problems Resources for WDM audio developersResources for WDM audio developers What can What can youyou do next do next
New FeaturesNew Features
New FeaturesNew FeaturesAdded in Windows XPAdded in Windows XP
Improved multi-channel supportImproved multi-channel support Support for multi-channel volumemute Support for multi-channel volumemute
KS topology nodesKS topology nodes Translates into appropriate mixer controlsTranslates into appropriate mixer controls No Mixer API changes neededNo Mixer API changes needed (waveOutSetVolume DirectSound SetPan (waveOutSetVolume DirectSound SetPan
APIs not yet revised still stereo only)APIs not yet revised still stereo only) DDK documentation and relevant sample DDK documentation and relevant sample
code (in ac97smpl) to be added post-Beta 2code (in ac97smpl) to be added post-Beta 2
Increased SysAudio numChans 6-gt24Increased SysAudio numChans 6-gt24
New FeaturesNew FeaturesAdded in Windows XP (2)Added in Windows XP (2)
Additional multi-channel supportAdditional multi-channel support Multi-channel volume property pageMulti-channel volume property page
Invoked from SndVol32 and Sounds CPL Invoked from SndVol32 and Sounds CPL (Volume|Speaker Volumehellip)(Volume|Speaker Volumehellip)
Manipulates individual volumes of multi-Manipulates individual volumes of multi-channel controls channel controls
DirectSound SetSpeakerConfig API and DirectSound SetSpeakerConfig API and CPL Volume|Advanced|Speakers paneCPL Volume|Advanced|Speakers pane New enums for 71 and ldquoNo speakersrdquoNew enums for 71 and ldquoNo speakersrdquo Revamped bitmaps to better express configsRevamped bitmaps to better express configs
Fixed KMixer SuperMix defaultsFixed KMixer SuperMix defaults
New FeaturesNew FeaturesAdded in Windows XP (3)Added in Windows XP (3)
Extended capabilitiesExtended capabilities Returns GUIDs for MID amp PID ULONGs for driver version Returns GUIDs for MID amp PID ULONGs for driver version
amp revision plus GUID to specify a long name stored in amp revision plus GUID to specify a long name stored in registry (MediaCategories) by INFregistry (MediaCategories) by INF
KS property on wave filterKS property on wave filter KSPROPSETID_GeneralKSPROPSETID_General KSPROPERTY_GENERAL_COMPONENTIDKSPROPERTY_GENERAL_COMPONENTID
DDK sample MSVADsimpleDDK sample MSVADsimple 1394 audio class driver (AVCAudiosys)1394 audio class driver (AVCAudiosys) AC97 controller driversAC97 controller drivers
Intel (ICH2) VIA ALi SiSIntel (ICH2) VIA ALi SiS Strong suggestion new codecs pass all WHQL tests Strong suggestion new codecs pass all WHQL tests
with Windows XP in-box controller driverswith Windows XP in-box controller drivers
New FeaturesNew FeaturesAdded in Windows XP (4)Added in Windows XP (4)
64-bit support64-bit support All core components and DDK samples portedAll core components and DDK samples ported HW drivers for USBAudio CS4281 AVCAudioHW drivers for USBAudio CS4281 AVCAudio Native 64-bit API supportNative 64-bit API support
DirectSound DirectShow KsProxyKSUSERDirectSound DirectShow KsProxyKSUSER waveOutIn midiOutIn mixer aux MCI ACMwaveOutIn midiOutIn mixer aux MCI ACM Not enabled DirectMusicNot enabled DirectMusic
32-bit WOW API support32-bit WOW API support DirectSound (emulation only) DirectShowDirectSound (emulation only) DirectShow waveOutIn midiOut mixer aux MCI ACMwaveOutIn midiOut mixer aux MCI ACM Not enabled KsProxyKSUSER DirectSound (non-Not enabled KsProxyKSUSER DirectSound (non-
emulated) midiIn DirectMusicemulated) midiIn DirectMusic
New FeaturesNew FeaturesAdded in Windows XP (5)Added in Windows XP (5)
Acoustic Echo Cancellation supportAcoustic Echo Cancellation support Noise Suppression and Automatic Gain Noise Suppression and Automatic Gain
Control are optionally includedControl are optionally included Inserted at lowest level (post-mixer)Inserted at lowest level (post-mixer) Accessed via DSound8 full duplex objectAccessed via DSound8 full duplex object Can be hardware-acceleratedCan be hardware-accelerated MS system-supplied AECMS system-supplied AEC
AVStream componentAVStream component 8 kHz-22 kHz 16-bit mono8 kHz-22 kHz 16-bit mono No clock rate matching for inputoutputNo clock rate matching for inputoutput
New FeaturesNew FeaturesAdded in Windows XP (6)Added in Windows XP (6)
Global Effects Filters (GFX)Global Effects Filters (GFX) Recommended for hardware-specific master effects Recommended for hardware-specific master effects
(speaker compensation mic array filters) (speaker compensation mic array filters) Also useful for general audio processing (EQ)Also useful for general audio processing (EQ) Applied to final playback mix or original capture signal Applied to final playback mix or original capture signal
for all APIsfor all APIs Hardware-specific effects automatically addedHardware-specific effects automatically added Sounds control panel (Audio|Advancedhellip|Effects) used Sounds control panel (Audio|Advancedhellip|Effects) used
to add reorder manipulate effectsto add reorder manipulate effects Vendor-supplied UI invoked from Sounds CPLVendor-supplied UI invoked from Sounds CPL Vendor implements effect as AVStream filterVendor implements effect as AVStream filter Restricted to USB devices on Windows XPRestricted to USB devices on Windows XP Future OS releases will allow application to any audio Future OS releases will allow application to any audio
device with supporting HW driverdevice with supporting HW driver
New FeaturesNew FeaturesAdded in Windows MeAdded in Windows Me
Secure Audio Path (kernel mode DRM)Secure Audio Path (kernel mode DRM) Now required for Windows XP logoNow required for Windows XP logo
USB MIDIUSB MIDI WinME QFE available for MIDIaudio devicesWinME QFE available for MIDIaudio devices
Non-PCM outputNon-PCM output Also in Windows 2000 Service Pack 2Also in Windows 2000 Service Pack 2 Also available in Windows 98 SE QFEAlso available in Windows 98 SE QFE
Contact Microsoft Product Support Services for thisContact Microsoft Product Support Services for this
Peakmeter support and supporting SndVol UIPeakmeter support and supporting SndVol UI
New FeaturesNew FeaturesAdded in QFE ReleasesAdded in QFE Releases
QFEs are supersets backward-inclusiveQFEs are supersets backward-inclusive Windows 98 SE QFE ndash 269601USA8EXEWindows 98 SE QFE ndash 269601USA8EXE
Non-PCM Windows 2000 fixes SoftFMNon-PCM Windows 2000 fixes SoftFM Not included volume persistence DSound Not included volume persistence DSound
cloning waveOutGetPosition (non-PCM) cloning waveOutGetPosition (non-PCM) IPortClsVersionIPortClsVersion
Windows Me QFE ndash 280127USAMEXEWindows Me QFE ndash 280127USAMEXE USB MIDI CD slider glitch reductionUSB MIDI CD slider glitch reduction
Talk to PSS for redist rights for 9x QFEsTalk to PSS for redist rights for 9x QFEs
New FeaturesNew FeaturesAdded in Service Pack ReleasesAdded in Service Pack Releases
Windows 2000 Service Pack 1Windows 2000 Service Pack 1 No audio changesNo audio changes
Windows 2000 Service Pack 2Windows 2000 Service Pack 2 Non-PCM volume persistence DSound Non-PCM volume persistence DSound
cloning IPortClsVersioncloning IPortClsVersion
No further SP work expected at this timeNo further SP work expected at this time
(Un)Features(Un)FeaturesWhatrsquos not present in Windows XPWhatrsquos not present in Windows XP
HW acceleration of DirectX 8HW acceleration of DirectX 8 Planned for subsequent releasePlanned for subsequent release
USB2 supportUSB2 support Support for tons of 1394 devices (mLan)Support for tons of 1394 devices (mLan) Very low-latency PCM via DSoundwaveVery low-latency PCM via DSoundwave Multi-channel peakmeters SetPan Multi-channel peakmeters SetPan
waveOutSetVolume supermix APIwaveOutSetVolume supermix API Dynamic changes in topology or formatDynamic changes in topology or format Support for custom mixer line controlsSupport for custom mixer line controls
DDK Documentation DDK Documentation Additions and UpdatesAdditions and Updates
(big thanks to Windows (big thanks to Windows DDK doc team particularly DDK doc team particularly
Jerry Van Aken)Jerry Van Aken)
DDK Doc ChangesDDK Doc ChangesNew MaterialNew Material
Hardware EventsHardware Events DirectSound HW Acceleration SliderDirectSound HW Acceleration Slider DirectSound speaker configuration settings DirectSound speaker configuration settings Supporting non-PCM wave formats Supporting non-PCM wave formats
From hwdevaudio White PaperFrom hwdevaudio White Paper
Digital Rights ManagementDigital Rights Management From Windows 2000 DDK addendumFrom Windows 2000 DDK addendum
WDM Audio platform differencesWDM Audio platform differences
DDK Doc ChangesDDK Doc ChangesNew Material (2)New Material (2)
KMixer driver Sample Rate Conversion KMixer driver Sample Rate Conversion and mixing policyand mixing policy
Factors governing Wave-output latencyFactors governing Wave-output latency DirectSound capture effectsDirectSound capture effects
Including AEC AGC NSIncluding AEC AGC NS
Multifunction audio devicesMultifunction audio devices Installing and configuring Audio driversInstalling and configuring Audio drivers Windows 2000 device-interface limitsWindows 2000 device-interface limits
DDK Doc ChangesDDK Doc ChangesNew Material (3)New Material (3)
Extensions to legacy Windows Extensions to legacy Windows Multimedia APIsMultimedia APIs Extended capabilities in WDM Audio driversExtended capabilities in WDM Audio drivers Accessing the preferred Device IDAccessing the preferred Device ID
Media-Class INF ExtensionsMedia-Class INF Extensions AlsoInstall Known FilesAlsoInstall Known Files
Data-intersection handlersData-intersection handlers Power management for Audio driversPower management for Audio drivers Version numbering for Audio driversVersion numbering for Audio drivers
DDK Doc ChangesDDK Doc ChangesExisting information augmentedExisting information augmented
USB AudioMIDI class driver descriptionUSB AudioMIDI class driver description Supporting hardware acceleration of Supporting hardware acceleration of
DirectSound 2-dimensional mixingDirectSound 2-dimensional mixing Kernel Streaming topology to Audio Kernel Streaming topology to Audio
Mixer API translationMixer API translation Clarified use of Clarified use of
PcNewRegistryKey PcNewRegistryKey NewMasterDmaChannel NewMasterDmaChannel PcRegisterPhysicalConnection PcRegisterPhysicalConnection PcAddAdapterDevice and so onPcAddAdapterDevice and so on
DDK Doc ChangesDDK Doc ChangesNew Material Already Added post-BetaNew Material Already Added post-Beta
Global Effects filtersGlobal Effects filters AEC system filterAEC system filter Media-Class INF ExtensionsMedia-Class INF Extensions
KnownRegEntries SetupPreferredAudioDevicesKnownRegEntries SetupPreferredAudioDevices
Control Panel branding by vendorsControl Panel branding by vendors Speaker configuration updateSpeaker configuration update
Elaboration of driver implementation of Elaboration of driver implementation of DSSPEAKER_SURROUND and DSSPEAKER_SURROUND and DSSPEAKER_DIRECTOUT modesDSSPEAKER_DIRECTOUT modes
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-BetaNew Material To Be Added post-Beta
Update information about Microsoftrsquos AEC Update information about Microsoftrsquos AEC implementationimplementation
64-bit driver and API specifics64-bit driver and API specifics Detecting different WDM platformsDetecting different WDM platforms
Including how to detect which QFESP is installedIncluding how to detect which QFESP is installed Differences between WDM audio platformsDifferences between WDM audio platforms
Including a taxonomy of the different QFEsSPsIncluding a taxonomy of the different QFEsSPs Explain MME device limits in Win XPExplain MME device limits in Win XP Chart showing non-PCM support among Chart showing non-PCM support among
different WDM OSesdifferent WDM OSes Additional DRM documentationAdditional DRM documentation
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-Beta (2)New Material To Be Added post-Beta (2)
Using the migration DLL to retain a 9x WDM Using the migration DLL to retain a 9x WDM driver during upgrade to NTOSdriver during upgrade to NTOS
Document how a driver exposes multi-channel Document how a driver exposes multi-channel volumemute nodesvolumemute nodes
New default settings for sliders in Win XPNew default settings for sliders in Win XP DirectSound HW acceleration slider DirectSound HW acceleration slider SRC quality (used for DSound output only)SRC quality (used for DSound output only)
DSound support for mix of 2D3D pinsDSound support for mix of 2D3D pins Overriding the IDmaChannel interfaceOverriding the IDmaChannel interface Info for audio bus driversInfo for audio bus drivers ldquoldquoWhich sample to start withrdquo - Overview of Which sample to start withrdquo - Overview of
the various DDK samplesthe various DDK samples
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
NewNew GFX ndash global effect filterGFX ndash global effect filter MSVAD ndash virtual audio deviceMSVAD ndash virtual audio device
ImprovedImproved AC97smpl ndash Intel ICH2AC97smpl ndash Intel ICH2 DDKSynth ndash kernel software synthDDKSynth ndash kernel software synth DMusUART ndash MPU miniportDMusUART ndash MPU miniport SB16 ndash ISA sample SB16 ndash ISA sample
AC97 SampleAC97 SampleAdditions and UpgradesAdditions and Upgrades
New interactive INF Viewer toolNew interactive INF Viewer tool Contains migration DLL sample codeContains migration DLL sample code
New property page amp CPLNew property page amp CPL Speaker configuration propertySpeaker configuration property
KSPROPERTY_AUDIO_CHANNEL_CONFIGKSPROPERTY_AUDIO_CHANNEL_CONFIG Driver writes to registry upon setDriver writes to registry upon set Driver reads registry value upon getDriver reads registry value upon get
Also at MiniportInit Also at MiniportInit
Other custom properties - Get (and Set)Other custom properties - Get (and Set)
AC97 SampleAC97 SampleAdditions and Upgrades (2)Additions and Upgrades (2)
WAVEFORMATPCMEX support for WAVEFORMATPCMEX support for multi-channel streamsmulti-channel streams
Support for Intel 820 (multi-channel ac97 codecs)Support for Intel 820 (multi-channel ac97 codecs) Multi-channel volume workarounds for past Multi-channel volume workarounds for past
versions of Windowsversions of Windows How to add additional nodesconnections for surround How to add additional nodesconnections for surround
and centerLFEand centerLFE Send sample rate change requests there etcSend sample rate change requests there etc
How to add virtual master volume (mono) if 4 or 6 How to add virtual master volume (mono) if 4 or 6 channel presentchannel present
How to change data range depending on number of ac97 How to change data range depending on number of ac97 codecs detectedcodecs detected
Multi-channel mute and volume handlersMulti-channel mute and volume handlers
AC97 SampleAC97 SampleAdditions and Upgrades (3)Additions and Upgrades (3)
DRM supportDRM support Note that it cant detect presence of SPDIF Note that it cant detect presence of SPDIF
on non-compliant ac97 codecs so this is on non-compliant ac97 codecs so this is questionablequestionable
Vastly improved INFVastly improved INF Significant DataRangeIntersection Significant DataRangeIntersection
handler cleanuphandler cleanup Better synchronizationBetter synchronization
MapLock not held during MapLock not held during PortStream-gtGetMappingPortStream-gtGetMapping
AC97 SampleAC97 SampleAdditions and Upgrades (4)Additions and Upgrades (4)
Treat D2 exactly like D3 nowTreat D2 exactly like D3 now Disconnect interrupt anytime not in D0 nowDisconnect interrupt anytime not in D0 now Note bug fix at minwavecpp line 570-72 Note bug fix at minwavecpp line 570-72
(Win9x removeadd doesnrsquot destroy filter (Win9x removeadd doesnrsquot destroy filter descriptor)descriptor)
GetAllocatorFraming FrameSize must be GetAllocatorFraming FrameSize must be sample block alignedsample block aligned
Pins DataRangeSampleSize should be set Pins DataRangeSampleSize should be set to non-zeroto non-zero
Code clean up from Windows 2000Code clean up from Windows 2000
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
AgendaAgenda Slides to be posted on WinHEC siteSlides to be posted on WinHEC site New featuresNew features DDK documentation additionsupdatesDDK documentation additionsupdates Newupdated DDK samplesNewupdated DDK samples New DDK toolsNew DDK tools Important OS changesImportant OS changes Common problems Common problems Resources for WDM audio developersResources for WDM audio developers What can What can youyou do next do next
New FeaturesNew Features
New FeaturesNew FeaturesAdded in Windows XPAdded in Windows XP
Improved multi-channel supportImproved multi-channel support Support for multi-channel volumemute Support for multi-channel volumemute
KS topology nodesKS topology nodes Translates into appropriate mixer controlsTranslates into appropriate mixer controls No Mixer API changes neededNo Mixer API changes needed (waveOutSetVolume DirectSound SetPan (waveOutSetVolume DirectSound SetPan
APIs not yet revised still stereo only)APIs not yet revised still stereo only) DDK documentation and relevant sample DDK documentation and relevant sample
code (in ac97smpl) to be added post-Beta 2code (in ac97smpl) to be added post-Beta 2
Increased SysAudio numChans 6-gt24Increased SysAudio numChans 6-gt24
New FeaturesNew FeaturesAdded in Windows XP (2)Added in Windows XP (2)
Additional multi-channel supportAdditional multi-channel support Multi-channel volume property pageMulti-channel volume property page
Invoked from SndVol32 and Sounds CPL Invoked from SndVol32 and Sounds CPL (Volume|Speaker Volumehellip)(Volume|Speaker Volumehellip)
Manipulates individual volumes of multi-Manipulates individual volumes of multi-channel controls channel controls
DirectSound SetSpeakerConfig API and DirectSound SetSpeakerConfig API and CPL Volume|Advanced|Speakers paneCPL Volume|Advanced|Speakers pane New enums for 71 and ldquoNo speakersrdquoNew enums for 71 and ldquoNo speakersrdquo Revamped bitmaps to better express configsRevamped bitmaps to better express configs
Fixed KMixer SuperMix defaultsFixed KMixer SuperMix defaults
New FeaturesNew FeaturesAdded in Windows XP (3)Added in Windows XP (3)
Extended capabilitiesExtended capabilities Returns GUIDs for MID amp PID ULONGs for driver version Returns GUIDs for MID amp PID ULONGs for driver version
amp revision plus GUID to specify a long name stored in amp revision plus GUID to specify a long name stored in registry (MediaCategories) by INFregistry (MediaCategories) by INF
KS property on wave filterKS property on wave filter KSPROPSETID_GeneralKSPROPSETID_General KSPROPERTY_GENERAL_COMPONENTIDKSPROPERTY_GENERAL_COMPONENTID
DDK sample MSVADsimpleDDK sample MSVADsimple 1394 audio class driver (AVCAudiosys)1394 audio class driver (AVCAudiosys) AC97 controller driversAC97 controller drivers
Intel (ICH2) VIA ALi SiSIntel (ICH2) VIA ALi SiS Strong suggestion new codecs pass all WHQL tests Strong suggestion new codecs pass all WHQL tests
with Windows XP in-box controller driverswith Windows XP in-box controller drivers
New FeaturesNew FeaturesAdded in Windows XP (4)Added in Windows XP (4)
64-bit support64-bit support All core components and DDK samples portedAll core components and DDK samples ported HW drivers for USBAudio CS4281 AVCAudioHW drivers for USBAudio CS4281 AVCAudio Native 64-bit API supportNative 64-bit API support
DirectSound DirectShow KsProxyKSUSERDirectSound DirectShow KsProxyKSUSER waveOutIn midiOutIn mixer aux MCI ACMwaveOutIn midiOutIn mixer aux MCI ACM Not enabled DirectMusicNot enabled DirectMusic
32-bit WOW API support32-bit WOW API support DirectSound (emulation only) DirectShowDirectSound (emulation only) DirectShow waveOutIn midiOut mixer aux MCI ACMwaveOutIn midiOut mixer aux MCI ACM Not enabled KsProxyKSUSER DirectSound (non-Not enabled KsProxyKSUSER DirectSound (non-
emulated) midiIn DirectMusicemulated) midiIn DirectMusic
New FeaturesNew FeaturesAdded in Windows XP (5)Added in Windows XP (5)
Acoustic Echo Cancellation supportAcoustic Echo Cancellation support Noise Suppression and Automatic Gain Noise Suppression and Automatic Gain
Control are optionally includedControl are optionally included Inserted at lowest level (post-mixer)Inserted at lowest level (post-mixer) Accessed via DSound8 full duplex objectAccessed via DSound8 full duplex object Can be hardware-acceleratedCan be hardware-accelerated MS system-supplied AECMS system-supplied AEC
AVStream componentAVStream component 8 kHz-22 kHz 16-bit mono8 kHz-22 kHz 16-bit mono No clock rate matching for inputoutputNo clock rate matching for inputoutput
New FeaturesNew FeaturesAdded in Windows XP (6)Added in Windows XP (6)
Global Effects Filters (GFX)Global Effects Filters (GFX) Recommended for hardware-specific master effects Recommended for hardware-specific master effects
(speaker compensation mic array filters) (speaker compensation mic array filters) Also useful for general audio processing (EQ)Also useful for general audio processing (EQ) Applied to final playback mix or original capture signal Applied to final playback mix or original capture signal
for all APIsfor all APIs Hardware-specific effects automatically addedHardware-specific effects automatically added Sounds control panel (Audio|Advancedhellip|Effects) used Sounds control panel (Audio|Advancedhellip|Effects) used
to add reorder manipulate effectsto add reorder manipulate effects Vendor-supplied UI invoked from Sounds CPLVendor-supplied UI invoked from Sounds CPL Vendor implements effect as AVStream filterVendor implements effect as AVStream filter Restricted to USB devices on Windows XPRestricted to USB devices on Windows XP Future OS releases will allow application to any audio Future OS releases will allow application to any audio
device with supporting HW driverdevice with supporting HW driver
New FeaturesNew FeaturesAdded in Windows MeAdded in Windows Me
Secure Audio Path (kernel mode DRM)Secure Audio Path (kernel mode DRM) Now required for Windows XP logoNow required for Windows XP logo
USB MIDIUSB MIDI WinME QFE available for MIDIaudio devicesWinME QFE available for MIDIaudio devices
Non-PCM outputNon-PCM output Also in Windows 2000 Service Pack 2Also in Windows 2000 Service Pack 2 Also available in Windows 98 SE QFEAlso available in Windows 98 SE QFE
Contact Microsoft Product Support Services for thisContact Microsoft Product Support Services for this
Peakmeter support and supporting SndVol UIPeakmeter support and supporting SndVol UI
New FeaturesNew FeaturesAdded in QFE ReleasesAdded in QFE Releases
QFEs are supersets backward-inclusiveQFEs are supersets backward-inclusive Windows 98 SE QFE ndash 269601USA8EXEWindows 98 SE QFE ndash 269601USA8EXE
Non-PCM Windows 2000 fixes SoftFMNon-PCM Windows 2000 fixes SoftFM Not included volume persistence DSound Not included volume persistence DSound
cloning waveOutGetPosition (non-PCM) cloning waveOutGetPosition (non-PCM) IPortClsVersionIPortClsVersion
Windows Me QFE ndash 280127USAMEXEWindows Me QFE ndash 280127USAMEXE USB MIDI CD slider glitch reductionUSB MIDI CD slider glitch reduction
Talk to PSS for redist rights for 9x QFEsTalk to PSS for redist rights for 9x QFEs
New FeaturesNew FeaturesAdded in Service Pack ReleasesAdded in Service Pack Releases
Windows 2000 Service Pack 1Windows 2000 Service Pack 1 No audio changesNo audio changes
Windows 2000 Service Pack 2Windows 2000 Service Pack 2 Non-PCM volume persistence DSound Non-PCM volume persistence DSound
cloning IPortClsVersioncloning IPortClsVersion
No further SP work expected at this timeNo further SP work expected at this time
(Un)Features(Un)FeaturesWhatrsquos not present in Windows XPWhatrsquos not present in Windows XP
HW acceleration of DirectX 8HW acceleration of DirectX 8 Planned for subsequent releasePlanned for subsequent release
USB2 supportUSB2 support Support for tons of 1394 devices (mLan)Support for tons of 1394 devices (mLan) Very low-latency PCM via DSoundwaveVery low-latency PCM via DSoundwave Multi-channel peakmeters SetPan Multi-channel peakmeters SetPan
waveOutSetVolume supermix APIwaveOutSetVolume supermix API Dynamic changes in topology or formatDynamic changes in topology or format Support for custom mixer line controlsSupport for custom mixer line controls
DDK Documentation DDK Documentation Additions and UpdatesAdditions and Updates
(big thanks to Windows (big thanks to Windows DDK doc team particularly DDK doc team particularly
Jerry Van Aken)Jerry Van Aken)
DDK Doc ChangesDDK Doc ChangesNew MaterialNew Material
Hardware EventsHardware Events DirectSound HW Acceleration SliderDirectSound HW Acceleration Slider DirectSound speaker configuration settings DirectSound speaker configuration settings Supporting non-PCM wave formats Supporting non-PCM wave formats
From hwdevaudio White PaperFrom hwdevaudio White Paper
Digital Rights ManagementDigital Rights Management From Windows 2000 DDK addendumFrom Windows 2000 DDK addendum
WDM Audio platform differencesWDM Audio platform differences
DDK Doc ChangesDDK Doc ChangesNew Material (2)New Material (2)
KMixer driver Sample Rate Conversion KMixer driver Sample Rate Conversion and mixing policyand mixing policy
Factors governing Wave-output latencyFactors governing Wave-output latency DirectSound capture effectsDirectSound capture effects
Including AEC AGC NSIncluding AEC AGC NS
Multifunction audio devicesMultifunction audio devices Installing and configuring Audio driversInstalling and configuring Audio drivers Windows 2000 device-interface limitsWindows 2000 device-interface limits
DDK Doc ChangesDDK Doc ChangesNew Material (3)New Material (3)
Extensions to legacy Windows Extensions to legacy Windows Multimedia APIsMultimedia APIs Extended capabilities in WDM Audio driversExtended capabilities in WDM Audio drivers Accessing the preferred Device IDAccessing the preferred Device ID
Media-Class INF ExtensionsMedia-Class INF Extensions AlsoInstall Known FilesAlsoInstall Known Files
Data-intersection handlersData-intersection handlers Power management for Audio driversPower management for Audio drivers Version numbering for Audio driversVersion numbering for Audio drivers
DDK Doc ChangesDDK Doc ChangesExisting information augmentedExisting information augmented
USB AudioMIDI class driver descriptionUSB AudioMIDI class driver description Supporting hardware acceleration of Supporting hardware acceleration of
DirectSound 2-dimensional mixingDirectSound 2-dimensional mixing Kernel Streaming topology to Audio Kernel Streaming topology to Audio
Mixer API translationMixer API translation Clarified use of Clarified use of
PcNewRegistryKey PcNewRegistryKey NewMasterDmaChannel NewMasterDmaChannel PcRegisterPhysicalConnection PcRegisterPhysicalConnection PcAddAdapterDevice and so onPcAddAdapterDevice and so on
DDK Doc ChangesDDK Doc ChangesNew Material Already Added post-BetaNew Material Already Added post-Beta
Global Effects filtersGlobal Effects filters AEC system filterAEC system filter Media-Class INF ExtensionsMedia-Class INF Extensions
KnownRegEntries SetupPreferredAudioDevicesKnownRegEntries SetupPreferredAudioDevices
Control Panel branding by vendorsControl Panel branding by vendors Speaker configuration updateSpeaker configuration update
Elaboration of driver implementation of Elaboration of driver implementation of DSSPEAKER_SURROUND and DSSPEAKER_SURROUND and DSSPEAKER_DIRECTOUT modesDSSPEAKER_DIRECTOUT modes
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-BetaNew Material To Be Added post-Beta
Update information about Microsoftrsquos AEC Update information about Microsoftrsquos AEC implementationimplementation
64-bit driver and API specifics64-bit driver and API specifics Detecting different WDM platformsDetecting different WDM platforms
Including how to detect which QFESP is installedIncluding how to detect which QFESP is installed Differences between WDM audio platformsDifferences between WDM audio platforms
Including a taxonomy of the different QFEsSPsIncluding a taxonomy of the different QFEsSPs Explain MME device limits in Win XPExplain MME device limits in Win XP Chart showing non-PCM support among Chart showing non-PCM support among
different WDM OSesdifferent WDM OSes Additional DRM documentationAdditional DRM documentation
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-Beta (2)New Material To Be Added post-Beta (2)
Using the migration DLL to retain a 9x WDM Using the migration DLL to retain a 9x WDM driver during upgrade to NTOSdriver during upgrade to NTOS
Document how a driver exposes multi-channel Document how a driver exposes multi-channel volumemute nodesvolumemute nodes
New default settings for sliders in Win XPNew default settings for sliders in Win XP DirectSound HW acceleration slider DirectSound HW acceleration slider SRC quality (used for DSound output only)SRC quality (used for DSound output only)
DSound support for mix of 2D3D pinsDSound support for mix of 2D3D pins Overriding the IDmaChannel interfaceOverriding the IDmaChannel interface Info for audio bus driversInfo for audio bus drivers ldquoldquoWhich sample to start withrdquo - Overview of Which sample to start withrdquo - Overview of
the various DDK samplesthe various DDK samples
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
NewNew GFX ndash global effect filterGFX ndash global effect filter MSVAD ndash virtual audio deviceMSVAD ndash virtual audio device
ImprovedImproved AC97smpl ndash Intel ICH2AC97smpl ndash Intel ICH2 DDKSynth ndash kernel software synthDDKSynth ndash kernel software synth DMusUART ndash MPU miniportDMusUART ndash MPU miniport SB16 ndash ISA sample SB16 ndash ISA sample
AC97 SampleAC97 SampleAdditions and UpgradesAdditions and Upgrades
New interactive INF Viewer toolNew interactive INF Viewer tool Contains migration DLL sample codeContains migration DLL sample code
New property page amp CPLNew property page amp CPL Speaker configuration propertySpeaker configuration property
KSPROPERTY_AUDIO_CHANNEL_CONFIGKSPROPERTY_AUDIO_CHANNEL_CONFIG Driver writes to registry upon setDriver writes to registry upon set Driver reads registry value upon getDriver reads registry value upon get
Also at MiniportInit Also at MiniportInit
Other custom properties - Get (and Set)Other custom properties - Get (and Set)
AC97 SampleAC97 SampleAdditions and Upgrades (2)Additions and Upgrades (2)
WAVEFORMATPCMEX support for WAVEFORMATPCMEX support for multi-channel streamsmulti-channel streams
Support for Intel 820 (multi-channel ac97 codecs)Support for Intel 820 (multi-channel ac97 codecs) Multi-channel volume workarounds for past Multi-channel volume workarounds for past
versions of Windowsversions of Windows How to add additional nodesconnections for surround How to add additional nodesconnections for surround
and centerLFEand centerLFE Send sample rate change requests there etcSend sample rate change requests there etc
How to add virtual master volume (mono) if 4 or 6 How to add virtual master volume (mono) if 4 or 6 channel presentchannel present
How to change data range depending on number of ac97 How to change data range depending on number of ac97 codecs detectedcodecs detected
Multi-channel mute and volume handlersMulti-channel mute and volume handlers
AC97 SampleAC97 SampleAdditions and Upgrades (3)Additions and Upgrades (3)
DRM supportDRM support Note that it cant detect presence of SPDIF Note that it cant detect presence of SPDIF
on non-compliant ac97 codecs so this is on non-compliant ac97 codecs so this is questionablequestionable
Vastly improved INFVastly improved INF Significant DataRangeIntersection Significant DataRangeIntersection
handler cleanuphandler cleanup Better synchronizationBetter synchronization
MapLock not held during MapLock not held during PortStream-gtGetMappingPortStream-gtGetMapping
AC97 SampleAC97 SampleAdditions and Upgrades (4)Additions and Upgrades (4)
Treat D2 exactly like D3 nowTreat D2 exactly like D3 now Disconnect interrupt anytime not in D0 nowDisconnect interrupt anytime not in D0 now Note bug fix at minwavecpp line 570-72 Note bug fix at minwavecpp line 570-72
(Win9x removeadd doesnrsquot destroy filter (Win9x removeadd doesnrsquot destroy filter descriptor)descriptor)
GetAllocatorFraming FrameSize must be GetAllocatorFraming FrameSize must be sample block alignedsample block aligned
Pins DataRangeSampleSize should be set Pins DataRangeSampleSize should be set to non-zeroto non-zero
Code clean up from Windows 2000Code clean up from Windows 2000
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
New FeaturesNew Features
New FeaturesNew FeaturesAdded in Windows XPAdded in Windows XP
Improved multi-channel supportImproved multi-channel support Support for multi-channel volumemute Support for multi-channel volumemute
KS topology nodesKS topology nodes Translates into appropriate mixer controlsTranslates into appropriate mixer controls No Mixer API changes neededNo Mixer API changes needed (waveOutSetVolume DirectSound SetPan (waveOutSetVolume DirectSound SetPan
APIs not yet revised still stereo only)APIs not yet revised still stereo only) DDK documentation and relevant sample DDK documentation and relevant sample
code (in ac97smpl) to be added post-Beta 2code (in ac97smpl) to be added post-Beta 2
Increased SysAudio numChans 6-gt24Increased SysAudio numChans 6-gt24
New FeaturesNew FeaturesAdded in Windows XP (2)Added in Windows XP (2)
Additional multi-channel supportAdditional multi-channel support Multi-channel volume property pageMulti-channel volume property page
Invoked from SndVol32 and Sounds CPL Invoked from SndVol32 and Sounds CPL (Volume|Speaker Volumehellip)(Volume|Speaker Volumehellip)
Manipulates individual volumes of multi-Manipulates individual volumes of multi-channel controls channel controls
DirectSound SetSpeakerConfig API and DirectSound SetSpeakerConfig API and CPL Volume|Advanced|Speakers paneCPL Volume|Advanced|Speakers pane New enums for 71 and ldquoNo speakersrdquoNew enums for 71 and ldquoNo speakersrdquo Revamped bitmaps to better express configsRevamped bitmaps to better express configs
Fixed KMixer SuperMix defaultsFixed KMixer SuperMix defaults
New FeaturesNew FeaturesAdded in Windows XP (3)Added in Windows XP (3)
Extended capabilitiesExtended capabilities Returns GUIDs for MID amp PID ULONGs for driver version Returns GUIDs for MID amp PID ULONGs for driver version
amp revision plus GUID to specify a long name stored in amp revision plus GUID to specify a long name stored in registry (MediaCategories) by INFregistry (MediaCategories) by INF
KS property on wave filterKS property on wave filter KSPROPSETID_GeneralKSPROPSETID_General KSPROPERTY_GENERAL_COMPONENTIDKSPROPERTY_GENERAL_COMPONENTID
DDK sample MSVADsimpleDDK sample MSVADsimple 1394 audio class driver (AVCAudiosys)1394 audio class driver (AVCAudiosys) AC97 controller driversAC97 controller drivers
Intel (ICH2) VIA ALi SiSIntel (ICH2) VIA ALi SiS Strong suggestion new codecs pass all WHQL tests Strong suggestion new codecs pass all WHQL tests
with Windows XP in-box controller driverswith Windows XP in-box controller drivers
New FeaturesNew FeaturesAdded in Windows XP (4)Added in Windows XP (4)
64-bit support64-bit support All core components and DDK samples portedAll core components and DDK samples ported HW drivers for USBAudio CS4281 AVCAudioHW drivers for USBAudio CS4281 AVCAudio Native 64-bit API supportNative 64-bit API support
DirectSound DirectShow KsProxyKSUSERDirectSound DirectShow KsProxyKSUSER waveOutIn midiOutIn mixer aux MCI ACMwaveOutIn midiOutIn mixer aux MCI ACM Not enabled DirectMusicNot enabled DirectMusic
32-bit WOW API support32-bit WOW API support DirectSound (emulation only) DirectShowDirectSound (emulation only) DirectShow waveOutIn midiOut mixer aux MCI ACMwaveOutIn midiOut mixer aux MCI ACM Not enabled KsProxyKSUSER DirectSound (non-Not enabled KsProxyKSUSER DirectSound (non-
emulated) midiIn DirectMusicemulated) midiIn DirectMusic
New FeaturesNew FeaturesAdded in Windows XP (5)Added in Windows XP (5)
Acoustic Echo Cancellation supportAcoustic Echo Cancellation support Noise Suppression and Automatic Gain Noise Suppression and Automatic Gain
Control are optionally includedControl are optionally included Inserted at lowest level (post-mixer)Inserted at lowest level (post-mixer) Accessed via DSound8 full duplex objectAccessed via DSound8 full duplex object Can be hardware-acceleratedCan be hardware-accelerated MS system-supplied AECMS system-supplied AEC
AVStream componentAVStream component 8 kHz-22 kHz 16-bit mono8 kHz-22 kHz 16-bit mono No clock rate matching for inputoutputNo clock rate matching for inputoutput
New FeaturesNew FeaturesAdded in Windows XP (6)Added in Windows XP (6)
Global Effects Filters (GFX)Global Effects Filters (GFX) Recommended for hardware-specific master effects Recommended for hardware-specific master effects
(speaker compensation mic array filters) (speaker compensation mic array filters) Also useful for general audio processing (EQ)Also useful for general audio processing (EQ) Applied to final playback mix or original capture signal Applied to final playback mix or original capture signal
for all APIsfor all APIs Hardware-specific effects automatically addedHardware-specific effects automatically added Sounds control panel (Audio|Advancedhellip|Effects) used Sounds control panel (Audio|Advancedhellip|Effects) used
to add reorder manipulate effectsto add reorder manipulate effects Vendor-supplied UI invoked from Sounds CPLVendor-supplied UI invoked from Sounds CPL Vendor implements effect as AVStream filterVendor implements effect as AVStream filter Restricted to USB devices on Windows XPRestricted to USB devices on Windows XP Future OS releases will allow application to any audio Future OS releases will allow application to any audio
device with supporting HW driverdevice with supporting HW driver
New FeaturesNew FeaturesAdded in Windows MeAdded in Windows Me
Secure Audio Path (kernel mode DRM)Secure Audio Path (kernel mode DRM) Now required for Windows XP logoNow required for Windows XP logo
USB MIDIUSB MIDI WinME QFE available for MIDIaudio devicesWinME QFE available for MIDIaudio devices
Non-PCM outputNon-PCM output Also in Windows 2000 Service Pack 2Also in Windows 2000 Service Pack 2 Also available in Windows 98 SE QFEAlso available in Windows 98 SE QFE
Contact Microsoft Product Support Services for thisContact Microsoft Product Support Services for this
Peakmeter support and supporting SndVol UIPeakmeter support and supporting SndVol UI
New FeaturesNew FeaturesAdded in QFE ReleasesAdded in QFE Releases
QFEs are supersets backward-inclusiveQFEs are supersets backward-inclusive Windows 98 SE QFE ndash 269601USA8EXEWindows 98 SE QFE ndash 269601USA8EXE
Non-PCM Windows 2000 fixes SoftFMNon-PCM Windows 2000 fixes SoftFM Not included volume persistence DSound Not included volume persistence DSound
cloning waveOutGetPosition (non-PCM) cloning waveOutGetPosition (non-PCM) IPortClsVersionIPortClsVersion
Windows Me QFE ndash 280127USAMEXEWindows Me QFE ndash 280127USAMEXE USB MIDI CD slider glitch reductionUSB MIDI CD slider glitch reduction
Talk to PSS for redist rights for 9x QFEsTalk to PSS for redist rights for 9x QFEs
New FeaturesNew FeaturesAdded in Service Pack ReleasesAdded in Service Pack Releases
Windows 2000 Service Pack 1Windows 2000 Service Pack 1 No audio changesNo audio changes
Windows 2000 Service Pack 2Windows 2000 Service Pack 2 Non-PCM volume persistence DSound Non-PCM volume persistence DSound
cloning IPortClsVersioncloning IPortClsVersion
No further SP work expected at this timeNo further SP work expected at this time
(Un)Features(Un)FeaturesWhatrsquos not present in Windows XPWhatrsquos not present in Windows XP
HW acceleration of DirectX 8HW acceleration of DirectX 8 Planned for subsequent releasePlanned for subsequent release
USB2 supportUSB2 support Support for tons of 1394 devices (mLan)Support for tons of 1394 devices (mLan) Very low-latency PCM via DSoundwaveVery low-latency PCM via DSoundwave Multi-channel peakmeters SetPan Multi-channel peakmeters SetPan
waveOutSetVolume supermix APIwaveOutSetVolume supermix API Dynamic changes in topology or formatDynamic changes in topology or format Support for custom mixer line controlsSupport for custom mixer line controls
DDK Documentation DDK Documentation Additions and UpdatesAdditions and Updates
(big thanks to Windows (big thanks to Windows DDK doc team particularly DDK doc team particularly
Jerry Van Aken)Jerry Van Aken)
DDK Doc ChangesDDK Doc ChangesNew MaterialNew Material
Hardware EventsHardware Events DirectSound HW Acceleration SliderDirectSound HW Acceleration Slider DirectSound speaker configuration settings DirectSound speaker configuration settings Supporting non-PCM wave formats Supporting non-PCM wave formats
From hwdevaudio White PaperFrom hwdevaudio White Paper
Digital Rights ManagementDigital Rights Management From Windows 2000 DDK addendumFrom Windows 2000 DDK addendum
WDM Audio platform differencesWDM Audio platform differences
DDK Doc ChangesDDK Doc ChangesNew Material (2)New Material (2)
KMixer driver Sample Rate Conversion KMixer driver Sample Rate Conversion and mixing policyand mixing policy
Factors governing Wave-output latencyFactors governing Wave-output latency DirectSound capture effectsDirectSound capture effects
Including AEC AGC NSIncluding AEC AGC NS
Multifunction audio devicesMultifunction audio devices Installing and configuring Audio driversInstalling and configuring Audio drivers Windows 2000 device-interface limitsWindows 2000 device-interface limits
DDK Doc ChangesDDK Doc ChangesNew Material (3)New Material (3)
Extensions to legacy Windows Extensions to legacy Windows Multimedia APIsMultimedia APIs Extended capabilities in WDM Audio driversExtended capabilities in WDM Audio drivers Accessing the preferred Device IDAccessing the preferred Device ID
Media-Class INF ExtensionsMedia-Class INF Extensions AlsoInstall Known FilesAlsoInstall Known Files
Data-intersection handlersData-intersection handlers Power management for Audio driversPower management for Audio drivers Version numbering for Audio driversVersion numbering for Audio drivers
DDK Doc ChangesDDK Doc ChangesExisting information augmentedExisting information augmented
USB AudioMIDI class driver descriptionUSB AudioMIDI class driver description Supporting hardware acceleration of Supporting hardware acceleration of
DirectSound 2-dimensional mixingDirectSound 2-dimensional mixing Kernel Streaming topology to Audio Kernel Streaming topology to Audio
Mixer API translationMixer API translation Clarified use of Clarified use of
PcNewRegistryKey PcNewRegistryKey NewMasterDmaChannel NewMasterDmaChannel PcRegisterPhysicalConnection PcRegisterPhysicalConnection PcAddAdapterDevice and so onPcAddAdapterDevice and so on
DDK Doc ChangesDDK Doc ChangesNew Material Already Added post-BetaNew Material Already Added post-Beta
Global Effects filtersGlobal Effects filters AEC system filterAEC system filter Media-Class INF ExtensionsMedia-Class INF Extensions
KnownRegEntries SetupPreferredAudioDevicesKnownRegEntries SetupPreferredAudioDevices
Control Panel branding by vendorsControl Panel branding by vendors Speaker configuration updateSpeaker configuration update
Elaboration of driver implementation of Elaboration of driver implementation of DSSPEAKER_SURROUND and DSSPEAKER_SURROUND and DSSPEAKER_DIRECTOUT modesDSSPEAKER_DIRECTOUT modes
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-BetaNew Material To Be Added post-Beta
Update information about Microsoftrsquos AEC Update information about Microsoftrsquos AEC implementationimplementation
64-bit driver and API specifics64-bit driver and API specifics Detecting different WDM platformsDetecting different WDM platforms
Including how to detect which QFESP is installedIncluding how to detect which QFESP is installed Differences between WDM audio platformsDifferences between WDM audio platforms
Including a taxonomy of the different QFEsSPsIncluding a taxonomy of the different QFEsSPs Explain MME device limits in Win XPExplain MME device limits in Win XP Chart showing non-PCM support among Chart showing non-PCM support among
different WDM OSesdifferent WDM OSes Additional DRM documentationAdditional DRM documentation
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-Beta (2)New Material To Be Added post-Beta (2)
Using the migration DLL to retain a 9x WDM Using the migration DLL to retain a 9x WDM driver during upgrade to NTOSdriver during upgrade to NTOS
Document how a driver exposes multi-channel Document how a driver exposes multi-channel volumemute nodesvolumemute nodes
New default settings for sliders in Win XPNew default settings for sliders in Win XP DirectSound HW acceleration slider DirectSound HW acceleration slider SRC quality (used for DSound output only)SRC quality (used for DSound output only)
DSound support for mix of 2D3D pinsDSound support for mix of 2D3D pins Overriding the IDmaChannel interfaceOverriding the IDmaChannel interface Info for audio bus driversInfo for audio bus drivers ldquoldquoWhich sample to start withrdquo - Overview of Which sample to start withrdquo - Overview of
the various DDK samplesthe various DDK samples
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
NewNew GFX ndash global effect filterGFX ndash global effect filter MSVAD ndash virtual audio deviceMSVAD ndash virtual audio device
ImprovedImproved AC97smpl ndash Intel ICH2AC97smpl ndash Intel ICH2 DDKSynth ndash kernel software synthDDKSynth ndash kernel software synth DMusUART ndash MPU miniportDMusUART ndash MPU miniport SB16 ndash ISA sample SB16 ndash ISA sample
AC97 SampleAC97 SampleAdditions and UpgradesAdditions and Upgrades
New interactive INF Viewer toolNew interactive INF Viewer tool Contains migration DLL sample codeContains migration DLL sample code
New property page amp CPLNew property page amp CPL Speaker configuration propertySpeaker configuration property
KSPROPERTY_AUDIO_CHANNEL_CONFIGKSPROPERTY_AUDIO_CHANNEL_CONFIG Driver writes to registry upon setDriver writes to registry upon set Driver reads registry value upon getDriver reads registry value upon get
Also at MiniportInit Also at MiniportInit
Other custom properties - Get (and Set)Other custom properties - Get (and Set)
AC97 SampleAC97 SampleAdditions and Upgrades (2)Additions and Upgrades (2)
WAVEFORMATPCMEX support for WAVEFORMATPCMEX support for multi-channel streamsmulti-channel streams
Support for Intel 820 (multi-channel ac97 codecs)Support for Intel 820 (multi-channel ac97 codecs) Multi-channel volume workarounds for past Multi-channel volume workarounds for past
versions of Windowsversions of Windows How to add additional nodesconnections for surround How to add additional nodesconnections for surround
and centerLFEand centerLFE Send sample rate change requests there etcSend sample rate change requests there etc
How to add virtual master volume (mono) if 4 or 6 How to add virtual master volume (mono) if 4 or 6 channel presentchannel present
How to change data range depending on number of ac97 How to change data range depending on number of ac97 codecs detectedcodecs detected
Multi-channel mute and volume handlersMulti-channel mute and volume handlers
AC97 SampleAC97 SampleAdditions and Upgrades (3)Additions and Upgrades (3)
DRM supportDRM support Note that it cant detect presence of SPDIF Note that it cant detect presence of SPDIF
on non-compliant ac97 codecs so this is on non-compliant ac97 codecs so this is questionablequestionable
Vastly improved INFVastly improved INF Significant DataRangeIntersection Significant DataRangeIntersection
handler cleanuphandler cleanup Better synchronizationBetter synchronization
MapLock not held during MapLock not held during PortStream-gtGetMappingPortStream-gtGetMapping
AC97 SampleAC97 SampleAdditions and Upgrades (4)Additions and Upgrades (4)
Treat D2 exactly like D3 nowTreat D2 exactly like D3 now Disconnect interrupt anytime not in D0 nowDisconnect interrupt anytime not in D0 now Note bug fix at minwavecpp line 570-72 Note bug fix at minwavecpp line 570-72
(Win9x removeadd doesnrsquot destroy filter (Win9x removeadd doesnrsquot destroy filter descriptor)descriptor)
GetAllocatorFraming FrameSize must be GetAllocatorFraming FrameSize must be sample block alignedsample block aligned
Pins DataRangeSampleSize should be set Pins DataRangeSampleSize should be set to non-zeroto non-zero
Code clean up from Windows 2000Code clean up from Windows 2000
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
New FeaturesNew FeaturesAdded in Windows XPAdded in Windows XP
Improved multi-channel supportImproved multi-channel support Support for multi-channel volumemute Support for multi-channel volumemute
KS topology nodesKS topology nodes Translates into appropriate mixer controlsTranslates into appropriate mixer controls No Mixer API changes neededNo Mixer API changes needed (waveOutSetVolume DirectSound SetPan (waveOutSetVolume DirectSound SetPan
APIs not yet revised still stereo only)APIs not yet revised still stereo only) DDK documentation and relevant sample DDK documentation and relevant sample
code (in ac97smpl) to be added post-Beta 2code (in ac97smpl) to be added post-Beta 2
Increased SysAudio numChans 6-gt24Increased SysAudio numChans 6-gt24
New FeaturesNew FeaturesAdded in Windows XP (2)Added in Windows XP (2)
Additional multi-channel supportAdditional multi-channel support Multi-channel volume property pageMulti-channel volume property page
Invoked from SndVol32 and Sounds CPL Invoked from SndVol32 and Sounds CPL (Volume|Speaker Volumehellip)(Volume|Speaker Volumehellip)
Manipulates individual volumes of multi-Manipulates individual volumes of multi-channel controls channel controls
DirectSound SetSpeakerConfig API and DirectSound SetSpeakerConfig API and CPL Volume|Advanced|Speakers paneCPL Volume|Advanced|Speakers pane New enums for 71 and ldquoNo speakersrdquoNew enums for 71 and ldquoNo speakersrdquo Revamped bitmaps to better express configsRevamped bitmaps to better express configs
Fixed KMixer SuperMix defaultsFixed KMixer SuperMix defaults
New FeaturesNew FeaturesAdded in Windows XP (3)Added in Windows XP (3)
Extended capabilitiesExtended capabilities Returns GUIDs for MID amp PID ULONGs for driver version Returns GUIDs for MID amp PID ULONGs for driver version
amp revision plus GUID to specify a long name stored in amp revision plus GUID to specify a long name stored in registry (MediaCategories) by INFregistry (MediaCategories) by INF
KS property on wave filterKS property on wave filter KSPROPSETID_GeneralKSPROPSETID_General KSPROPERTY_GENERAL_COMPONENTIDKSPROPERTY_GENERAL_COMPONENTID
DDK sample MSVADsimpleDDK sample MSVADsimple 1394 audio class driver (AVCAudiosys)1394 audio class driver (AVCAudiosys) AC97 controller driversAC97 controller drivers
Intel (ICH2) VIA ALi SiSIntel (ICH2) VIA ALi SiS Strong suggestion new codecs pass all WHQL tests Strong suggestion new codecs pass all WHQL tests
with Windows XP in-box controller driverswith Windows XP in-box controller drivers
New FeaturesNew FeaturesAdded in Windows XP (4)Added in Windows XP (4)
64-bit support64-bit support All core components and DDK samples portedAll core components and DDK samples ported HW drivers for USBAudio CS4281 AVCAudioHW drivers for USBAudio CS4281 AVCAudio Native 64-bit API supportNative 64-bit API support
DirectSound DirectShow KsProxyKSUSERDirectSound DirectShow KsProxyKSUSER waveOutIn midiOutIn mixer aux MCI ACMwaveOutIn midiOutIn mixer aux MCI ACM Not enabled DirectMusicNot enabled DirectMusic
32-bit WOW API support32-bit WOW API support DirectSound (emulation only) DirectShowDirectSound (emulation only) DirectShow waveOutIn midiOut mixer aux MCI ACMwaveOutIn midiOut mixer aux MCI ACM Not enabled KsProxyKSUSER DirectSound (non-Not enabled KsProxyKSUSER DirectSound (non-
emulated) midiIn DirectMusicemulated) midiIn DirectMusic
New FeaturesNew FeaturesAdded in Windows XP (5)Added in Windows XP (5)
Acoustic Echo Cancellation supportAcoustic Echo Cancellation support Noise Suppression and Automatic Gain Noise Suppression and Automatic Gain
Control are optionally includedControl are optionally included Inserted at lowest level (post-mixer)Inserted at lowest level (post-mixer) Accessed via DSound8 full duplex objectAccessed via DSound8 full duplex object Can be hardware-acceleratedCan be hardware-accelerated MS system-supplied AECMS system-supplied AEC
AVStream componentAVStream component 8 kHz-22 kHz 16-bit mono8 kHz-22 kHz 16-bit mono No clock rate matching for inputoutputNo clock rate matching for inputoutput
New FeaturesNew FeaturesAdded in Windows XP (6)Added in Windows XP (6)
Global Effects Filters (GFX)Global Effects Filters (GFX) Recommended for hardware-specific master effects Recommended for hardware-specific master effects
(speaker compensation mic array filters) (speaker compensation mic array filters) Also useful for general audio processing (EQ)Also useful for general audio processing (EQ) Applied to final playback mix or original capture signal Applied to final playback mix or original capture signal
for all APIsfor all APIs Hardware-specific effects automatically addedHardware-specific effects automatically added Sounds control panel (Audio|Advancedhellip|Effects) used Sounds control panel (Audio|Advancedhellip|Effects) used
to add reorder manipulate effectsto add reorder manipulate effects Vendor-supplied UI invoked from Sounds CPLVendor-supplied UI invoked from Sounds CPL Vendor implements effect as AVStream filterVendor implements effect as AVStream filter Restricted to USB devices on Windows XPRestricted to USB devices on Windows XP Future OS releases will allow application to any audio Future OS releases will allow application to any audio
device with supporting HW driverdevice with supporting HW driver
New FeaturesNew FeaturesAdded in Windows MeAdded in Windows Me
Secure Audio Path (kernel mode DRM)Secure Audio Path (kernel mode DRM) Now required for Windows XP logoNow required for Windows XP logo
USB MIDIUSB MIDI WinME QFE available for MIDIaudio devicesWinME QFE available for MIDIaudio devices
Non-PCM outputNon-PCM output Also in Windows 2000 Service Pack 2Also in Windows 2000 Service Pack 2 Also available in Windows 98 SE QFEAlso available in Windows 98 SE QFE
Contact Microsoft Product Support Services for thisContact Microsoft Product Support Services for this
Peakmeter support and supporting SndVol UIPeakmeter support and supporting SndVol UI
New FeaturesNew FeaturesAdded in QFE ReleasesAdded in QFE Releases
QFEs are supersets backward-inclusiveQFEs are supersets backward-inclusive Windows 98 SE QFE ndash 269601USA8EXEWindows 98 SE QFE ndash 269601USA8EXE
Non-PCM Windows 2000 fixes SoftFMNon-PCM Windows 2000 fixes SoftFM Not included volume persistence DSound Not included volume persistence DSound
cloning waveOutGetPosition (non-PCM) cloning waveOutGetPosition (non-PCM) IPortClsVersionIPortClsVersion
Windows Me QFE ndash 280127USAMEXEWindows Me QFE ndash 280127USAMEXE USB MIDI CD slider glitch reductionUSB MIDI CD slider glitch reduction
Talk to PSS for redist rights for 9x QFEsTalk to PSS for redist rights for 9x QFEs
New FeaturesNew FeaturesAdded in Service Pack ReleasesAdded in Service Pack Releases
Windows 2000 Service Pack 1Windows 2000 Service Pack 1 No audio changesNo audio changes
Windows 2000 Service Pack 2Windows 2000 Service Pack 2 Non-PCM volume persistence DSound Non-PCM volume persistence DSound
cloning IPortClsVersioncloning IPortClsVersion
No further SP work expected at this timeNo further SP work expected at this time
(Un)Features(Un)FeaturesWhatrsquos not present in Windows XPWhatrsquos not present in Windows XP
HW acceleration of DirectX 8HW acceleration of DirectX 8 Planned for subsequent releasePlanned for subsequent release
USB2 supportUSB2 support Support for tons of 1394 devices (mLan)Support for tons of 1394 devices (mLan) Very low-latency PCM via DSoundwaveVery low-latency PCM via DSoundwave Multi-channel peakmeters SetPan Multi-channel peakmeters SetPan
waveOutSetVolume supermix APIwaveOutSetVolume supermix API Dynamic changes in topology or formatDynamic changes in topology or format Support for custom mixer line controlsSupport for custom mixer line controls
DDK Documentation DDK Documentation Additions and UpdatesAdditions and Updates
(big thanks to Windows (big thanks to Windows DDK doc team particularly DDK doc team particularly
Jerry Van Aken)Jerry Van Aken)
DDK Doc ChangesDDK Doc ChangesNew MaterialNew Material
Hardware EventsHardware Events DirectSound HW Acceleration SliderDirectSound HW Acceleration Slider DirectSound speaker configuration settings DirectSound speaker configuration settings Supporting non-PCM wave formats Supporting non-PCM wave formats
From hwdevaudio White PaperFrom hwdevaudio White Paper
Digital Rights ManagementDigital Rights Management From Windows 2000 DDK addendumFrom Windows 2000 DDK addendum
WDM Audio platform differencesWDM Audio platform differences
DDK Doc ChangesDDK Doc ChangesNew Material (2)New Material (2)
KMixer driver Sample Rate Conversion KMixer driver Sample Rate Conversion and mixing policyand mixing policy
Factors governing Wave-output latencyFactors governing Wave-output latency DirectSound capture effectsDirectSound capture effects
Including AEC AGC NSIncluding AEC AGC NS
Multifunction audio devicesMultifunction audio devices Installing and configuring Audio driversInstalling and configuring Audio drivers Windows 2000 device-interface limitsWindows 2000 device-interface limits
DDK Doc ChangesDDK Doc ChangesNew Material (3)New Material (3)
Extensions to legacy Windows Extensions to legacy Windows Multimedia APIsMultimedia APIs Extended capabilities in WDM Audio driversExtended capabilities in WDM Audio drivers Accessing the preferred Device IDAccessing the preferred Device ID
Media-Class INF ExtensionsMedia-Class INF Extensions AlsoInstall Known FilesAlsoInstall Known Files
Data-intersection handlersData-intersection handlers Power management for Audio driversPower management for Audio drivers Version numbering for Audio driversVersion numbering for Audio drivers
DDK Doc ChangesDDK Doc ChangesExisting information augmentedExisting information augmented
USB AudioMIDI class driver descriptionUSB AudioMIDI class driver description Supporting hardware acceleration of Supporting hardware acceleration of
DirectSound 2-dimensional mixingDirectSound 2-dimensional mixing Kernel Streaming topology to Audio Kernel Streaming topology to Audio
Mixer API translationMixer API translation Clarified use of Clarified use of
PcNewRegistryKey PcNewRegistryKey NewMasterDmaChannel NewMasterDmaChannel PcRegisterPhysicalConnection PcRegisterPhysicalConnection PcAddAdapterDevice and so onPcAddAdapterDevice and so on
DDK Doc ChangesDDK Doc ChangesNew Material Already Added post-BetaNew Material Already Added post-Beta
Global Effects filtersGlobal Effects filters AEC system filterAEC system filter Media-Class INF ExtensionsMedia-Class INF Extensions
KnownRegEntries SetupPreferredAudioDevicesKnownRegEntries SetupPreferredAudioDevices
Control Panel branding by vendorsControl Panel branding by vendors Speaker configuration updateSpeaker configuration update
Elaboration of driver implementation of Elaboration of driver implementation of DSSPEAKER_SURROUND and DSSPEAKER_SURROUND and DSSPEAKER_DIRECTOUT modesDSSPEAKER_DIRECTOUT modes
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-BetaNew Material To Be Added post-Beta
Update information about Microsoftrsquos AEC Update information about Microsoftrsquos AEC implementationimplementation
64-bit driver and API specifics64-bit driver and API specifics Detecting different WDM platformsDetecting different WDM platforms
Including how to detect which QFESP is installedIncluding how to detect which QFESP is installed Differences between WDM audio platformsDifferences between WDM audio platforms
Including a taxonomy of the different QFEsSPsIncluding a taxonomy of the different QFEsSPs Explain MME device limits in Win XPExplain MME device limits in Win XP Chart showing non-PCM support among Chart showing non-PCM support among
different WDM OSesdifferent WDM OSes Additional DRM documentationAdditional DRM documentation
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-Beta (2)New Material To Be Added post-Beta (2)
Using the migration DLL to retain a 9x WDM Using the migration DLL to retain a 9x WDM driver during upgrade to NTOSdriver during upgrade to NTOS
Document how a driver exposes multi-channel Document how a driver exposes multi-channel volumemute nodesvolumemute nodes
New default settings for sliders in Win XPNew default settings for sliders in Win XP DirectSound HW acceleration slider DirectSound HW acceleration slider SRC quality (used for DSound output only)SRC quality (used for DSound output only)
DSound support for mix of 2D3D pinsDSound support for mix of 2D3D pins Overriding the IDmaChannel interfaceOverriding the IDmaChannel interface Info for audio bus driversInfo for audio bus drivers ldquoldquoWhich sample to start withrdquo - Overview of Which sample to start withrdquo - Overview of
the various DDK samplesthe various DDK samples
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
NewNew GFX ndash global effect filterGFX ndash global effect filter MSVAD ndash virtual audio deviceMSVAD ndash virtual audio device
ImprovedImproved AC97smpl ndash Intel ICH2AC97smpl ndash Intel ICH2 DDKSynth ndash kernel software synthDDKSynth ndash kernel software synth DMusUART ndash MPU miniportDMusUART ndash MPU miniport SB16 ndash ISA sample SB16 ndash ISA sample
AC97 SampleAC97 SampleAdditions and UpgradesAdditions and Upgrades
New interactive INF Viewer toolNew interactive INF Viewer tool Contains migration DLL sample codeContains migration DLL sample code
New property page amp CPLNew property page amp CPL Speaker configuration propertySpeaker configuration property
KSPROPERTY_AUDIO_CHANNEL_CONFIGKSPROPERTY_AUDIO_CHANNEL_CONFIG Driver writes to registry upon setDriver writes to registry upon set Driver reads registry value upon getDriver reads registry value upon get
Also at MiniportInit Also at MiniportInit
Other custom properties - Get (and Set)Other custom properties - Get (and Set)
AC97 SampleAC97 SampleAdditions and Upgrades (2)Additions and Upgrades (2)
WAVEFORMATPCMEX support for WAVEFORMATPCMEX support for multi-channel streamsmulti-channel streams
Support for Intel 820 (multi-channel ac97 codecs)Support for Intel 820 (multi-channel ac97 codecs) Multi-channel volume workarounds for past Multi-channel volume workarounds for past
versions of Windowsversions of Windows How to add additional nodesconnections for surround How to add additional nodesconnections for surround
and centerLFEand centerLFE Send sample rate change requests there etcSend sample rate change requests there etc
How to add virtual master volume (mono) if 4 or 6 How to add virtual master volume (mono) if 4 or 6 channel presentchannel present
How to change data range depending on number of ac97 How to change data range depending on number of ac97 codecs detectedcodecs detected
Multi-channel mute and volume handlersMulti-channel mute and volume handlers
AC97 SampleAC97 SampleAdditions and Upgrades (3)Additions and Upgrades (3)
DRM supportDRM support Note that it cant detect presence of SPDIF Note that it cant detect presence of SPDIF
on non-compliant ac97 codecs so this is on non-compliant ac97 codecs so this is questionablequestionable
Vastly improved INFVastly improved INF Significant DataRangeIntersection Significant DataRangeIntersection
handler cleanuphandler cleanup Better synchronizationBetter synchronization
MapLock not held during MapLock not held during PortStream-gtGetMappingPortStream-gtGetMapping
AC97 SampleAC97 SampleAdditions and Upgrades (4)Additions and Upgrades (4)
Treat D2 exactly like D3 nowTreat D2 exactly like D3 now Disconnect interrupt anytime not in D0 nowDisconnect interrupt anytime not in D0 now Note bug fix at minwavecpp line 570-72 Note bug fix at minwavecpp line 570-72
(Win9x removeadd doesnrsquot destroy filter (Win9x removeadd doesnrsquot destroy filter descriptor)descriptor)
GetAllocatorFraming FrameSize must be GetAllocatorFraming FrameSize must be sample block alignedsample block aligned
Pins DataRangeSampleSize should be set Pins DataRangeSampleSize should be set to non-zeroto non-zero
Code clean up from Windows 2000Code clean up from Windows 2000
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
New FeaturesNew FeaturesAdded in Windows XP (2)Added in Windows XP (2)
Additional multi-channel supportAdditional multi-channel support Multi-channel volume property pageMulti-channel volume property page
Invoked from SndVol32 and Sounds CPL Invoked from SndVol32 and Sounds CPL (Volume|Speaker Volumehellip)(Volume|Speaker Volumehellip)
Manipulates individual volumes of multi-Manipulates individual volumes of multi-channel controls channel controls
DirectSound SetSpeakerConfig API and DirectSound SetSpeakerConfig API and CPL Volume|Advanced|Speakers paneCPL Volume|Advanced|Speakers pane New enums for 71 and ldquoNo speakersrdquoNew enums for 71 and ldquoNo speakersrdquo Revamped bitmaps to better express configsRevamped bitmaps to better express configs
Fixed KMixer SuperMix defaultsFixed KMixer SuperMix defaults
New FeaturesNew FeaturesAdded in Windows XP (3)Added in Windows XP (3)
Extended capabilitiesExtended capabilities Returns GUIDs for MID amp PID ULONGs for driver version Returns GUIDs for MID amp PID ULONGs for driver version
amp revision plus GUID to specify a long name stored in amp revision plus GUID to specify a long name stored in registry (MediaCategories) by INFregistry (MediaCategories) by INF
KS property on wave filterKS property on wave filter KSPROPSETID_GeneralKSPROPSETID_General KSPROPERTY_GENERAL_COMPONENTIDKSPROPERTY_GENERAL_COMPONENTID
DDK sample MSVADsimpleDDK sample MSVADsimple 1394 audio class driver (AVCAudiosys)1394 audio class driver (AVCAudiosys) AC97 controller driversAC97 controller drivers
Intel (ICH2) VIA ALi SiSIntel (ICH2) VIA ALi SiS Strong suggestion new codecs pass all WHQL tests Strong suggestion new codecs pass all WHQL tests
with Windows XP in-box controller driverswith Windows XP in-box controller drivers
New FeaturesNew FeaturesAdded in Windows XP (4)Added in Windows XP (4)
64-bit support64-bit support All core components and DDK samples portedAll core components and DDK samples ported HW drivers for USBAudio CS4281 AVCAudioHW drivers for USBAudio CS4281 AVCAudio Native 64-bit API supportNative 64-bit API support
DirectSound DirectShow KsProxyKSUSERDirectSound DirectShow KsProxyKSUSER waveOutIn midiOutIn mixer aux MCI ACMwaveOutIn midiOutIn mixer aux MCI ACM Not enabled DirectMusicNot enabled DirectMusic
32-bit WOW API support32-bit WOW API support DirectSound (emulation only) DirectShowDirectSound (emulation only) DirectShow waveOutIn midiOut mixer aux MCI ACMwaveOutIn midiOut mixer aux MCI ACM Not enabled KsProxyKSUSER DirectSound (non-Not enabled KsProxyKSUSER DirectSound (non-
emulated) midiIn DirectMusicemulated) midiIn DirectMusic
New FeaturesNew FeaturesAdded in Windows XP (5)Added in Windows XP (5)
Acoustic Echo Cancellation supportAcoustic Echo Cancellation support Noise Suppression and Automatic Gain Noise Suppression and Automatic Gain
Control are optionally includedControl are optionally included Inserted at lowest level (post-mixer)Inserted at lowest level (post-mixer) Accessed via DSound8 full duplex objectAccessed via DSound8 full duplex object Can be hardware-acceleratedCan be hardware-accelerated MS system-supplied AECMS system-supplied AEC
AVStream componentAVStream component 8 kHz-22 kHz 16-bit mono8 kHz-22 kHz 16-bit mono No clock rate matching for inputoutputNo clock rate matching for inputoutput
New FeaturesNew FeaturesAdded in Windows XP (6)Added in Windows XP (6)
Global Effects Filters (GFX)Global Effects Filters (GFX) Recommended for hardware-specific master effects Recommended for hardware-specific master effects
(speaker compensation mic array filters) (speaker compensation mic array filters) Also useful for general audio processing (EQ)Also useful for general audio processing (EQ) Applied to final playback mix or original capture signal Applied to final playback mix or original capture signal
for all APIsfor all APIs Hardware-specific effects automatically addedHardware-specific effects automatically added Sounds control panel (Audio|Advancedhellip|Effects) used Sounds control panel (Audio|Advancedhellip|Effects) used
to add reorder manipulate effectsto add reorder manipulate effects Vendor-supplied UI invoked from Sounds CPLVendor-supplied UI invoked from Sounds CPL Vendor implements effect as AVStream filterVendor implements effect as AVStream filter Restricted to USB devices on Windows XPRestricted to USB devices on Windows XP Future OS releases will allow application to any audio Future OS releases will allow application to any audio
device with supporting HW driverdevice with supporting HW driver
New FeaturesNew FeaturesAdded in Windows MeAdded in Windows Me
Secure Audio Path (kernel mode DRM)Secure Audio Path (kernel mode DRM) Now required for Windows XP logoNow required for Windows XP logo
USB MIDIUSB MIDI WinME QFE available for MIDIaudio devicesWinME QFE available for MIDIaudio devices
Non-PCM outputNon-PCM output Also in Windows 2000 Service Pack 2Also in Windows 2000 Service Pack 2 Also available in Windows 98 SE QFEAlso available in Windows 98 SE QFE
Contact Microsoft Product Support Services for thisContact Microsoft Product Support Services for this
Peakmeter support and supporting SndVol UIPeakmeter support and supporting SndVol UI
New FeaturesNew FeaturesAdded in QFE ReleasesAdded in QFE Releases
QFEs are supersets backward-inclusiveQFEs are supersets backward-inclusive Windows 98 SE QFE ndash 269601USA8EXEWindows 98 SE QFE ndash 269601USA8EXE
Non-PCM Windows 2000 fixes SoftFMNon-PCM Windows 2000 fixes SoftFM Not included volume persistence DSound Not included volume persistence DSound
cloning waveOutGetPosition (non-PCM) cloning waveOutGetPosition (non-PCM) IPortClsVersionIPortClsVersion
Windows Me QFE ndash 280127USAMEXEWindows Me QFE ndash 280127USAMEXE USB MIDI CD slider glitch reductionUSB MIDI CD slider glitch reduction
Talk to PSS for redist rights for 9x QFEsTalk to PSS for redist rights for 9x QFEs
New FeaturesNew FeaturesAdded in Service Pack ReleasesAdded in Service Pack Releases
Windows 2000 Service Pack 1Windows 2000 Service Pack 1 No audio changesNo audio changes
Windows 2000 Service Pack 2Windows 2000 Service Pack 2 Non-PCM volume persistence DSound Non-PCM volume persistence DSound
cloning IPortClsVersioncloning IPortClsVersion
No further SP work expected at this timeNo further SP work expected at this time
(Un)Features(Un)FeaturesWhatrsquos not present in Windows XPWhatrsquos not present in Windows XP
HW acceleration of DirectX 8HW acceleration of DirectX 8 Planned for subsequent releasePlanned for subsequent release
USB2 supportUSB2 support Support for tons of 1394 devices (mLan)Support for tons of 1394 devices (mLan) Very low-latency PCM via DSoundwaveVery low-latency PCM via DSoundwave Multi-channel peakmeters SetPan Multi-channel peakmeters SetPan
waveOutSetVolume supermix APIwaveOutSetVolume supermix API Dynamic changes in topology or formatDynamic changes in topology or format Support for custom mixer line controlsSupport for custom mixer line controls
DDK Documentation DDK Documentation Additions and UpdatesAdditions and Updates
(big thanks to Windows (big thanks to Windows DDK doc team particularly DDK doc team particularly
Jerry Van Aken)Jerry Van Aken)
DDK Doc ChangesDDK Doc ChangesNew MaterialNew Material
Hardware EventsHardware Events DirectSound HW Acceleration SliderDirectSound HW Acceleration Slider DirectSound speaker configuration settings DirectSound speaker configuration settings Supporting non-PCM wave formats Supporting non-PCM wave formats
From hwdevaudio White PaperFrom hwdevaudio White Paper
Digital Rights ManagementDigital Rights Management From Windows 2000 DDK addendumFrom Windows 2000 DDK addendum
WDM Audio platform differencesWDM Audio platform differences
DDK Doc ChangesDDK Doc ChangesNew Material (2)New Material (2)
KMixer driver Sample Rate Conversion KMixer driver Sample Rate Conversion and mixing policyand mixing policy
Factors governing Wave-output latencyFactors governing Wave-output latency DirectSound capture effectsDirectSound capture effects
Including AEC AGC NSIncluding AEC AGC NS
Multifunction audio devicesMultifunction audio devices Installing and configuring Audio driversInstalling and configuring Audio drivers Windows 2000 device-interface limitsWindows 2000 device-interface limits
DDK Doc ChangesDDK Doc ChangesNew Material (3)New Material (3)
Extensions to legacy Windows Extensions to legacy Windows Multimedia APIsMultimedia APIs Extended capabilities in WDM Audio driversExtended capabilities in WDM Audio drivers Accessing the preferred Device IDAccessing the preferred Device ID
Media-Class INF ExtensionsMedia-Class INF Extensions AlsoInstall Known FilesAlsoInstall Known Files
Data-intersection handlersData-intersection handlers Power management for Audio driversPower management for Audio drivers Version numbering for Audio driversVersion numbering for Audio drivers
DDK Doc ChangesDDK Doc ChangesExisting information augmentedExisting information augmented
USB AudioMIDI class driver descriptionUSB AudioMIDI class driver description Supporting hardware acceleration of Supporting hardware acceleration of
DirectSound 2-dimensional mixingDirectSound 2-dimensional mixing Kernel Streaming topology to Audio Kernel Streaming topology to Audio
Mixer API translationMixer API translation Clarified use of Clarified use of
PcNewRegistryKey PcNewRegistryKey NewMasterDmaChannel NewMasterDmaChannel PcRegisterPhysicalConnection PcRegisterPhysicalConnection PcAddAdapterDevice and so onPcAddAdapterDevice and so on
DDK Doc ChangesDDK Doc ChangesNew Material Already Added post-BetaNew Material Already Added post-Beta
Global Effects filtersGlobal Effects filters AEC system filterAEC system filter Media-Class INF ExtensionsMedia-Class INF Extensions
KnownRegEntries SetupPreferredAudioDevicesKnownRegEntries SetupPreferredAudioDevices
Control Panel branding by vendorsControl Panel branding by vendors Speaker configuration updateSpeaker configuration update
Elaboration of driver implementation of Elaboration of driver implementation of DSSPEAKER_SURROUND and DSSPEAKER_SURROUND and DSSPEAKER_DIRECTOUT modesDSSPEAKER_DIRECTOUT modes
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-BetaNew Material To Be Added post-Beta
Update information about Microsoftrsquos AEC Update information about Microsoftrsquos AEC implementationimplementation
64-bit driver and API specifics64-bit driver and API specifics Detecting different WDM platformsDetecting different WDM platforms
Including how to detect which QFESP is installedIncluding how to detect which QFESP is installed Differences between WDM audio platformsDifferences between WDM audio platforms
Including a taxonomy of the different QFEsSPsIncluding a taxonomy of the different QFEsSPs Explain MME device limits in Win XPExplain MME device limits in Win XP Chart showing non-PCM support among Chart showing non-PCM support among
different WDM OSesdifferent WDM OSes Additional DRM documentationAdditional DRM documentation
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-Beta (2)New Material To Be Added post-Beta (2)
Using the migration DLL to retain a 9x WDM Using the migration DLL to retain a 9x WDM driver during upgrade to NTOSdriver during upgrade to NTOS
Document how a driver exposes multi-channel Document how a driver exposes multi-channel volumemute nodesvolumemute nodes
New default settings for sliders in Win XPNew default settings for sliders in Win XP DirectSound HW acceleration slider DirectSound HW acceleration slider SRC quality (used for DSound output only)SRC quality (used for DSound output only)
DSound support for mix of 2D3D pinsDSound support for mix of 2D3D pins Overriding the IDmaChannel interfaceOverriding the IDmaChannel interface Info for audio bus driversInfo for audio bus drivers ldquoldquoWhich sample to start withrdquo - Overview of Which sample to start withrdquo - Overview of
the various DDK samplesthe various DDK samples
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
NewNew GFX ndash global effect filterGFX ndash global effect filter MSVAD ndash virtual audio deviceMSVAD ndash virtual audio device
ImprovedImproved AC97smpl ndash Intel ICH2AC97smpl ndash Intel ICH2 DDKSynth ndash kernel software synthDDKSynth ndash kernel software synth DMusUART ndash MPU miniportDMusUART ndash MPU miniport SB16 ndash ISA sample SB16 ndash ISA sample
AC97 SampleAC97 SampleAdditions and UpgradesAdditions and Upgrades
New interactive INF Viewer toolNew interactive INF Viewer tool Contains migration DLL sample codeContains migration DLL sample code
New property page amp CPLNew property page amp CPL Speaker configuration propertySpeaker configuration property
KSPROPERTY_AUDIO_CHANNEL_CONFIGKSPROPERTY_AUDIO_CHANNEL_CONFIG Driver writes to registry upon setDriver writes to registry upon set Driver reads registry value upon getDriver reads registry value upon get
Also at MiniportInit Also at MiniportInit
Other custom properties - Get (and Set)Other custom properties - Get (and Set)
AC97 SampleAC97 SampleAdditions and Upgrades (2)Additions and Upgrades (2)
WAVEFORMATPCMEX support for WAVEFORMATPCMEX support for multi-channel streamsmulti-channel streams
Support for Intel 820 (multi-channel ac97 codecs)Support for Intel 820 (multi-channel ac97 codecs) Multi-channel volume workarounds for past Multi-channel volume workarounds for past
versions of Windowsversions of Windows How to add additional nodesconnections for surround How to add additional nodesconnections for surround
and centerLFEand centerLFE Send sample rate change requests there etcSend sample rate change requests there etc
How to add virtual master volume (mono) if 4 or 6 How to add virtual master volume (mono) if 4 or 6 channel presentchannel present
How to change data range depending on number of ac97 How to change data range depending on number of ac97 codecs detectedcodecs detected
Multi-channel mute and volume handlersMulti-channel mute and volume handlers
AC97 SampleAC97 SampleAdditions and Upgrades (3)Additions and Upgrades (3)
DRM supportDRM support Note that it cant detect presence of SPDIF Note that it cant detect presence of SPDIF
on non-compliant ac97 codecs so this is on non-compliant ac97 codecs so this is questionablequestionable
Vastly improved INFVastly improved INF Significant DataRangeIntersection Significant DataRangeIntersection
handler cleanuphandler cleanup Better synchronizationBetter synchronization
MapLock not held during MapLock not held during PortStream-gtGetMappingPortStream-gtGetMapping
AC97 SampleAC97 SampleAdditions and Upgrades (4)Additions and Upgrades (4)
Treat D2 exactly like D3 nowTreat D2 exactly like D3 now Disconnect interrupt anytime not in D0 nowDisconnect interrupt anytime not in D0 now Note bug fix at minwavecpp line 570-72 Note bug fix at minwavecpp line 570-72
(Win9x removeadd doesnrsquot destroy filter (Win9x removeadd doesnrsquot destroy filter descriptor)descriptor)
GetAllocatorFraming FrameSize must be GetAllocatorFraming FrameSize must be sample block alignedsample block aligned
Pins DataRangeSampleSize should be set Pins DataRangeSampleSize should be set to non-zeroto non-zero
Code clean up from Windows 2000Code clean up from Windows 2000
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
New FeaturesNew FeaturesAdded in Windows XP (3)Added in Windows XP (3)
Extended capabilitiesExtended capabilities Returns GUIDs for MID amp PID ULONGs for driver version Returns GUIDs for MID amp PID ULONGs for driver version
amp revision plus GUID to specify a long name stored in amp revision plus GUID to specify a long name stored in registry (MediaCategories) by INFregistry (MediaCategories) by INF
KS property on wave filterKS property on wave filter KSPROPSETID_GeneralKSPROPSETID_General KSPROPERTY_GENERAL_COMPONENTIDKSPROPERTY_GENERAL_COMPONENTID
DDK sample MSVADsimpleDDK sample MSVADsimple 1394 audio class driver (AVCAudiosys)1394 audio class driver (AVCAudiosys) AC97 controller driversAC97 controller drivers
Intel (ICH2) VIA ALi SiSIntel (ICH2) VIA ALi SiS Strong suggestion new codecs pass all WHQL tests Strong suggestion new codecs pass all WHQL tests
with Windows XP in-box controller driverswith Windows XP in-box controller drivers
New FeaturesNew FeaturesAdded in Windows XP (4)Added in Windows XP (4)
64-bit support64-bit support All core components and DDK samples portedAll core components and DDK samples ported HW drivers for USBAudio CS4281 AVCAudioHW drivers for USBAudio CS4281 AVCAudio Native 64-bit API supportNative 64-bit API support
DirectSound DirectShow KsProxyKSUSERDirectSound DirectShow KsProxyKSUSER waveOutIn midiOutIn mixer aux MCI ACMwaveOutIn midiOutIn mixer aux MCI ACM Not enabled DirectMusicNot enabled DirectMusic
32-bit WOW API support32-bit WOW API support DirectSound (emulation only) DirectShowDirectSound (emulation only) DirectShow waveOutIn midiOut mixer aux MCI ACMwaveOutIn midiOut mixer aux MCI ACM Not enabled KsProxyKSUSER DirectSound (non-Not enabled KsProxyKSUSER DirectSound (non-
emulated) midiIn DirectMusicemulated) midiIn DirectMusic
New FeaturesNew FeaturesAdded in Windows XP (5)Added in Windows XP (5)
Acoustic Echo Cancellation supportAcoustic Echo Cancellation support Noise Suppression and Automatic Gain Noise Suppression and Automatic Gain
Control are optionally includedControl are optionally included Inserted at lowest level (post-mixer)Inserted at lowest level (post-mixer) Accessed via DSound8 full duplex objectAccessed via DSound8 full duplex object Can be hardware-acceleratedCan be hardware-accelerated MS system-supplied AECMS system-supplied AEC
AVStream componentAVStream component 8 kHz-22 kHz 16-bit mono8 kHz-22 kHz 16-bit mono No clock rate matching for inputoutputNo clock rate matching for inputoutput
New FeaturesNew FeaturesAdded in Windows XP (6)Added in Windows XP (6)
Global Effects Filters (GFX)Global Effects Filters (GFX) Recommended for hardware-specific master effects Recommended for hardware-specific master effects
(speaker compensation mic array filters) (speaker compensation mic array filters) Also useful for general audio processing (EQ)Also useful for general audio processing (EQ) Applied to final playback mix or original capture signal Applied to final playback mix or original capture signal
for all APIsfor all APIs Hardware-specific effects automatically addedHardware-specific effects automatically added Sounds control panel (Audio|Advancedhellip|Effects) used Sounds control panel (Audio|Advancedhellip|Effects) used
to add reorder manipulate effectsto add reorder manipulate effects Vendor-supplied UI invoked from Sounds CPLVendor-supplied UI invoked from Sounds CPL Vendor implements effect as AVStream filterVendor implements effect as AVStream filter Restricted to USB devices on Windows XPRestricted to USB devices on Windows XP Future OS releases will allow application to any audio Future OS releases will allow application to any audio
device with supporting HW driverdevice with supporting HW driver
New FeaturesNew FeaturesAdded in Windows MeAdded in Windows Me
Secure Audio Path (kernel mode DRM)Secure Audio Path (kernel mode DRM) Now required for Windows XP logoNow required for Windows XP logo
USB MIDIUSB MIDI WinME QFE available for MIDIaudio devicesWinME QFE available for MIDIaudio devices
Non-PCM outputNon-PCM output Also in Windows 2000 Service Pack 2Also in Windows 2000 Service Pack 2 Also available in Windows 98 SE QFEAlso available in Windows 98 SE QFE
Contact Microsoft Product Support Services for thisContact Microsoft Product Support Services for this
Peakmeter support and supporting SndVol UIPeakmeter support and supporting SndVol UI
New FeaturesNew FeaturesAdded in QFE ReleasesAdded in QFE Releases
QFEs are supersets backward-inclusiveQFEs are supersets backward-inclusive Windows 98 SE QFE ndash 269601USA8EXEWindows 98 SE QFE ndash 269601USA8EXE
Non-PCM Windows 2000 fixes SoftFMNon-PCM Windows 2000 fixes SoftFM Not included volume persistence DSound Not included volume persistence DSound
cloning waveOutGetPosition (non-PCM) cloning waveOutGetPosition (non-PCM) IPortClsVersionIPortClsVersion
Windows Me QFE ndash 280127USAMEXEWindows Me QFE ndash 280127USAMEXE USB MIDI CD slider glitch reductionUSB MIDI CD slider glitch reduction
Talk to PSS for redist rights for 9x QFEsTalk to PSS for redist rights for 9x QFEs
New FeaturesNew FeaturesAdded in Service Pack ReleasesAdded in Service Pack Releases
Windows 2000 Service Pack 1Windows 2000 Service Pack 1 No audio changesNo audio changes
Windows 2000 Service Pack 2Windows 2000 Service Pack 2 Non-PCM volume persistence DSound Non-PCM volume persistence DSound
cloning IPortClsVersioncloning IPortClsVersion
No further SP work expected at this timeNo further SP work expected at this time
(Un)Features(Un)FeaturesWhatrsquos not present in Windows XPWhatrsquos not present in Windows XP
HW acceleration of DirectX 8HW acceleration of DirectX 8 Planned for subsequent releasePlanned for subsequent release
USB2 supportUSB2 support Support for tons of 1394 devices (mLan)Support for tons of 1394 devices (mLan) Very low-latency PCM via DSoundwaveVery low-latency PCM via DSoundwave Multi-channel peakmeters SetPan Multi-channel peakmeters SetPan
waveOutSetVolume supermix APIwaveOutSetVolume supermix API Dynamic changes in topology or formatDynamic changes in topology or format Support for custom mixer line controlsSupport for custom mixer line controls
DDK Documentation DDK Documentation Additions and UpdatesAdditions and Updates
(big thanks to Windows (big thanks to Windows DDK doc team particularly DDK doc team particularly
Jerry Van Aken)Jerry Van Aken)
DDK Doc ChangesDDK Doc ChangesNew MaterialNew Material
Hardware EventsHardware Events DirectSound HW Acceleration SliderDirectSound HW Acceleration Slider DirectSound speaker configuration settings DirectSound speaker configuration settings Supporting non-PCM wave formats Supporting non-PCM wave formats
From hwdevaudio White PaperFrom hwdevaudio White Paper
Digital Rights ManagementDigital Rights Management From Windows 2000 DDK addendumFrom Windows 2000 DDK addendum
WDM Audio platform differencesWDM Audio platform differences
DDK Doc ChangesDDK Doc ChangesNew Material (2)New Material (2)
KMixer driver Sample Rate Conversion KMixer driver Sample Rate Conversion and mixing policyand mixing policy
Factors governing Wave-output latencyFactors governing Wave-output latency DirectSound capture effectsDirectSound capture effects
Including AEC AGC NSIncluding AEC AGC NS
Multifunction audio devicesMultifunction audio devices Installing and configuring Audio driversInstalling and configuring Audio drivers Windows 2000 device-interface limitsWindows 2000 device-interface limits
DDK Doc ChangesDDK Doc ChangesNew Material (3)New Material (3)
Extensions to legacy Windows Extensions to legacy Windows Multimedia APIsMultimedia APIs Extended capabilities in WDM Audio driversExtended capabilities in WDM Audio drivers Accessing the preferred Device IDAccessing the preferred Device ID
Media-Class INF ExtensionsMedia-Class INF Extensions AlsoInstall Known FilesAlsoInstall Known Files
Data-intersection handlersData-intersection handlers Power management for Audio driversPower management for Audio drivers Version numbering for Audio driversVersion numbering for Audio drivers
DDK Doc ChangesDDK Doc ChangesExisting information augmentedExisting information augmented
USB AudioMIDI class driver descriptionUSB AudioMIDI class driver description Supporting hardware acceleration of Supporting hardware acceleration of
DirectSound 2-dimensional mixingDirectSound 2-dimensional mixing Kernel Streaming topology to Audio Kernel Streaming topology to Audio
Mixer API translationMixer API translation Clarified use of Clarified use of
PcNewRegistryKey PcNewRegistryKey NewMasterDmaChannel NewMasterDmaChannel PcRegisterPhysicalConnection PcRegisterPhysicalConnection PcAddAdapterDevice and so onPcAddAdapterDevice and so on
DDK Doc ChangesDDK Doc ChangesNew Material Already Added post-BetaNew Material Already Added post-Beta
Global Effects filtersGlobal Effects filters AEC system filterAEC system filter Media-Class INF ExtensionsMedia-Class INF Extensions
KnownRegEntries SetupPreferredAudioDevicesKnownRegEntries SetupPreferredAudioDevices
Control Panel branding by vendorsControl Panel branding by vendors Speaker configuration updateSpeaker configuration update
Elaboration of driver implementation of Elaboration of driver implementation of DSSPEAKER_SURROUND and DSSPEAKER_SURROUND and DSSPEAKER_DIRECTOUT modesDSSPEAKER_DIRECTOUT modes
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-BetaNew Material To Be Added post-Beta
Update information about Microsoftrsquos AEC Update information about Microsoftrsquos AEC implementationimplementation
64-bit driver and API specifics64-bit driver and API specifics Detecting different WDM platformsDetecting different WDM platforms
Including how to detect which QFESP is installedIncluding how to detect which QFESP is installed Differences between WDM audio platformsDifferences between WDM audio platforms
Including a taxonomy of the different QFEsSPsIncluding a taxonomy of the different QFEsSPs Explain MME device limits in Win XPExplain MME device limits in Win XP Chart showing non-PCM support among Chart showing non-PCM support among
different WDM OSesdifferent WDM OSes Additional DRM documentationAdditional DRM documentation
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-Beta (2)New Material To Be Added post-Beta (2)
Using the migration DLL to retain a 9x WDM Using the migration DLL to retain a 9x WDM driver during upgrade to NTOSdriver during upgrade to NTOS
Document how a driver exposes multi-channel Document how a driver exposes multi-channel volumemute nodesvolumemute nodes
New default settings for sliders in Win XPNew default settings for sliders in Win XP DirectSound HW acceleration slider DirectSound HW acceleration slider SRC quality (used for DSound output only)SRC quality (used for DSound output only)
DSound support for mix of 2D3D pinsDSound support for mix of 2D3D pins Overriding the IDmaChannel interfaceOverriding the IDmaChannel interface Info for audio bus driversInfo for audio bus drivers ldquoldquoWhich sample to start withrdquo - Overview of Which sample to start withrdquo - Overview of
the various DDK samplesthe various DDK samples
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
NewNew GFX ndash global effect filterGFX ndash global effect filter MSVAD ndash virtual audio deviceMSVAD ndash virtual audio device
ImprovedImproved AC97smpl ndash Intel ICH2AC97smpl ndash Intel ICH2 DDKSynth ndash kernel software synthDDKSynth ndash kernel software synth DMusUART ndash MPU miniportDMusUART ndash MPU miniport SB16 ndash ISA sample SB16 ndash ISA sample
AC97 SampleAC97 SampleAdditions and UpgradesAdditions and Upgrades
New interactive INF Viewer toolNew interactive INF Viewer tool Contains migration DLL sample codeContains migration DLL sample code
New property page amp CPLNew property page amp CPL Speaker configuration propertySpeaker configuration property
KSPROPERTY_AUDIO_CHANNEL_CONFIGKSPROPERTY_AUDIO_CHANNEL_CONFIG Driver writes to registry upon setDriver writes to registry upon set Driver reads registry value upon getDriver reads registry value upon get
Also at MiniportInit Also at MiniportInit
Other custom properties - Get (and Set)Other custom properties - Get (and Set)
AC97 SampleAC97 SampleAdditions and Upgrades (2)Additions and Upgrades (2)
WAVEFORMATPCMEX support for WAVEFORMATPCMEX support for multi-channel streamsmulti-channel streams
Support for Intel 820 (multi-channel ac97 codecs)Support for Intel 820 (multi-channel ac97 codecs) Multi-channel volume workarounds for past Multi-channel volume workarounds for past
versions of Windowsversions of Windows How to add additional nodesconnections for surround How to add additional nodesconnections for surround
and centerLFEand centerLFE Send sample rate change requests there etcSend sample rate change requests there etc
How to add virtual master volume (mono) if 4 or 6 How to add virtual master volume (mono) if 4 or 6 channel presentchannel present
How to change data range depending on number of ac97 How to change data range depending on number of ac97 codecs detectedcodecs detected
Multi-channel mute and volume handlersMulti-channel mute and volume handlers
AC97 SampleAC97 SampleAdditions and Upgrades (3)Additions and Upgrades (3)
DRM supportDRM support Note that it cant detect presence of SPDIF Note that it cant detect presence of SPDIF
on non-compliant ac97 codecs so this is on non-compliant ac97 codecs so this is questionablequestionable
Vastly improved INFVastly improved INF Significant DataRangeIntersection Significant DataRangeIntersection
handler cleanuphandler cleanup Better synchronizationBetter synchronization
MapLock not held during MapLock not held during PortStream-gtGetMappingPortStream-gtGetMapping
AC97 SampleAC97 SampleAdditions and Upgrades (4)Additions and Upgrades (4)
Treat D2 exactly like D3 nowTreat D2 exactly like D3 now Disconnect interrupt anytime not in D0 nowDisconnect interrupt anytime not in D0 now Note bug fix at minwavecpp line 570-72 Note bug fix at minwavecpp line 570-72
(Win9x removeadd doesnrsquot destroy filter (Win9x removeadd doesnrsquot destroy filter descriptor)descriptor)
GetAllocatorFraming FrameSize must be GetAllocatorFraming FrameSize must be sample block alignedsample block aligned
Pins DataRangeSampleSize should be set Pins DataRangeSampleSize should be set to non-zeroto non-zero
Code clean up from Windows 2000Code clean up from Windows 2000
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
New FeaturesNew FeaturesAdded in Windows XP (4)Added in Windows XP (4)
64-bit support64-bit support All core components and DDK samples portedAll core components and DDK samples ported HW drivers for USBAudio CS4281 AVCAudioHW drivers for USBAudio CS4281 AVCAudio Native 64-bit API supportNative 64-bit API support
DirectSound DirectShow KsProxyKSUSERDirectSound DirectShow KsProxyKSUSER waveOutIn midiOutIn mixer aux MCI ACMwaveOutIn midiOutIn mixer aux MCI ACM Not enabled DirectMusicNot enabled DirectMusic
32-bit WOW API support32-bit WOW API support DirectSound (emulation only) DirectShowDirectSound (emulation only) DirectShow waveOutIn midiOut mixer aux MCI ACMwaveOutIn midiOut mixer aux MCI ACM Not enabled KsProxyKSUSER DirectSound (non-Not enabled KsProxyKSUSER DirectSound (non-
emulated) midiIn DirectMusicemulated) midiIn DirectMusic
New FeaturesNew FeaturesAdded in Windows XP (5)Added in Windows XP (5)
Acoustic Echo Cancellation supportAcoustic Echo Cancellation support Noise Suppression and Automatic Gain Noise Suppression and Automatic Gain
Control are optionally includedControl are optionally included Inserted at lowest level (post-mixer)Inserted at lowest level (post-mixer) Accessed via DSound8 full duplex objectAccessed via DSound8 full duplex object Can be hardware-acceleratedCan be hardware-accelerated MS system-supplied AECMS system-supplied AEC
AVStream componentAVStream component 8 kHz-22 kHz 16-bit mono8 kHz-22 kHz 16-bit mono No clock rate matching for inputoutputNo clock rate matching for inputoutput
New FeaturesNew FeaturesAdded in Windows XP (6)Added in Windows XP (6)
Global Effects Filters (GFX)Global Effects Filters (GFX) Recommended for hardware-specific master effects Recommended for hardware-specific master effects
(speaker compensation mic array filters) (speaker compensation mic array filters) Also useful for general audio processing (EQ)Also useful for general audio processing (EQ) Applied to final playback mix or original capture signal Applied to final playback mix or original capture signal
for all APIsfor all APIs Hardware-specific effects automatically addedHardware-specific effects automatically added Sounds control panel (Audio|Advancedhellip|Effects) used Sounds control panel (Audio|Advancedhellip|Effects) used
to add reorder manipulate effectsto add reorder manipulate effects Vendor-supplied UI invoked from Sounds CPLVendor-supplied UI invoked from Sounds CPL Vendor implements effect as AVStream filterVendor implements effect as AVStream filter Restricted to USB devices on Windows XPRestricted to USB devices on Windows XP Future OS releases will allow application to any audio Future OS releases will allow application to any audio
device with supporting HW driverdevice with supporting HW driver
New FeaturesNew FeaturesAdded in Windows MeAdded in Windows Me
Secure Audio Path (kernel mode DRM)Secure Audio Path (kernel mode DRM) Now required for Windows XP logoNow required for Windows XP logo
USB MIDIUSB MIDI WinME QFE available for MIDIaudio devicesWinME QFE available for MIDIaudio devices
Non-PCM outputNon-PCM output Also in Windows 2000 Service Pack 2Also in Windows 2000 Service Pack 2 Also available in Windows 98 SE QFEAlso available in Windows 98 SE QFE
Contact Microsoft Product Support Services for thisContact Microsoft Product Support Services for this
Peakmeter support and supporting SndVol UIPeakmeter support and supporting SndVol UI
New FeaturesNew FeaturesAdded in QFE ReleasesAdded in QFE Releases
QFEs are supersets backward-inclusiveQFEs are supersets backward-inclusive Windows 98 SE QFE ndash 269601USA8EXEWindows 98 SE QFE ndash 269601USA8EXE
Non-PCM Windows 2000 fixes SoftFMNon-PCM Windows 2000 fixes SoftFM Not included volume persistence DSound Not included volume persistence DSound
cloning waveOutGetPosition (non-PCM) cloning waveOutGetPosition (non-PCM) IPortClsVersionIPortClsVersion
Windows Me QFE ndash 280127USAMEXEWindows Me QFE ndash 280127USAMEXE USB MIDI CD slider glitch reductionUSB MIDI CD slider glitch reduction
Talk to PSS for redist rights for 9x QFEsTalk to PSS for redist rights for 9x QFEs
New FeaturesNew FeaturesAdded in Service Pack ReleasesAdded in Service Pack Releases
Windows 2000 Service Pack 1Windows 2000 Service Pack 1 No audio changesNo audio changes
Windows 2000 Service Pack 2Windows 2000 Service Pack 2 Non-PCM volume persistence DSound Non-PCM volume persistence DSound
cloning IPortClsVersioncloning IPortClsVersion
No further SP work expected at this timeNo further SP work expected at this time
(Un)Features(Un)FeaturesWhatrsquos not present in Windows XPWhatrsquos not present in Windows XP
HW acceleration of DirectX 8HW acceleration of DirectX 8 Planned for subsequent releasePlanned for subsequent release
USB2 supportUSB2 support Support for tons of 1394 devices (mLan)Support for tons of 1394 devices (mLan) Very low-latency PCM via DSoundwaveVery low-latency PCM via DSoundwave Multi-channel peakmeters SetPan Multi-channel peakmeters SetPan
waveOutSetVolume supermix APIwaveOutSetVolume supermix API Dynamic changes in topology or formatDynamic changes in topology or format Support for custom mixer line controlsSupport for custom mixer line controls
DDK Documentation DDK Documentation Additions and UpdatesAdditions and Updates
(big thanks to Windows (big thanks to Windows DDK doc team particularly DDK doc team particularly
Jerry Van Aken)Jerry Van Aken)
DDK Doc ChangesDDK Doc ChangesNew MaterialNew Material
Hardware EventsHardware Events DirectSound HW Acceleration SliderDirectSound HW Acceleration Slider DirectSound speaker configuration settings DirectSound speaker configuration settings Supporting non-PCM wave formats Supporting non-PCM wave formats
From hwdevaudio White PaperFrom hwdevaudio White Paper
Digital Rights ManagementDigital Rights Management From Windows 2000 DDK addendumFrom Windows 2000 DDK addendum
WDM Audio platform differencesWDM Audio platform differences
DDK Doc ChangesDDK Doc ChangesNew Material (2)New Material (2)
KMixer driver Sample Rate Conversion KMixer driver Sample Rate Conversion and mixing policyand mixing policy
Factors governing Wave-output latencyFactors governing Wave-output latency DirectSound capture effectsDirectSound capture effects
Including AEC AGC NSIncluding AEC AGC NS
Multifunction audio devicesMultifunction audio devices Installing and configuring Audio driversInstalling and configuring Audio drivers Windows 2000 device-interface limitsWindows 2000 device-interface limits
DDK Doc ChangesDDK Doc ChangesNew Material (3)New Material (3)
Extensions to legacy Windows Extensions to legacy Windows Multimedia APIsMultimedia APIs Extended capabilities in WDM Audio driversExtended capabilities in WDM Audio drivers Accessing the preferred Device IDAccessing the preferred Device ID
Media-Class INF ExtensionsMedia-Class INF Extensions AlsoInstall Known FilesAlsoInstall Known Files
Data-intersection handlersData-intersection handlers Power management for Audio driversPower management for Audio drivers Version numbering for Audio driversVersion numbering for Audio drivers
DDK Doc ChangesDDK Doc ChangesExisting information augmentedExisting information augmented
USB AudioMIDI class driver descriptionUSB AudioMIDI class driver description Supporting hardware acceleration of Supporting hardware acceleration of
DirectSound 2-dimensional mixingDirectSound 2-dimensional mixing Kernel Streaming topology to Audio Kernel Streaming topology to Audio
Mixer API translationMixer API translation Clarified use of Clarified use of
PcNewRegistryKey PcNewRegistryKey NewMasterDmaChannel NewMasterDmaChannel PcRegisterPhysicalConnection PcRegisterPhysicalConnection PcAddAdapterDevice and so onPcAddAdapterDevice and so on
DDK Doc ChangesDDK Doc ChangesNew Material Already Added post-BetaNew Material Already Added post-Beta
Global Effects filtersGlobal Effects filters AEC system filterAEC system filter Media-Class INF ExtensionsMedia-Class INF Extensions
KnownRegEntries SetupPreferredAudioDevicesKnownRegEntries SetupPreferredAudioDevices
Control Panel branding by vendorsControl Panel branding by vendors Speaker configuration updateSpeaker configuration update
Elaboration of driver implementation of Elaboration of driver implementation of DSSPEAKER_SURROUND and DSSPEAKER_SURROUND and DSSPEAKER_DIRECTOUT modesDSSPEAKER_DIRECTOUT modes
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-BetaNew Material To Be Added post-Beta
Update information about Microsoftrsquos AEC Update information about Microsoftrsquos AEC implementationimplementation
64-bit driver and API specifics64-bit driver and API specifics Detecting different WDM platformsDetecting different WDM platforms
Including how to detect which QFESP is installedIncluding how to detect which QFESP is installed Differences between WDM audio platformsDifferences between WDM audio platforms
Including a taxonomy of the different QFEsSPsIncluding a taxonomy of the different QFEsSPs Explain MME device limits in Win XPExplain MME device limits in Win XP Chart showing non-PCM support among Chart showing non-PCM support among
different WDM OSesdifferent WDM OSes Additional DRM documentationAdditional DRM documentation
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-Beta (2)New Material To Be Added post-Beta (2)
Using the migration DLL to retain a 9x WDM Using the migration DLL to retain a 9x WDM driver during upgrade to NTOSdriver during upgrade to NTOS
Document how a driver exposes multi-channel Document how a driver exposes multi-channel volumemute nodesvolumemute nodes
New default settings for sliders in Win XPNew default settings for sliders in Win XP DirectSound HW acceleration slider DirectSound HW acceleration slider SRC quality (used for DSound output only)SRC quality (used for DSound output only)
DSound support for mix of 2D3D pinsDSound support for mix of 2D3D pins Overriding the IDmaChannel interfaceOverriding the IDmaChannel interface Info for audio bus driversInfo for audio bus drivers ldquoldquoWhich sample to start withrdquo - Overview of Which sample to start withrdquo - Overview of
the various DDK samplesthe various DDK samples
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
NewNew GFX ndash global effect filterGFX ndash global effect filter MSVAD ndash virtual audio deviceMSVAD ndash virtual audio device
ImprovedImproved AC97smpl ndash Intel ICH2AC97smpl ndash Intel ICH2 DDKSynth ndash kernel software synthDDKSynth ndash kernel software synth DMusUART ndash MPU miniportDMusUART ndash MPU miniport SB16 ndash ISA sample SB16 ndash ISA sample
AC97 SampleAC97 SampleAdditions and UpgradesAdditions and Upgrades
New interactive INF Viewer toolNew interactive INF Viewer tool Contains migration DLL sample codeContains migration DLL sample code
New property page amp CPLNew property page amp CPL Speaker configuration propertySpeaker configuration property
KSPROPERTY_AUDIO_CHANNEL_CONFIGKSPROPERTY_AUDIO_CHANNEL_CONFIG Driver writes to registry upon setDriver writes to registry upon set Driver reads registry value upon getDriver reads registry value upon get
Also at MiniportInit Also at MiniportInit
Other custom properties - Get (and Set)Other custom properties - Get (and Set)
AC97 SampleAC97 SampleAdditions and Upgrades (2)Additions and Upgrades (2)
WAVEFORMATPCMEX support for WAVEFORMATPCMEX support for multi-channel streamsmulti-channel streams
Support for Intel 820 (multi-channel ac97 codecs)Support for Intel 820 (multi-channel ac97 codecs) Multi-channel volume workarounds for past Multi-channel volume workarounds for past
versions of Windowsversions of Windows How to add additional nodesconnections for surround How to add additional nodesconnections for surround
and centerLFEand centerLFE Send sample rate change requests there etcSend sample rate change requests there etc
How to add virtual master volume (mono) if 4 or 6 How to add virtual master volume (mono) if 4 or 6 channel presentchannel present
How to change data range depending on number of ac97 How to change data range depending on number of ac97 codecs detectedcodecs detected
Multi-channel mute and volume handlersMulti-channel mute and volume handlers
AC97 SampleAC97 SampleAdditions and Upgrades (3)Additions and Upgrades (3)
DRM supportDRM support Note that it cant detect presence of SPDIF Note that it cant detect presence of SPDIF
on non-compliant ac97 codecs so this is on non-compliant ac97 codecs so this is questionablequestionable
Vastly improved INFVastly improved INF Significant DataRangeIntersection Significant DataRangeIntersection
handler cleanuphandler cleanup Better synchronizationBetter synchronization
MapLock not held during MapLock not held during PortStream-gtGetMappingPortStream-gtGetMapping
AC97 SampleAC97 SampleAdditions and Upgrades (4)Additions and Upgrades (4)
Treat D2 exactly like D3 nowTreat D2 exactly like D3 now Disconnect interrupt anytime not in D0 nowDisconnect interrupt anytime not in D0 now Note bug fix at minwavecpp line 570-72 Note bug fix at minwavecpp line 570-72
(Win9x removeadd doesnrsquot destroy filter (Win9x removeadd doesnrsquot destroy filter descriptor)descriptor)
GetAllocatorFraming FrameSize must be GetAllocatorFraming FrameSize must be sample block alignedsample block aligned
Pins DataRangeSampleSize should be set Pins DataRangeSampleSize should be set to non-zeroto non-zero
Code clean up from Windows 2000Code clean up from Windows 2000
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
New FeaturesNew FeaturesAdded in Windows XP (5)Added in Windows XP (5)
Acoustic Echo Cancellation supportAcoustic Echo Cancellation support Noise Suppression and Automatic Gain Noise Suppression and Automatic Gain
Control are optionally includedControl are optionally included Inserted at lowest level (post-mixer)Inserted at lowest level (post-mixer) Accessed via DSound8 full duplex objectAccessed via DSound8 full duplex object Can be hardware-acceleratedCan be hardware-accelerated MS system-supplied AECMS system-supplied AEC
AVStream componentAVStream component 8 kHz-22 kHz 16-bit mono8 kHz-22 kHz 16-bit mono No clock rate matching for inputoutputNo clock rate matching for inputoutput
New FeaturesNew FeaturesAdded in Windows XP (6)Added in Windows XP (6)
Global Effects Filters (GFX)Global Effects Filters (GFX) Recommended for hardware-specific master effects Recommended for hardware-specific master effects
(speaker compensation mic array filters) (speaker compensation mic array filters) Also useful for general audio processing (EQ)Also useful for general audio processing (EQ) Applied to final playback mix or original capture signal Applied to final playback mix or original capture signal
for all APIsfor all APIs Hardware-specific effects automatically addedHardware-specific effects automatically added Sounds control panel (Audio|Advancedhellip|Effects) used Sounds control panel (Audio|Advancedhellip|Effects) used
to add reorder manipulate effectsto add reorder manipulate effects Vendor-supplied UI invoked from Sounds CPLVendor-supplied UI invoked from Sounds CPL Vendor implements effect as AVStream filterVendor implements effect as AVStream filter Restricted to USB devices on Windows XPRestricted to USB devices on Windows XP Future OS releases will allow application to any audio Future OS releases will allow application to any audio
device with supporting HW driverdevice with supporting HW driver
New FeaturesNew FeaturesAdded in Windows MeAdded in Windows Me
Secure Audio Path (kernel mode DRM)Secure Audio Path (kernel mode DRM) Now required for Windows XP logoNow required for Windows XP logo
USB MIDIUSB MIDI WinME QFE available for MIDIaudio devicesWinME QFE available for MIDIaudio devices
Non-PCM outputNon-PCM output Also in Windows 2000 Service Pack 2Also in Windows 2000 Service Pack 2 Also available in Windows 98 SE QFEAlso available in Windows 98 SE QFE
Contact Microsoft Product Support Services for thisContact Microsoft Product Support Services for this
Peakmeter support and supporting SndVol UIPeakmeter support and supporting SndVol UI
New FeaturesNew FeaturesAdded in QFE ReleasesAdded in QFE Releases
QFEs are supersets backward-inclusiveQFEs are supersets backward-inclusive Windows 98 SE QFE ndash 269601USA8EXEWindows 98 SE QFE ndash 269601USA8EXE
Non-PCM Windows 2000 fixes SoftFMNon-PCM Windows 2000 fixes SoftFM Not included volume persistence DSound Not included volume persistence DSound
cloning waveOutGetPosition (non-PCM) cloning waveOutGetPosition (non-PCM) IPortClsVersionIPortClsVersion
Windows Me QFE ndash 280127USAMEXEWindows Me QFE ndash 280127USAMEXE USB MIDI CD slider glitch reductionUSB MIDI CD slider glitch reduction
Talk to PSS for redist rights for 9x QFEsTalk to PSS for redist rights for 9x QFEs
New FeaturesNew FeaturesAdded in Service Pack ReleasesAdded in Service Pack Releases
Windows 2000 Service Pack 1Windows 2000 Service Pack 1 No audio changesNo audio changes
Windows 2000 Service Pack 2Windows 2000 Service Pack 2 Non-PCM volume persistence DSound Non-PCM volume persistence DSound
cloning IPortClsVersioncloning IPortClsVersion
No further SP work expected at this timeNo further SP work expected at this time
(Un)Features(Un)FeaturesWhatrsquos not present in Windows XPWhatrsquos not present in Windows XP
HW acceleration of DirectX 8HW acceleration of DirectX 8 Planned for subsequent releasePlanned for subsequent release
USB2 supportUSB2 support Support for tons of 1394 devices (mLan)Support for tons of 1394 devices (mLan) Very low-latency PCM via DSoundwaveVery low-latency PCM via DSoundwave Multi-channel peakmeters SetPan Multi-channel peakmeters SetPan
waveOutSetVolume supermix APIwaveOutSetVolume supermix API Dynamic changes in topology or formatDynamic changes in topology or format Support for custom mixer line controlsSupport for custom mixer line controls
DDK Documentation DDK Documentation Additions and UpdatesAdditions and Updates
(big thanks to Windows (big thanks to Windows DDK doc team particularly DDK doc team particularly
Jerry Van Aken)Jerry Van Aken)
DDK Doc ChangesDDK Doc ChangesNew MaterialNew Material
Hardware EventsHardware Events DirectSound HW Acceleration SliderDirectSound HW Acceleration Slider DirectSound speaker configuration settings DirectSound speaker configuration settings Supporting non-PCM wave formats Supporting non-PCM wave formats
From hwdevaudio White PaperFrom hwdevaudio White Paper
Digital Rights ManagementDigital Rights Management From Windows 2000 DDK addendumFrom Windows 2000 DDK addendum
WDM Audio platform differencesWDM Audio platform differences
DDK Doc ChangesDDK Doc ChangesNew Material (2)New Material (2)
KMixer driver Sample Rate Conversion KMixer driver Sample Rate Conversion and mixing policyand mixing policy
Factors governing Wave-output latencyFactors governing Wave-output latency DirectSound capture effectsDirectSound capture effects
Including AEC AGC NSIncluding AEC AGC NS
Multifunction audio devicesMultifunction audio devices Installing and configuring Audio driversInstalling and configuring Audio drivers Windows 2000 device-interface limitsWindows 2000 device-interface limits
DDK Doc ChangesDDK Doc ChangesNew Material (3)New Material (3)
Extensions to legacy Windows Extensions to legacy Windows Multimedia APIsMultimedia APIs Extended capabilities in WDM Audio driversExtended capabilities in WDM Audio drivers Accessing the preferred Device IDAccessing the preferred Device ID
Media-Class INF ExtensionsMedia-Class INF Extensions AlsoInstall Known FilesAlsoInstall Known Files
Data-intersection handlersData-intersection handlers Power management for Audio driversPower management for Audio drivers Version numbering for Audio driversVersion numbering for Audio drivers
DDK Doc ChangesDDK Doc ChangesExisting information augmentedExisting information augmented
USB AudioMIDI class driver descriptionUSB AudioMIDI class driver description Supporting hardware acceleration of Supporting hardware acceleration of
DirectSound 2-dimensional mixingDirectSound 2-dimensional mixing Kernel Streaming topology to Audio Kernel Streaming topology to Audio
Mixer API translationMixer API translation Clarified use of Clarified use of
PcNewRegistryKey PcNewRegistryKey NewMasterDmaChannel NewMasterDmaChannel PcRegisterPhysicalConnection PcRegisterPhysicalConnection PcAddAdapterDevice and so onPcAddAdapterDevice and so on
DDK Doc ChangesDDK Doc ChangesNew Material Already Added post-BetaNew Material Already Added post-Beta
Global Effects filtersGlobal Effects filters AEC system filterAEC system filter Media-Class INF ExtensionsMedia-Class INF Extensions
KnownRegEntries SetupPreferredAudioDevicesKnownRegEntries SetupPreferredAudioDevices
Control Panel branding by vendorsControl Panel branding by vendors Speaker configuration updateSpeaker configuration update
Elaboration of driver implementation of Elaboration of driver implementation of DSSPEAKER_SURROUND and DSSPEAKER_SURROUND and DSSPEAKER_DIRECTOUT modesDSSPEAKER_DIRECTOUT modes
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-BetaNew Material To Be Added post-Beta
Update information about Microsoftrsquos AEC Update information about Microsoftrsquos AEC implementationimplementation
64-bit driver and API specifics64-bit driver and API specifics Detecting different WDM platformsDetecting different WDM platforms
Including how to detect which QFESP is installedIncluding how to detect which QFESP is installed Differences between WDM audio platformsDifferences between WDM audio platforms
Including a taxonomy of the different QFEsSPsIncluding a taxonomy of the different QFEsSPs Explain MME device limits in Win XPExplain MME device limits in Win XP Chart showing non-PCM support among Chart showing non-PCM support among
different WDM OSesdifferent WDM OSes Additional DRM documentationAdditional DRM documentation
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-Beta (2)New Material To Be Added post-Beta (2)
Using the migration DLL to retain a 9x WDM Using the migration DLL to retain a 9x WDM driver during upgrade to NTOSdriver during upgrade to NTOS
Document how a driver exposes multi-channel Document how a driver exposes multi-channel volumemute nodesvolumemute nodes
New default settings for sliders in Win XPNew default settings for sliders in Win XP DirectSound HW acceleration slider DirectSound HW acceleration slider SRC quality (used for DSound output only)SRC quality (used for DSound output only)
DSound support for mix of 2D3D pinsDSound support for mix of 2D3D pins Overriding the IDmaChannel interfaceOverriding the IDmaChannel interface Info for audio bus driversInfo for audio bus drivers ldquoldquoWhich sample to start withrdquo - Overview of Which sample to start withrdquo - Overview of
the various DDK samplesthe various DDK samples
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
NewNew GFX ndash global effect filterGFX ndash global effect filter MSVAD ndash virtual audio deviceMSVAD ndash virtual audio device
ImprovedImproved AC97smpl ndash Intel ICH2AC97smpl ndash Intel ICH2 DDKSynth ndash kernel software synthDDKSynth ndash kernel software synth DMusUART ndash MPU miniportDMusUART ndash MPU miniport SB16 ndash ISA sample SB16 ndash ISA sample
AC97 SampleAC97 SampleAdditions and UpgradesAdditions and Upgrades
New interactive INF Viewer toolNew interactive INF Viewer tool Contains migration DLL sample codeContains migration DLL sample code
New property page amp CPLNew property page amp CPL Speaker configuration propertySpeaker configuration property
KSPROPERTY_AUDIO_CHANNEL_CONFIGKSPROPERTY_AUDIO_CHANNEL_CONFIG Driver writes to registry upon setDriver writes to registry upon set Driver reads registry value upon getDriver reads registry value upon get
Also at MiniportInit Also at MiniportInit
Other custom properties - Get (and Set)Other custom properties - Get (and Set)
AC97 SampleAC97 SampleAdditions and Upgrades (2)Additions and Upgrades (2)
WAVEFORMATPCMEX support for WAVEFORMATPCMEX support for multi-channel streamsmulti-channel streams
Support for Intel 820 (multi-channel ac97 codecs)Support for Intel 820 (multi-channel ac97 codecs) Multi-channel volume workarounds for past Multi-channel volume workarounds for past
versions of Windowsversions of Windows How to add additional nodesconnections for surround How to add additional nodesconnections for surround
and centerLFEand centerLFE Send sample rate change requests there etcSend sample rate change requests there etc
How to add virtual master volume (mono) if 4 or 6 How to add virtual master volume (mono) if 4 or 6 channel presentchannel present
How to change data range depending on number of ac97 How to change data range depending on number of ac97 codecs detectedcodecs detected
Multi-channel mute and volume handlersMulti-channel mute and volume handlers
AC97 SampleAC97 SampleAdditions and Upgrades (3)Additions and Upgrades (3)
DRM supportDRM support Note that it cant detect presence of SPDIF Note that it cant detect presence of SPDIF
on non-compliant ac97 codecs so this is on non-compliant ac97 codecs so this is questionablequestionable
Vastly improved INFVastly improved INF Significant DataRangeIntersection Significant DataRangeIntersection
handler cleanuphandler cleanup Better synchronizationBetter synchronization
MapLock not held during MapLock not held during PortStream-gtGetMappingPortStream-gtGetMapping
AC97 SampleAC97 SampleAdditions and Upgrades (4)Additions and Upgrades (4)
Treat D2 exactly like D3 nowTreat D2 exactly like D3 now Disconnect interrupt anytime not in D0 nowDisconnect interrupt anytime not in D0 now Note bug fix at minwavecpp line 570-72 Note bug fix at minwavecpp line 570-72
(Win9x removeadd doesnrsquot destroy filter (Win9x removeadd doesnrsquot destroy filter descriptor)descriptor)
GetAllocatorFraming FrameSize must be GetAllocatorFraming FrameSize must be sample block alignedsample block aligned
Pins DataRangeSampleSize should be set Pins DataRangeSampleSize should be set to non-zeroto non-zero
Code clean up from Windows 2000Code clean up from Windows 2000
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
New FeaturesNew FeaturesAdded in Windows XP (6)Added in Windows XP (6)
Global Effects Filters (GFX)Global Effects Filters (GFX) Recommended for hardware-specific master effects Recommended for hardware-specific master effects
(speaker compensation mic array filters) (speaker compensation mic array filters) Also useful for general audio processing (EQ)Also useful for general audio processing (EQ) Applied to final playback mix or original capture signal Applied to final playback mix or original capture signal
for all APIsfor all APIs Hardware-specific effects automatically addedHardware-specific effects automatically added Sounds control panel (Audio|Advancedhellip|Effects) used Sounds control panel (Audio|Advancedhellip|Effects) used
to add reorder manipulate effectsto add reorder manipulate effects Vendor-supplied UI invoked from Sounds CPLVendor-supplied UI invoked from Sounds CPL Vendor implements effect as AVStream filterVendor implements effect as AVStream filter Restricted to USB devices on Windows XPRestricted to USB devices on Windows XP Future OS releases will allow application to any audio Future OS releases will allow application to any audio
device with supporting HW driverdevice with supporting HW driver
New FeaturesNew FeaturesAdded in Windows MeAdded in Windows Me
Secure Audio Path (kernel mode DRM)Secure Audio Path (kernel mode DRM) Now required for Windows XP logoNow required for Windows XP logo
USB MIDIUSB MIDI WinME QFE available for MIDIaudio devicesWinME QFE available for MIDIaudio devices
Non-PCM outputNon-PCM output Also in Windows 2000 Service Pack 2Also in Windows 2000 Service Pack 2 Also available in Windows 98 SE QFEAlso available in Windows 98 SE QFE
Contact Microsoft Product Support Services for thisContact Microsoft Product Support Services for this
Peakmeter support and supporting SndVol UIPeakmeter support and supporting SndVol UI
New FeaturesNew FeaturesAdded in QFE ReleasesAdded in QFE Releases
QFEs are supersets backward-inclusiveQFEs are supersets backward-inclusive Windows 98 SE QFE ndash 269601USA8EXEWindows 98 SE QFE ndash 269601USA8EXE
Non-PCM Windows 2000 fixes SoftFMNon-PCM Windows 2000 fixes SoftFM Not included volume persistence DSound Not included volume persistence DSound
cloning waveOutGetPosition (non-PCM) cloning waveOutGetPosition (non-PCM) IPortClsVersionIPortClsVersion
Windows Me QFE ndash 280127USAMEXEWindows Me QFE ndash 280127USAMEXE USB MIDI CD slider glitch reductionUSB MIDI CD slider glitch reduction
Talk to PSS for redist rights for 9x QFEsTalk to PSS for redist rights for 9x QFEs
New FeaturesNew FeaturesAdded in Service Pack ReleasesAdded in Service Pack Releases
Windows 2000 Service Pack 1Windows 2000 Service Pack 1 No audio changesNo audio changes
Windows 2000 Service Pack 2Windows 2000 Service Pack 2 Non-PCM volume persistence DSound Non-PCM volume persistence DSound
cloning IPortClsVersioncloning IPortClsVersion
No further SP work expected at this timeNo further SP work expected at this time
(Un)Features(Un)FeaturesWhatrsquos not present in Windows XPWhatrsquos not present in Windows XP
HW acceleration of DirectX 8HW acceleration of DirectX 8 Planned for subsequent releasePlanned for subsequent release
USB2 supportUSB2 support Support for tons of 1394 devices (mLan)Support for tons of 1394 devices (mLan) Very low-latency PCM via DSoundwaveVery low-latency PCM via DSoundwave Multi-channel peakmeters SetPan Multi-channel peakmeters SetPan
waveOutSetVolume supermix APIwaveOutSetVolume supermix API Dynamic changes in topology or formatDynamic changes in topology or format Support for custom mixer line controlsSupport for custom mixer line controls
DDK Documentation DDK Documentation Additions and UpdatesAdditions and Updates
(big thanks to Windows (big thanks to Windows DDK doc team particularly DDK doc team particularly
Jerry Van Aken)Jerry Van Aken)
DDK Doc ChangesDDK Doc ChangesNew MaterialNew Material
Hardware EventsHardware Events DirectSound HW Acceleration SliderDirectSound HW Acceleration Slider DirectSound speaker configuration settings DirectSound speaker configuration settings Supporting non-PCM wave formats Supporting non-PCM wave formats
From hwdevaudio White PaperFrom hwdevaudio White Paper
Digital Rights ManagementDigital Rights Management From Windows 2000 DDK addendumFrom Windows 2000 DDK addendum
WDM Audio platform differencesWDM Audio platform differences
DDK Doc ChangesDDK Doc ChangesNew Material (2)New Material (2)
KMixer driver Sample Rate Conversion KMixer driver Sample Rate Conversion and mixing policyand mixing policy
Factors governing Wave-output latencyFactors governing Wave-output latency DirectSound capture effectsDirectSound capture effects
Including AEC AGC NSIncluding AEC AGC NS
Multifunction audio devicesMultifunction audio devices Installing and configuring Audio driversInstalling and configuring Audio drivers Windows 2000 device-interface limitsWindows 2000 device-interface limits
DDK Doc ChangesDDK Doc ChangesNew Material (3)New Material (3)
Extensions to legacy Windows Extensions to legacy Windows Multimedia APIsMultimedia APIs Extended capabilities in WDM Audio driversExtended capabilities in WDM Audio drivers Accessing the preferred Device IDAccessing the preferred Device ID
Media-Class INF ExtensionsMedia-Class INF Extensions AlsoInstall Known FilesAlsoInstall Known Files
Data-intersection handlersData-intersection handlers Power management for Audio driversPower management for Audio drivers Version numbering for Audio driversVersion numbering for Audio drivers
DDK Doc ChangesDDK Doc ChangesExisting information augmentedExisting information augmented
USB AudioMIDI class driver descriptionUSB AudioMIDI class driver description Supporting hardware acceleration of Supporting hardware acceleration of
DirectSound 2-dimensional mixingDirectSound 2-dimensional mixing Kernel Streaming topology to Audio Kernel Streaming topology to Audio
Mixer API translationMixer API translation Clarified use of Clarified use of
PcNewRegistryKey PcNewRegistryKey NewMasterDmaChannel NewMasterDmaChannel PcRegisterPhysicalConnection PcRegisterPhysicalConnection PcAddAdapterDevice and so onPcAddAdapterDevice and so on
DDK Doc ChangesDDK Doc ChangesNew Material Already Added post-BetaNew Material Already Added post-Beta
Global Effects filtersGlobal Effects filters AEC system filterAEC system filter Media-Class INF ExtensionsMedia-Class INF Extensions
KnownRegEntries SetupPreferredAudioDevicesKnownRegEntries SetupPreferredAudioDevices
Control Panel branding by vendorsControl Panel branding by vendors Speaker configuration updateSpeaker configuration update
Elaboration of driver implementation of Elaboration of driver implementation of DSSPEAKER_SURROUND and DSSPEAKER_SURROUND and DSSPEAKER_DIRECTOUT modesDSSPEAKER_DIRECTOUT modes
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-BetaNew Material To Be Added post-Beta
Update information about Microsoftrsquos AEC Update information about Microsoftrsquos AEC implementationimplementation
64-bit driver and API specifics64-bit driver and API specifics Detecting different WDM platformsDetecting different WDM platforms
Including how to detect which QFESP is installedIncluding how to detect which QFESP is installed Differences between WDM audio platformsDifferences between WDM audio platforms
Including a taxonomy of the different QFEsSPsIncluding a taxonomy of the different QFEsSPs Explain MME device limits in Win XPExplain MME device limits in Win XP Chart showing non-PCM support among Chart showing non-PCM support among
different WDM OSesdifferent WDM OSes Additional DRM documentationAdditional DRM documentation
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-Beta (2)New Material To Be Added post-Beta (2)
Using the migration DLL to retain a 9x WDM Using the migration DLL to retain a 9x WDM driver during upgrade to NTOSdriver during upgrade to NTOS
Document how a driver exposes multi-channel Document how a driver exposes multi-channel volumemute nodesvolumemute nodes
New default settings for sliders in Win XPNew default settings for sliders in Win XP DirectSound HW acceleration slider DirectSound HW acceleration slider SRC quality (used for DSound output only)SRC quality (used for DSound output only)
DSound support for mix of 2D3D pinsDSound support for mix of 2D3D pins Overriding the IDmaChannel interfaceOverriding the IDmaChannel interface Info for audio bus driversInfo for audio bus drivers ldquoldquoWhich sample to start withrdquo - Overview of Which sample to start withrdquo - Overview of
the various DDK samplesthe various DDK samples
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
NewNew GFX ndash global effect filterGFX ndash global effect filter MSVAD ndash virtual audio deviceMSVAD ndash virtual audio device
ImprovedImproved AC97smpl ndash Intel ICH2AC97smpl ndash Intel ICH2 DDKSynth ndash kernel software synthDDKSynth ndash kernel software synth DMusUART ndash MPU miniportDMusUART ndash MPU miniport SB16 ndash ISA sample SB16 ndash ISA sample
AC97 SampleAC97 SampleAdditions and UpgradesAdditions and Upgrades
New interactive INF Viewer toolNew interactive INF Viewer tool Contains migration DLL sample codeContains migration DLL sample code
New property page amp CPLNew property page amp CPL Speaker configuration propertySpeaker configuration property
KSPROPERTY_AUDIO_CHANNEL_CONFIGKSPROPERTY_AUDIO_CHANNEL_CONFIG Driver writes to registry upon setDriver writes to registry upon set Driver reads registry value upon getDriver reads registry value upon get
Also at MiniportInit Also at MiniportInit
Other custom properties - Get (and Set)Other custom properties - Get (and Set)
AC97 SampleAC97 SampleAdditions and Upgrades (2)Additions and Upgrades (2)
WAVEFORMATPCMEX support for WAVEFORMATPCMEX support for multi-channel streamsmulti-channel streams
Support for Intel 820 (multi-channel ac97 codecs)Support for Intel 820 (multi-channel ac97 codecs) Multi-channel volume workarounds for past Multi-channel volume workarounds for past
versions of Windowsversions of Windows How to add additional nodesconnections for surround How to add additional nodesconnections for surround
and centerLFEand centerLFE Send sample rate change requests there etcSend sample rate change requests there etc
How to add virtual master volume (mono) if 4 or 6 How to add virtual master volume (mono) if 4 or 6 channel presentchannel present
How to change data range depending on number of ac97 How to change data range depending on number of ac97 codecs detectedcodecs detected
Multi-channel mute and volume handlersMulti-channel mute and volume handlers
AC97 SampleAC97 SampleAdditions and Upgrades (3)Additions and Upgrades (3)
DRM supportDRM support Note that it cant detect presence of SPDIF Note that it cant detect presence of SPDIF
on non-compliant ac97 codecs so this is on non-compliant ac97 codecs so this is questionablequestionable
Vastly improved INFVastly improved INF Significant DataRangeIntersection Significant DataRangeIntersection
handler cleanuphandler cleanup Better synchronizationBetter synchronization
MapLock not held during MapLock not held during PortStream-gtGetMappingPortStream-gtGetMapping
AC97 SampleAC97 SampleAdditions and Upgrades (4)Additions and Upgrades (4)
Treat D2 exactly like D3 nowTreat D2 exactly like D3 now Disconnect interrupt anytime not in D0 nowDisconnect interrupt anytime not in D0 now Note bug fix at minwavecpp line 570-72 Note bug fix at minwavecpp line 570-72
(Win9x removeadd doesnrsquot destroy filter (Win9x removeadd doesnrsquot destroy filter descriptor)descriptor)
GetAllocatorFraming FrameSize must be GetAllocatorFraming FrameSize must be sample block alignedsample block aligned
Pins DataRangeSampleSize should be set Pins DataRangeSampleSize should be set to non-zeroto non-zero
Code clean up from Windows 2000Code clean up from Windows 2000
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
New FeaturesNew FeaturesAdded in Windows MeAdded in Windows Me
Secure Audio Path (kernel mode DRM)Secure Audio Path (kernel mode DRM) Now required for Windows XP logoNow required for Windows XP logo
USB MIDIUSB MIDI WinME QFE available for MIDIaudio devicesWinME QFE available for MIDIaudio devices
Non-PCM outputNon-PCM output Also in Windows 2000 Service Pack 2Also in Windows 2000 Service Pack 2 Also available in Windows 98 SE QFEAlso available in Windows 98 SE QFE
Contact Microsoft Product Support Services for thisContact Microsoft Product Support Services for this
Peakmeter support and supporting SndVol UIPeakmeter support and supporting SndVol UI
New FeaturesNew FeaturesAdded in QFE ReleasesAdded in QFE Releases
QFEs are supersets backward-inclusiveQFEs are supersets backward-inclusive Windows 98 SE QFE ndash 269601USA8EXEWindows 98 SE QFE ndash 269601USA8EXE
Non-PCM Windows 2000 fixes SoftFMNon-PCM Windows 2000 fixes SoftFM Not included volume persistence DSound Not included volume persistence DSound
cloning waveOutGetPosition (non-PCM) cloning waveOutGetPosition (non-PCM) IPortClsVersionIPortClsVersion
Windows Me QFE ndash 280127USAMEXEWindows Me QFE ndash 280127USAMEXE USB MIDI CD slider glitch reductionUSB MIDI CD slider glitch reduction
Talk to PSS for redist rights for 9x QFEsTalk to PSS for redist rights for 9x QFEs
New FeaturesNew FeaturesAdded in Service Pack ReleasesAdded in Service Pack Releases
Windows 2000 Service Pack 1Windows 2000 Service Pack 1 No audio changesNo audio changes
Windows 2000 Service Pack 2Windows 2000 Service Pack 2 Non-PCM volume persistence DSound Non-PCM volume persistence DSound
cloning IPortClsVersioncloning IPortClsVersion
No further SP work expected at this timeNo further SP work expected at this time
(Un)Features(Un)FeaturesWhatrsquos not present in Windows XPWhatrsquos not present in Windows XP
HW acceleration of DirectX 8HW acceleration of DirectX 8 Planned for subsequent releasePlanned for subsequent release
USB2 supportUSB2 support Support for tons of 1394 devices (mLan)Support for tons of 1394 devices (mLan) Very low-latency PCM via DSoundwaveVery low-latency PCM via DSoundwave Multi-channel peakmeters SetPan Multi-channel peakmeters SetPan
waveOutSetVolume supermix APIwaveOutSetVolume supermix API Dynamic changes in topology or formatDynamic changes in topology or format Support for custom mixer line controlsSupport for custom mixer line controls
DDK Documentation DDK Documentation Additions and UpdatesAdditions and Updates
(big thanks to Windows (big thanks to Windows DDK doc team particularly DDK doc team particularly
Jerry Van Aken)Jerry Van Aken)
DDK Doc ChangesDDK Doc ChangesNew MaterialNew Material
Hardware EventsHardware Events DirectSound HW Acceleration SliderDirectSound HW Acceleration Slider DirectSound speaker configuration settings DirectSound speaker configuration settings Supporting non-PCM wave formats Supporting non-PCM wave formats
From hwdevaudio White PaperFrom hwdevaudio White Paper
Digital Rights ManagementDigital Rights Management From Windows 2000 DDK addendumFrom Windows 2000 DDK addendum
WDM Audio platform differencesWDM Audio platform differences
DDK Doc ChangesDDK Doc ChangesNew Material (2)New Material (2)
KMixer driver Sample Rate Conversion KMixer driver Sample Rate Conversion and mixing policyand mixing policy
Factors governing Wave-output latencyFactors governing Wave-output latency DirectSound capture effectsDirectSound capture effects
Including AEC AGC NSIncluding AEC AGC NS
Multifunction audio devicesMultifunction audio devices Installing and configuring Audio driversInstalling and configuring Audio drivers Windows 2000 device-interface limitsWindows 2000 device-interface limits
DDK Doc ChangesDDK Doc ChangesNew Material (3)New Material (3)
Extensions to legacy Windows Extensions to legacy Windows Multimedia APIsMultimedia APIs Extended capabilities in WDM Audio driversExtended capabilities in WDM Audio drivers Accessing the preferred Device IDAccessing the preferred Device ID
Media-Class INF ExtensionsMedia-Class INF Extensions AlsoInstall Known FilesAlsoInstall Known Files
Data-intersection handlersData-intersection handlers Power management for Audio driversPower management for Audio drivers Version numbering for Audio driversVersion numbering for Audio drivers
DDK Doc ChangesDDK Doc ChangesExisting information augmentedExisting information augmented
USB AudioMIDI class driver descriptionUSB AudioMIDI class driver description Supporting hardware acceleration of Supporting hardware acceleration of
DirectSound 2-dimensional mixingDirectSound 2-dimensional mixing Kernel Streaming topology to Audio Kernel Streaming topology to Audio
Mixer API translationMixer API translation Clarified use of Clarified use of
PcNewRegistryKey PcNewRegistryKey NewMasterDmaChannel NewMasterDmaChannel PcRegisterPhysicalConnection PcRegisterPhysicalConnection PcAddAdapterDevice and so onPcAddAdapterDevice and so on
DDK Doc ChangesDDK Doc ChangesNew Material Already Added post-BetaNew Material Already Added post-Beta
Global Effects filtersGlobal Effects filters AEC system filterAEC system filter Media-Class INF ExtensionsMedia-Class INF Extensions
KnownRegEntries SetupPreferredAudioDevicesKnownRegEntries SetupPreferredAudioDevices
Control Panel branding by vendorsControl Panel branding by vendors Speaker configuration updateSpeaker configuration update
Elaboration of driver implementation of Elaboration of driver implementation of DSSPEAKER_SURROUND and DSSPEAKER_SURROUND and DSSPEAKER_DIRECTOUT modesDSSPEAKER_DIRECTOUT modes
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-BetaNew Material To Be Added post-Beta
Update information about Microsoftrsquos AEC Update information about Microsoftrsquos AEC implementationimplementation
64-bit driver and API specifics64-bit driver and API specifics Detecting different WDM platformsDetecting different WDM platforms
Including how to detect which QFESP is installedIncluding how to detect which QFESP is installed Differences between WDM audio platformsDifferences between WDM audio platforms
Including a taxonomy of the different QFEsSPsIncluding a taxonomy of the different QFEsSPs Explain MME device limits in Win XPExplain MME device limits in Win XP Chart showing non-PCM support among Chart showing non-PCM support among
different WDM OSesdifferent WDM OSes Additional DRM documentationAdditional DRM documentation
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-Beta (2)New Material To Be Added post-Beta (2)
Using the migration DLL to retain a 9x WDM Using the migration DLL to retain a 9x WDM driver during upgrade to NTOSdriver during upgrade to NTOS
Document how a driver exposes multi-channel Document how a driver exposes multi-channel volumemute nodesvolumemute nodes
New default settings for sliders in Win XPNew default settings for sliders in Win XP DirectSound HW acceleration slider DirectSound HW acceleration slider SRC quality (used for DSound output only)SRC quality (used for DSound output only)
DSound support for mix of 2D3D pinsDSound support for mix of 2D3D pins Overriding the IDmaChannel interfaceOverriding the IDmaChannel interface Info for audio bus driversInfo for audio bus drivers ldquoldquoWhich sample to start withrdquo - Overview of Which sample to start withrdquo - Overview of
the various DDK samplesthe various DDK samples
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
NewNew GFX ndash global effect filterGFX ndash global effect filter MSVAD ndash virtual audio deviceMSVAD ndash virtual audio device
ImprovedImproved AC97smpl ndash Intel ICH2AC97smpl ndash Intel ICH2 DDKSynth ndash kernel software synthDDKSynth ndash kernel software synth DMusUART ndash MPU miniportDMusUART ndash MPU miniport SB16 ndash ISA sample SB16 ndash ISA sample
AC97 SampleAC97 SampleAdditions and UpgradesAdditions and Upgrades
New interactive INF Viewer toolNew interactive INF Viewer tool Contains migration DLL sample codeContains migration DLL sample code
New property page amp CPLNew property page amp CPL Speaker configuration propertySpeaker configuration property
KSPROPERTY_AUDIO_CHANNEL_CONFIGKSPROPERTY_AUDIO_CHANNEL_CONFIG Driver writes to registry upon setDriver writes to registry upon set Driver reads registry value upon getDriver reads registry value upon get
Also at MiniportInit Also at MiniportInit
Other custom properties - Get (and Set)Other custom properties - Get (and Set)
AC97 SampleAC97 SampleAdditions and Upgrades (2)Additions and Upgrades (2)
WAVEFORMATPCMEX support for WAVEFORMATPCMEX support for multi-channel streamsmulti-channel streams
Support for Intel 820 (multi-channel ac97 codecs)Support for Intel 820 (multi-channel ac97 codecs) Multi-channel volume workarounds for past Multi-channel volume workarounds for past
versions of Windowsversions of Windows How to add additional nodesconnections for surround How to add additional nodesconnections for surround
and centerLFEand centerLFE Send sample rate change requests there etcSend sample rate change requests there etc
How to add virtual master volume (mono) if 4 or 6 How to add virtual master volume (mono) if 4 or 6 channel presentchannel present
How to change data range depending on number of ac97 How to change data range depending on number of ac97 codecs detectedcodecs detected
Multi-channel mute and volume handlersMulti-channel mute and volume handlers
AC97 SampleAC97 SampleAdditions and Upgrades (3)Additions and Upgrades (3)
DRM supportDRM support Note that it cant detect presence of SPDIF Note that it cant detect presence of SPDIF
on non-compliant ac97 codecs so this is on non-compliant ac97 codecs so this is questionablequestionable
Vastly improved INFVastly improved INF Significant DataRangeIntersection Significant DataRangeIntersection
handler cleanuphandler cleanup Better synchronizationBetter synchronization
MapLock not held during MapLock not held during PortStream-gtGetMappingPortStream-gtGetMapping
AC97 SampleAC97 SampleAdditions and Upgrades (4)Additions and Upgrades (4)
Treat D2 exactly like D3 nowTreat D2 exactly like D3 now Disconnect interrupt anytime not in D0 nowDisconnect interrupt anytime not in D0 now Note bug fix at minwavecpp line 570-72 Note bug fix at minwavecpp line 570-72
(Win9x removeadd doesnrsquot destroy filter (Win9x removeadd doesnrsquot destroy filter descriptor)descriptor)
GetAllocatorFraming FrameSize must be GetAllocatorFraming FrameSize must be sample block alignedsample block aligned
Pins DataRangeSampleSize should be set Pins DataRangeSampleSize should be set to non-zeroto non-zero
Code clean up from Windows 2000Code clean up from Windows 2000
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
New FeaturesNew FeaturesAdded in QFE ReleasesAdded in QFE Releases
QFEs are supersets backward-inclusiveQFEs are supersets backward-inclusive Windows 98 SE QFE ndash 269601USA8EXEWindows 98 SE QFE ndash 269601USA8EXE
Non-PCM Windows 2000 fixes SoftFMNon-PCM Windows 2000 fixes SoftFM Not included volume persistence DSound Not included volume persistence DSound
cloning waveOutGetPosition (non-PCM) cloning waveOutGetPosition (non-PCM) IPortClsVersionIPortClsVersion
Windows Me QFE ndash 280127USAMEXEWindows Me QFE ndash 280127USAMEXE USB MIDI CD slider glitch reductionUSB MIDI CD slider glitch reduction
Talk to PSS for redist rights for 9x QFEsTalk to PSS for redist rights for 9x QFEs
New FeaturesNew FeaturesAdded in Service Pack ReleasesAdded in Service Pack Releases
Windows 2000 Service Pack 1Windows 2000 Service Pack 1 No audio changesNo audio changes
Windows 2000 Service Pack 2Windows 2000 Service Pack 2 Non-PCM volume persistence DSound Non-PCM volume persistence DSound
cloning IPortClsVersioncloning IPortClsVersion
No further SP work expected at this timeNo further SP work expected at this time
(Un)Features(Un)FeaturesWhatrsquos not present in Windows XPWhatrsquos not present in Windows XP
HW acceleration of DirectX 8HW acceleration of DirectX 8 Planned for subsequent releasePlanned for subsequent release
USB2 supportUSB2 support Support for tons of 1394 devices (mLan)Support for tons of 1394 devices (mLan) Very low-latency PCM via DSoundwaveVery low-latency PCM via DSoundwave Multi-channel peakmeters SetPan Multi-channel peakmeters SetPan
waveOutSetVolume supermix APIwaveOutSetVolume supermix API Dynamic changes in topology or formatDynamic changes in topology or format Support for custom mixer line controlsSupport for custom mixer line controls
DDK Documentation DDK Documentation Additions and UpdatesAdditions and Updates
(big thanks to Windows (big thanks to Windows DDK doc team particularly DDK doc team particularly
Jerry Van Aken)Jerry Van Aken)
DDK Doc ChangesDDK Doc ChangesNew MaterialNew Material
Hardware EventsHardware Events DirectSound HW Acceleration SliderDirectSound HW Acceleration Slider DirectSound speaker configuration settings DirectSound speaker configuration settings Supporting non-PCM wave formats Supporting non-PCM wave formats
From hwdevaudio White PaperFrom hwdevaudio White Paper
Digital Rights ManagementDigital Rights Management From Windows 2000 DDK addendumFrom Windows 2000 DDK addendum
WDM Audio platform differencesWDM Audio platform differences
DDK Doc ChangesDDK Doc ChangesNew Material (2)New Material (2)
KMixer driver Sample Rate Conversion KMixer driver Sample Rate Conversion and mixing policyand mixing policy
Factors governing Wave-output latencyFactors governing Wave-output latency DirectSound capture effectsDirectSound capture effects
Including AEC AGC NSIncluding AEC AGC NS
Multifunction audio devicesMultifunction audio devices Installing and configuring Audio driversInstalling and configuring Audio drivers Windows 2000 device-interface limitsWindows 2000 device-interface limits
DDK Doc ChangesDDK Doc ChangesNew Material (3)New Material (3)
Extensions to legacy Windows Extensions to legacy Windows Multimedia APIsMultimedia APIs Extended capabilities in WDM Audio driversExtended capabilities in WDM Audio drivers Accessing the preferred Device IDAccessing the preferred Device ID
Media-Class INF ExtensionsMedia-Class INF Extensions AlsoInstall Known FilesAlsoInstall Known Files
Data-intersection handlersData-intersection handlers Power management for Audio driversPower management for Audio drivers Version numbering for Audio driversVersion numbering for Audio drivers
DDK Doc ChangesDDK Doc ChangesExisting information augmentedExisting information augmented
USB AudioMIDI class driver descriptionUSB AudioMIDI class driver description Supporting hardware acceleration of Supporting hardware acceleration of
DirectSound 2-dimensional mixingDirectSound 2-dimensional mixing Kernel Streaming topology to Audio Kernel Streaming topology to Audio
Mixer API translationMixer API translation Clarified use of Clarified use of
PcNewRegistryKey PcNewRegistryKey NewMasterDmaChannel NewMasterDmaChannel PcRegisterPhysicalConnection PcRegisterPhysicalConnection PcAddAdapterDevice and so onPcAddAdapterDevice and so on
DDK Doc ChangesDDK Doc ChangesNew Material Already Added post-BetaNew Material Already Added post-Beta
Global Effects filtersGlobal Effects filters AEC system filterAEC system filter Media-Class INF ExtensionsMedia-Class INF Extensions
KnownRegEntries SetupPreferredAudioDevicesKnownRegEntries SetupPreferredAudioDevices
Control Panel branding by vendorsControl Panel branding by vendors Speaker configuration updateSpeaker configuration update
Elaboration of driver implementation of Elaboration of driver implementation of DSSPEAKER_SURROUND and DSSPEAKER_SURROUND and DSSPEAKER_DIRECTOUT modesDSSPEAKER_DIRECTOUT modes
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-BetaNew Material To Be Added post-Beta
Update information about Microsoftrsquos AEC Update information about Microsoftrsquos AEC implementationimplementation
64-bit driver and API specifics64-bit driver and API specifics Detecting different WDM platformsDetecting different WDM platforms
Including how to detect which QFESP is installedIncluding how to detect which QFESP is installed Differences between WDM audio platformsDifferences between WDM audio platforms
Including a taxonomy of the different QFEsSPsIncluding a taxonomy of the different QFEsSPs Explain MME device limits in Win XPExplain MME device limits in Win XP Chart showing non-PCM support among Chart showing non-PCM support among
different WDM OSesdifferent WDM OSes Additional DRM documentationAdditional DRM documentation
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-Beta (2)New Material To Be Added post-Beta (2)
Using the migration DLL to retain a 9x WDM Using the migration DLL to retain a 9x WDM driver during upgrade to NTOSdriver during upgrade to NTOS
Document how a driver exposes multi-channel Document how a driver exposes multi-channel volumemute nodesvolumemute nodes
New default settings for sliders in Win XPNew default settings for sliders in Win XP DirectSound HW acceleration slider DirectSound HW acceleration slider SRC quality (used for DSound output only)SRC quality (used for DSound output only)
DSound support for mix of 2D3D pinsDSound support for mix of 2D3D pins Overriding the IDmaChannel interfaceOverriding the IDmaChannel interface Info for audio bus driversInfo for audio bus drivers ldquoldquoWhich sample to start withrdquo - Overview of Which sample to start withrdquo - Overview of
the various DDK samplesthe various DDK samples
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
NewNew GFX ndash global effect filterGFX ndash global effect filter MSVAD ndash virtual audio deviceMSVAD ndash virtual audio device
ImprovedImproved AC97smpl ndash Intel ICH2AC97smpl ndash Intel ICH2 DDKSynth ndash kernel software synthDDKSynth ndash kernel software synth DMusUART ndash MPU miniportDMusUART ndash MPU miniport SB16 ndash ISA sample SB16 ndash ISA sample
AC97 SampleAC97 SampleAdditions and UpgradesAdditions and Upgrades
New interactive INF Viewer toolNew interactive INF Viewer tool Contains migration DLL sample codeContains migration DLL sample code
New property page amp CPLNew property page amp CPL Speaker configuration propertySpeaker configuration property
KSPROPERTY_AUDIO_CHANNEL_CONFIGKSPROPERTY_AUDIO_CHANNEL_CONFIG Driver writes to registry upon setDriver writes to registry upon set Driver reads registry value upon getDriver reads registry value upon get
Also at MiniportInit Also at MiniportInit
Other custom properties - Get (and Set)Other custom properties - Get (and Set)
AC97 SampleAC97 SampleAdditions and Upgrades (2)Additions and Upgrades (2)
WAVEFORMATPCMEX support for WAVEFORMATPCMEX support for multi-channel streamsmulti-channel streams
Support for Intel 820 (multi-channel ac97 codecs)Support for Intel 820 (multi-channel ac97 codecs) Multi-channel volume workarounds for past Multi-channel volume workarounds for past
versions of Windowsversions of Windows How to add additional nodesconnections for surround How to add additional nodesconnections for surround
and centerLFEand centerLFE Send sample rate change requests there etcSend sample rate change requests there etc
How to add virtual master volume (mono) if 4 or 6 How to add virtual master volume (mono) if 4 or 6 channel presentchannel present
How to change data range depending on number of ac97 How to change data range depending on number of ac97 codecs detectedcodecs detected
Multi-channel mute and volume handlersMulti-channel mute and volume handlers
AC97 SampleAC97 SampleAdditions and Upgrades (3)Additions and Upgrades (3)
DRM supportDRM support Note that it cant detect presence of SPDIF Note that it cant detect presence of SPDIF
on non-compliant ac97 codecs so this is on non-compliant ac97 codecs so this is questionablequestionable
Vastly improved INFVastly improved INF Significant DataRangeIntersection Significant DataRangeIntersection
handler cleanuphandler cleanup Better synchronizationBetter synchronization
MapLock not held during MapLock not held during PortStream-gtGetMappingPortStream-gtGetMapping
AC97 SampleAC97 SampleAdditions and Upgrades (4)Additions and Upgrades (4)
Treat D2 exactly like D3 nowTreat D2 exactly like D3 now Disconnect interrupt anytime not in D0 nowDisconnect interrupt anytime not in D0 now Note bug fix at minwavecpp line 570-72 Note bug fix at minwavecpp line 570-72
(Win9x removeadd doesnrsquot destroy filter (Win9x removeadd doesnrsquot destroy filter descriptor)descriptor)
GetAllocatorFraming FrameSize must be GetAllocatorFraming FrameSize must be sample block alignedsample block aligned
Pins DataRangeSampleSize should be set Pins DataRangeSampleSize should be set to non-zeroto non-zero
Code clean up from Windows 2000Code clean up from Windows 2000
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
New FeaturesNew FeaturesAdded in Service Pack ReleasesAdded in Service Pack Releases
Windows 2000 Service Pack 1Windows 2000 Service Pack 1 No audio changesNo audio changes
Windows 2000 Service Pack 2Windows 2000 Service Pack 2 Non-PCM volume persistence DSound Non-PCM volume persistence DSound
cloning IPortClsVersioncloning IPortClsVersion
No further SP work expected at this timeNo further SP work expected at this time
(Un)Features(Un)FeaturesWhatrsquos not present in Windows XPWhatrsquos not present in Windows XP
HW acceleration of DirectX 8HW acceleration of DirectX 8 Planned for subsequent releasePlanned for subsequent release
USB2 supportUSB2 support Support for tons of 1394 devices (mLan)Support for tons of 1394 devices (mLan) Very low-latency PCM via DSoundwaveVery low-latency PCM via DSoundwave Multi-channel peakmeters SetPan Multi-channel peakmeters SetPan
waveOutSetVolume supermix APIwaveOutSetVolume supermix API Dynamic changes in topology or formatDynamic changes in topology or format Support for custom mixer line controlsSupport for custom mixer line controls
DDK Documentation DDK Documentation Additions and UpdatesAdditions and Updates
(big thanks to Windows (big thanks to Windows DDK doc team particularly DDK doc team particularly
Jerry Van Aken)Jerry Van Aken)
DDK Doc ChangesDDK Doc ChangesNew MaterialNew Material
Hardware EventsHardware Events DirectSound HW Acceleration SliderDirectSound HW Acceleration Slider DirectSound speaker configuration settings DirectSound speaker configuration settings Supporting non-PCM wave formats Supporting non-PCM wave formats
From hwdevaudio White PaperFrom hwdevaudio White Paper
Digital Rights ManagementDigital Rights Management From Windows 2000 DDK addendumFrom Windows 2000 DDK addendum
WDM Audio platform differencesWDM Audio platform differences
DDK Doc ChangesDDK Doc ChangesNew Material (2)New Material (2)
KMixer driver Sample Rate Conversion KMixer driver Sample Rate Conversion and mixing policyand mixing policy
Factors governing Wave-output latencyFactors governing Wave-output latency DirectSound capture effectsDirectSound capture effects
Including AEC AGC NSIncluding AEC AGC NS
Multifunction audio devicesMultifunction audio devices Installing and configuring Audio driversInstalling and configuring Audio drivers Windows 2000 device-interface limitsWindows 2000 device-interface limits
DDK Doc ChangesDDK Doc ChangesNew Material (3)New Material (3)
Extensions to legacy Windows Extensions to legacy Windows Multimedia APIsMultimedia APIs Extended capabilities in WDM Audio driversExtended capabilities in WDM Audio drivers Accessing the preferred Device IDAccessing the preferred Device ID
Media-Class INF ExtensionsMedia-Class INF Extensions AlsoInstall Known FilesAlsoInstall Known Files
Data-intersection handlersData-intersection handlers Power management for Audio driversPower management for Audio drivers Version numbering for Audio driversVersion numbering for Audio drivers
DDK Doc ChangesDDK Doc ChangesExisting information augmentedExisting information augmented
USB AudioMIDI class driver descriptionUSB AudioMIDI class driver description Supporting hardware acceleration of Supporting hardware acceleration of
DirectSound 2-dimensional mixingDirectSound 2-dimensional mixing Kernel Streaming topology to Audio Kernel Streaming topology to Audio
Mixer API translationMixer API translation Clarified use of Clarified use of
PcNewRegistryKey PcNewRegistryKey NewMasterDmaChannel NewMasterDmaChannel PcRegisterPhysicalConnection PcRegisterPhysicalConnection PcAddAdapterDevice and so onPcAddAdapterDevice and so on
DDK Doc ChangesDDK Doc ChangesNew Material Already Added post-BetaNew Material Already Added post-Beta
Global Effects filtersGlobal Effects filters AEC system filterAEC system filter Media-Class INF ExtensionsMedia-Class INF Extensions
KnownRegEntries SetupPreferredAudioDevicesKnownRegEntries SetupPreferredAudioDevices
Control Panel branding by vendorsControl Panel branding by vendors Speaker configuration updateSpeaker configuration update
Elaboration of driver implementation of Elaboration of driver implementation of DSSPEAKER_SURROUND and DSSPEAKER_SURROUND and DSSPEAKER_DIRECTOUT modesDSSPEAKER_DIRECTOUT modes
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-BetaNew Material To Be Added post-Beta
Update information about Microsoftrsquos AEC Update information about Microsoftrsquos AEC implementationimplementation
64-bit driver and API specifics64-bit driver and API specifics Detecting different WDM platformsDetecting different WDM platforms
Including how to detect which QFESP is installedIncluding how to detect which QFESP is installed Differences between WDM audio platformsDifferences between WDM audio platforms
Including a taxonomy of the different QFEsSPsIncluding a taxonomy of the different QFEsSPs Explain MME device limits in Win XPExplain MME device limits in Win XP Chart showing non-PCM support among Chart showing non-PCM support among
different WDM OSesdifferent WDM OSes Additional DRM documentationAdditional DRM documentation
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-Beta (2)New Material To Be Added post-Beta (2)
Using the migration DLL to retain a 9x WDM Using the migration DLL to retain a 9x WDM driver during upgrade to NTOSdriver during upgrade to NTOS
Document how a driver exposes multi-channel Document how a driver exposes multi-channel volumemute nodesvolumemute nodes
New default settings for sliders in Win XPNew default settings for sliders in Win XP DirectSound HW acceleration slider DirectSound HW acceleration slider SRC quality (used for DSound output only)SRC quality (used for DSound output only)
DSound support for mix of 2D3D pinsDSound support for mix of 2D3D pins Overriding the IDmaChannel interfaceOverriding the IDmaChannel interface Info for audio bus driversInfo for audio bus drivers ldquoldquoWhich sample to start withrdquo - Overview of Which sample to start withrdquo - Overview of
the various DDK samplesthe various DDK samples
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
NewNew GFX ndash global effect filterGFX ndash global effect filter MSVAD ndash virtual audio deviceMSVAD ndash virtual audio device
ImprovedImproved AC97smpl ndash Intel ICH2AC97smpl ndash Intel ICH2 DDKSynth ndash kernel software synthDDKSynth ndash kernel software synth DMusUART ndash MPU miniportDMusUART ndash MPU miniport SB16 ndash ISA sample SB16 ndash ISA sample
AC97 SampleAC97 SampleAdditions and UpgradesAdditions and Upgrades
New interactive INF Viewer toolNew interactive INF Viewer tool Contains migration DLL sample codeContains migration DLL sample code
New property page amp CPLNew property page amp CPL Speaker configuration propertySpeaker configuration property
KSPROPERTY_AUDIO_CHANNEL_CONFIGKSPROPERTY_AUDIO_CHANNEL_CONFIG Driver writes to registry upon setDriver writes to registry upon set Driver reads registry value upon getDriver reads registry value upon get
Also at MiniportInit Also at MiniportInit
Other custom properties - Get (and Set)Other custom properties - Get (and Set)
AC97 SampleAC97 SampleAdditions and Upgrades (2)Additions and Upgrades (2)
WAVEFORMATPCMEX support for WAVEFORMATPCMEX support for multi-channel streamsmulti-channel streams
Support for Intel 820 (multi-channel ac97 codecs)Support for Intel 820 (multi-channel ac97 codecs) Multi-channel volume workarounds for past Multi-channel volume workarounds for past
versions of Windowsversions of Windows How to add additional nodesconnections for surround How to add additional nodesconnections for surround
and centerLFEand centerLFE Send sample rate change requests there etcSend sample rate change requests there etc
How to add virtual master volume (mono) if 4 or 6 How to add virtual master volume (mono) if 4 or 6 channel presentchannel present
How to change data range depending on number of ac97 How to change data range depending on number of ac97 codecs detectedcodecs detected
Multi-channel mute and volume handlersMulti-channel mute and volume handlers
AC97 SampleAC97 SampleAdditions and Upgrades (3)Additions and Upgrades (3)
DRM supportDRM support Note that it cant detect presence of SPDIF Note that it cant detect presence of SPDIF
on non-compliant ac97 codecs so this is on non-compliant ac97 codecs so this is questionablequestionable
Vastly improved INFVastly improved INF Significant DataRangeIntersection Significant DataRangeIntersection
handler cleanuphandler cleanup Better synchronizationBetter synchronization
MapLock not held during MapLock not held during PortStream-gtGetMappingPortStream-gtGetMapping
AC97 SampleAC97 SampleAdditions and Upgrades (4)Additions and Upgrades (4)
Treat D2 exactly like D3 nowTreat D2 exactly like D3 now Disconnect interrupt anytime not in D0 nowDisconnect interrupt anytime not in D0 now Note bug fix at minwavecpp line 570-72 Note bug fix at minwavecpp line 570-72
(Win9x removeadd doesnrsquot destroy filter (Win9x removeadd doesnrsquot destroy filter descriptor)descriptor)
GetAllocatorFraming FrameSize must be GetAllocatorFraming FrameSize must be sample block alignedsample block aligned
Pins DataRangeSampleSize should be set Pins DataRangeSampleSize should be set to non-zeroto non-zero
Code clean up from Windows 2000Code clean up from Windows 2000
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
(Un)Features(Un)FeaturesWhatrsquos not present in Windows XPWhatrsquos not present in Windows XP
HW acceleration of DirectX 8HW acceleration of DirectX 8 Planned for subsequent releasePlanned for subsequent release
USB2 supportUSB2 support Support for tons of 1394 devices (mLan)Support for tons of 1394 devices (mLan) Very low-latency PCM via DSoundwaveVery low-latency PCM via DSoundwave Multi-channel peakmeters SetPan Multi-channel peakmeters SetPan
waveOutSetVolume supermix APIwaveOutSetVolume supermix API Dynamic changes in topology or formatDynamic changes in topology or format Support for custom mixer line controlsSupport for custom mixer line controls
DDK Documentation DDK Documentation Additions and UpdatesAdditions and Updates
(big thanks to Windows (big thanks to Windows DDK doc team particularly DDK doc team particularly
Jerry Van Aken)Jerry Van Aken)
DDK Doc ChangesDDK Doc ChangesNew MaterialNew Material
Hardware EventsHardware Events DirectSound HW Acceleration SliderDirectSound HW Acceleration Slider DirectSound speaker configuration settings DirectSound speaker configuration settings Supporting non-PCM wave formats Supporting non-PCM wave formats
From hwdevaudio White PaperFrom hwdevaudio White Paper
Digital Rights ManagementDigital Rights Management From Windows 2000 DDK addendumFrom Windows 2000 DDK addendum
WDM Audio platform differencesWDM Audio platform differences
DDK Doc ChangesDDK Doc ChangesNew Material (2)New Material (2)
KMixer driver Sample Rate Conversion KMixer driver Sample Rate Conversion and mixing policyand mixing policy
Factors governing Wave-output latencyFactors governing Wave-output latency DirectSound capture effectsDirectSound capture effects
Including AEC AGC NSIncluding AEC AGC NS
Multifunction audio devicesMultifunction audio devices Installing and configuring Audio driversInstalling and configuring Audio drivers Windows 2000 device-interface limitsWindows 2000 device-interface limits
DDK Doc ChangesDDK Doc ChangesNew Material (3)New Material (3)
Extensions to legacy Windows Extensions to legacy Windows Multimedia APIsMultimedia APIs Extended capabilities in WDM Audio driversExtended capabilities in WDM Audio drivers Accessing the preferred Device IDAccessing the preferred Device ID
Media-Class INF ExtensionsMedia-Class INF Extensions AlsoInstall Known FilesAlsoInstall Known Files
Data-intersection handlersData-intersection handlers Power management for Audio driversPower management for Audio drivers Version numbering for Audio driversVersion numbering for Audio drivers
DDK Doc ChangesDDK Doc ChangesExisting information augmentedExisting information augmented
USB AudioMIDI class driver descriptionUSB AudioMIDI class driver description Supporting hardware acceleration of Supporting hardware acceleration of
DirectSound 2-dimensional mixingDirectSound 2-dimensional mixing Kernel Streaming topology to Audio Kernel Streaming topology to Audio
Mixer API translationMixer API translation Clarified use of Clarified use of
PcNewRegistryKey PcNewRegistryKey NewMasterDmaChannel NewMasterDmaChannel PcRegisterPhysicalConnection PcRegisterPhysicalConnection PcAddAdapterDevice and so onPcAddAdapterDevice and so on
DDK Doc ChangesDDK Doc ChangesNew Material Already Added post-BetaNew Material Already Added post-Beta
Global Effects filtersGlobal Effects filters AEC system filterAEC system filter Media-Class INF ExtensionsMedia-Class INF Extensions
KnownRegEntries SetupPreferredAudioDevicesKnownRegEntries SetupPreferredAudioDevices
Control Panel branding by vendorsControl Panel branding by vendors Speaker configuration updateSpeaker configuration update
Elaboration of driver implementation of Elaboration of driver implementation of DSSPEAKER_SURROUND and DSSPEAKER_SURROUND and DSSPEAKER_DIRECTOUT modesDSSPEAKER_DIRECTOUT modes
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-BetaNew Material To Be Added post-Beta
Update information about Microsoftrsquos AEC Update information about Microsoftrsquos AEC implementationimplementation
64-bit driver and API specifics64-bit driver and API specifics Detecting different WDM platformsDetecting different WDM platforms
Including how to detect which QFESP is installedIncluding how to detect which QFESP is installed Differences between WDM audio platformsDifferences between WDM audio platforms
Including a taxonomy of the different QFEsSPsIncluding a taxonomy of the different QFEsSPs Explain MME device limits in Win XPExplain MME device limits in Win XP Chart showing non-PCM support among Chart showing non-PCM support among
different WDM OSesdifferent WDM OSes Additional DRM documentationAdditional DRM documentation
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-Beta (2)New Material To Be Added post-Beta (2)
Using the migration DLL to retain a 9x WDM Using the migration DLL to retain a 9x WDM driver during upgrade to NTOSdriver during upgrade to NTOS
Document how a driver exposes multi-channel Document how a driver exposes multi-channel volumemute nodesvolumemute nodes
New default settings for sliders in Win XPNew default settings for sliders in Win XP DirectSound HW acceleration slider DirectSound HW acceleration slider SRC quality (used for DSound output only)SRC quality (used for DSound output only)
DSound support for mix of 2D3D pinsDSound support for mix of 2D3D pins Overriding the IDmaChannel interfaceOverriding the IDmaChannel interface Info for audio bus driversInfo for audio bus drivers ldquoldquoWhich sample to start withrdquo - Overview of Which sample to start withrdquo - Overview of
the various DDK samplesthe various DDK samples
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
NewNew GFX ndash global effect filterGFX ndash global effect filter MSVAD ndash virtual audio deviceMSVAD ndash virtual audio device
ImprovedImproved AC97smpl ndash Intel ICH2AC97smpl ndash Intel ICH2 DDKSynth ndash kernel software synthDDKSynth ndash kernel software synth DMusUART ndash MPU miniportDMusUART ndash MPU miniport SB16 ndash ISA sample SB16 ndash ISA sample
AC97 SampleAC97 SampleAdditions and UpgradesAdditions and Upgrades
New interactive INF Viewer toolNew interactive INF Viewer tool Contains migration DLL sample codeContains migration DLL sample code
New property page amp CPLNew property page amp CPL Speaker configuration propertySpeaker configuration property
KSPROPERTY_AUDIO_CHANNEL_CONFIGKSPROPERTY_AUDIO_CHANNEL_CONFIG Driver writes to registry upon setDriver writes to registry upon set Driver reads registry value upon getDriver reads registry value upon get
Also at MiniportInit Also at MiniportInit
Other custom properties - Get (and Set)Other custom properties - Get (and Set)
AC97 SampleAC97 SampleAdditions and Upgrades (2)Additions and Upgrades (2)
WAVEFORMATPCMEX support for WAVEFORMATPCMEX support for multi-channel streamsmulti-channel streams
Support for Intel 820 (multi-channel ac97 codecs)Support for Intel 820 (multi-channel ac97 codecs) Multi-channel volume workarounds for past Multi-channel volume workarounds for past
versions of Windowsversions of Windows How to add additional nodesconnections for surround How to add additional nodesconnections for surround
and centerLFEand centerLFE Send sample rate change requests there etcSend sample rate change requests there etc
How to add virtual master volume (mono) if 4 or 6 How to add virtual master volume (mono) if 4 or 6 channel presentchannel present
How to change data range depending on number of ac97 How to change data range depending on number of ac97 codecs detectedcodecs detected
Multi-channel mute and volume handlersMulti-channel mute and volume handlers
AC97 SampleAC97 SampleAdditions and Upgrades (3)Additions and Upgrades (3)
DRM supportDRM support Note that it cant detect presence of SPDIF Note that it cant detect presence of SPDIF
on non-compliant ac97 codecs so this is on non-compliant ac97 codecs so this is questionablequestionable
Vastly improved INFVastly improved INF Significant DataRangeIntersection Significant DataRangeIntersection
handler cleanuphandler cleanup Better synchronizationBetter synchronization
MapLock not held during MapLock not held during PortStream-gtGetMappingPortStream-gtGetMapping
AC97 SampleAC97 SampleAdditions and Upgrades (4)Additions and Upgrades (4)
Treat D2 exactly like D3 nowTreat D2 exactly like D3 now Disconnect interrupt anytime not in D0 nowDisconnect interrupt anytime not in D0 now Note bug fix at minwavecpp line 570-72 Note bug fix at minwavecpp line 570-72
(Win9x removeadd doesnrsquot destroy filter (Win9x removeadd doesnrsquot destroy filter descriptor)descriptor)
GetAllocatorFraming FrameSize must be GetAllocatorFraming FrameSize must be sample block alignedsample block aligned
Pins DataRangeSampleSize should be set Pins DataRangeSampleSize should be set to non-zeroto non-zero
Code clean up from Windows 2000Code clean up from Windows 2000
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
DDK Documentation DDK Documentation Additions and UpdatesAdditions and Updates
(big thanks to Windows (big thanks to Windows DDK doc team particularly DDK doc team particularly
Jerry Van Aken)Jerry Van Aken)
DDK Doc ChangesDDK Doc ChangesNew MaterialNew Material
Hardware EventsHardware Events DirectSound HW Acceleration SliderDirectSound HW Acceleration Slider DirectSound speaker configuration settings DirectSound speaker configuration settings Supporting non-PCM wave formats Supporting non-PCM wave formats
From hwdevaudio White PaperFrom hwdevaudio White Paper
Digital Rights ManagementDigital Rights Management From Windows 2000 DDK addendumFrom Windows 2000 DDK addendum
WDM Audio platform differencesWDM Audio platform differences
DDK Doc ChangesDDK Doc ChangesNew Material (2)New Material (2)
KMixer driver Sample Rate Conversion KMixer driver Sample Rate Conversion and mixing policyand mixing policy
Factors governing Wave-output latencyFactors governing Wave-output latency DirectSound capture effectsDirectSound capture effects
Including AEC AGC NSIncluding AEC AGC NS
Multifunction audio devicesMultifunction audio devices Installing and configuring Audio driversInstalling and configuring Audio drivers Windows 2000 device-interface limitsWindows 2000 device-interface limits
DDK Doc ChangesDDK Doc ChangesNew Material (3)New Material (3)
Extensions to legacy Windows Extensions to legacy Windows Multimedia APIsMultimedia APIs Extended capabilities in WDM Audio driversExtended capabilities in WDM Audio drivers Accessing the preferred Device IDAccessing the preferred Device ID
Media-Class INF ExtensionsMedia-Class INF Extensions AlsoInstall Known FilesAlsoInstall Known Files
Data-intersection handlersData-intersection handlers Power management for Audio driversPower management for Audio drivers Version numbering for Audio driversVersion numbering for Audio drivers
DDK Doc ChangesDDK Doc ChangesExisting information augmentedExisting information augmented
USB AudioMIDI class driver descriptionUSB AudioMIDI class driver description Supporting hardware acceleration of Supporting hardware acceleration of
DirectSound 2-dimensional mixingDirectSound 2-dimensional mixing Kernel Streaming topology to Audio Kernel Streaming topology to Audio
Mixer API translationMixer API translation Clarified use of Clarified use of
PcNewRegistryKey PcNewRegistryKey NewMasterDmaChannel NewMasterDmaChannel PcRegisterPhysicalConnection PcRegisterPhysicalConnection PcAddAdapterDevice and so onPcAddAdapterDevice and so on
DDK Doc ChangesDDK Doc ChangesNew Material Already Added post-BetaNew Material Already Added post-Beta
Global Effects filtersGlobal Effects filters AEC system filterAEC system filter Media-Class INF ExtensionsMedia-Class INF Extensions
KnownRegEntries SetupPreferredAudioDevicesKnownRegEntries SetupPreferredAudioDevices
Control Panel branding by vendorsControl Panel branding by vendors Speaker configuration updateSpeaker configuration update
Elaboration of driver implementation of Elaboration of driver implementation of DSSPEAKER_SURROUND and DSSPEAKER_SURROUND and DSSPEAKER_DIRECTOUT modesDSSPEAKER_DIRECTOUT modes
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-BetaNew Material To Be Added post-Beta
Update information about Microsoftrsquos AEC Update information about Microsoftrsquos AEC implementationimplementation
64-bit driver and API specifics64-bit driver and API specifics Detecting different WDM platformsDetecting different WDM platforms
Including how to detect which QFESP is installedIncluding how to detect which QFESP is installed Differences between WDM audio platformsDifferences between WDM audio platforms
Including a taxonomy of the different QFEsSPsIncluding a taxonomy of the different QFEsSPs Explain MME device limits in Win XPExplain MME device limits in Win XP Chart showing non-PCM support among Chart showing non-PCM support among
different WDM OSesdifferent WDM OSes Additional DRM documentationAdditional DRM documentation
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-Beta (2)New Material To Be Added post-Beta (2)
Using the migration DLL to retain a 9x WDM Using the migration DLL to retain a 9x WDM driver during upgrade to NTOSdriver during upgrade to NTOS
Document how a driver exposes multi-channel Document how a driver exposes multi-channel volumemute nodesvolumemute nodes
New default settings for sliders in Win XPNew default settings for sliders in Win XP DirectSound HW acceleration slider DirectSound HW acceleration slider SRC quality (used for DSound output only)SRC quality (used for DSound output only)
DSound support for mix of 2D3D pinsDSound support for mix of 2D3D pins Overriding the IDmaChannel interfaceOverriding the IDmaChannel interface Info for audio bus driversInfo for audio bus drivers ldquoldquoWhich sample to start withrdquo - Overview of Which sample to start withrdquo - Overview of
the various DDK samplesthe various DDK samples
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
NewNew GFX ndash global effect filterGFX ndash global effect filter MSVAD ndash virtual audio deviceMSVAD ndash virtual audio device
ImprovedImproved AC97smpl ndash Intel ICH2AC97smpl ndash Intel ICH2 DDKSynth ndash kernel software synthDDKSynth ndash kernel software synth DMusUART ndash MPU miniportDMusUART ndash MPU miniport SB16 ndash ISA sample SB16 ndash ISA sample
AC97 SampleAC97 SampleAdditions and UpgradesAdditions and Upgrades
New interactive INF Viewer toolNew interactive INF Viewer tool Contains migration DLL sample codeContains migration DLL sample code
New property page amp CPLNew property page amp CPL Speaker configuration propertySpeaker configuration property
KSPROPERTY_AUDIO_CHANNEL_CONFIGKSPROPERTY_AUDIO_CHANNEL_CONFIG Driver writes to registry upon setDriver writes to registry upon set Driver reads registry value upon getDriver reads registry value upon get
Also at MiniportInit Also at MiniportInit
Other custom properties - Get (and Set)Other custom properties - Get (and Set)
AC97 SampleAC97 SampleAdditions and Upgrades (2)Additions and Upgrades (2)
WAVEFORMATPCMEX support for WAVEFORMATPCMEX support for multi-channel streamsmulti-channel streams
Support for Intel 820 (multi-channel ac97 codecs)Support for Intel 820 (multi-channel ac97 codecs) Multi-channel volume workarounds for past Multi-channel volume workarounds for past
versions of Windowsversions of Windows How to add additional nodesconnections for surround How to add additional nodesconnections for surround
and centerLFEand centerLFE Send sample rate change requests there etcSend sample rate change requests there etc
How to add virtual master volume (mono) if 4 or 6 How to add virtual master volume (mono) if 4 or 6 channel presentchannel present
How to change data range depending on number of ac97 How to change data range depending on number of ac97 codecs detectedcodecs detected
Multi-channel mute and volume handlersMulti-channel mute and volume handlers
AC97 SampleAC97 SampleAdditions and Upgrades (3)Additions and Upgrades (3)
DRM supportDRM support Note that it cant detect presence of SPDIF Note that it cant detect presence of SPDIF
on non-compliant ac97 codecs so this is on non-compliant ac97 codecs so this is questionablequestionable
Vastly improved INFVastly improved INF Significant DataRangeIntersection Significant DataRangeIntersection
handler cleanuphandler cleanup Better synchronizationBetter synchronization
MapLock not held during MapLock not held during PortStream-gtGetMappingPortStream-gtGetMapping
AC97 SampleAC97 SampleAdditions and Upgrades (4)Additions and Upgrades (4)
Treat D2 exactly like D3 nowTreat D2 exactly like D3 now Disconnect interrupt anytime not in D0 nowDisconnect interrupt anytime not in D0 now Note bug fix at minwavecpp line 570-72 Note bug fix at minwavecpp line 570-72
(Win9x removeadd doesnrsquot destroy filter (Win9x removeadd doesnrsquot destroy filter descriptor)descriptor)
GetAllocatorFraming FrameSize must be GetAllocatorFraming FrameSize must be sample block alignedsample block aligned
Pins DataRangeSampleSize should be set Pins DataRangeSampleSize should be set to non-zeroto non-zero
Code clean up from Windows 2000Code clean up from Windows 2000
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
DDK Doc ChangesDDK Doc ChangesNew MaterialNew Material
Hardware EventsHardware Events DirectSound HW Acceleration SliderDirectSound HW Acceleration Slider DirectSound speaker configuration settings DirectSound speaker configuration settings Supporting non-PCM wave formats Supporting non-PCM wave formats
From hwdevaudio White PaperFrom hwdevaudio White Paper
Digital Rights ManagementDigital Rights Management From Windows 2000 DDK addendumFrom Windows 2000 DDK addendum
WDM Audio platform differencesWDM Audio platform differences
DDK Doc ChangesDDK Doc ChangesNew Material (2)New Material (2)
KMixer driver Sample Rate Conversion KMixer driver Sample Rate Conversion and mixing policyand mixing policy
Factors governing Wave-output latencyFactors governing Wave-output latency DirectSound capture effectsDirectSound capture effects
Including AEC AGC NSIncluding AEC AGC NS
Multifunction audio devicesMultifunction audio devices Installing and configuring Audio driversInstalling and configuring Audio drivers Windows 2000 device-interface limitsWindows 2000 device-interface limits
DDK Doc ChangesDDK Doc ChangesNew Material (3)New Material (3)
Extensions to legacy Windows Extensions to legacy Windows Multimedia APIsMultimedia APIs Extended capabilities in WDM Audio driversExtended capabilities in WDM Audio drivers Accessing the preferred Device IDAccessing the preferred Device ID
Media-Class INF ExtensionsMedia-Class INF Extensions AlsoInstall Known FilesAlsoInstall Known Files
Data-intersection handlersData-intersection handlers Power management for Audio driversPower management for Audio drivers Version numbering for Audio driversVersion numbering for Audio drivers
DDK Doc ChangesDDK Doc ChangesExisting information augmentedExisting information augmented
USB AudioMIDI class driver descriptionUSB AudioMIDI class driver description Supporting hardware acceleration of Supporting hardware acceleration of
DirectSound 2-dimensional mixingDirectSound 2-dimensional mixing Kernel Streaming topology to Audio Kernel Streaming topology to Audio
Mixer API translationMixer API translation Clarified use of Clarified use of
PcNewRegistryKey PcNewRegistryKey NewMasterDmaChannel NewMasterDmaChannel PcRegisterPhysicalConnection PcRegisterPhysicalConnection PcAddAdapterDevice and so onPcAddAdapterDevice and so on
DDK Doc ChangesDDK Doc ChangesNew Material Already Added post-BetaNew Material Already Added post-Beta
Global Effects filtersGlobal Effects filters AEC system filterAEC system filter Media-Class INF ExtensionsMedia-Class INF Extensions
KnownRegEntries SetupPreferredAudioDevicesKnownRegEntries SetupPreferredAudioDevices
Control Panel branding by vendorsControl Panel branding by vendors Speaker configuration updateSpeaker configuration update
Elaboration of driver implementation of Elaboration of driver implementation of DSSPEAKER_SURROUND and DSSPEAKER_SURROUND and DSSPEAKER_DIRECTOUT modesDSSPEAKER_DIRECTOUT modes
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-BetaNew Material To Be Added post-Beta
Update information about Microsoftrsquos AEC Update information about Microsoftrsquos AEC implementationimplementation
64-bit driver and API specifics64-bit driver and API specifics Detecting different WDM platformsDetecting different WDM platforms
Including how to detect which QFESP is installedIncluding how to detect which QFESP is installed Differences between WDM audio platformsDifferences between WDM audio platforms
Including a taxonomy of the different QFEsSPsIncluding a taxonomy of the different QFEsSPs Explain MME device limits in Win XPExplain MME device limits in Win XP Chart showing non-PCM support among Chart showing non-PCM support among
different WDM OSesdifferent WDM OSes Additional DRM documentationAdditional DRM documentation
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-Beta (2)New Material To Be Added post-Beta (2)
Using the migration DLL to retain a 9x WDM Using the migration DLL to retain a 9x WDM driver during upgrade to NTOSdriver during upgrade to NTOS
Document how a driver exposes multi-channel Document how a driver exposes multi-channel volumemute nodesvolumemute nodes
New default settings for sliders in Win XPNew default settings for sliders in Win XP DirectSound HW acceleration slider DirectSound HW acceleration slider SRC quality (used for DSound output only)SRC quality (used for DSound output only)
DSound support for mix of 2D3D pinsDSound support for mix of 2D3D pins Overriding the IDmaChannel interfaceOverriding the IDmaChannel interface Info for audio bus driversInfo for audio bus drivers ldquoldquoWhich sample to start withrdquo - Overview of Which sample to start withrdquo - Overview of
the various DDK samplesthe various DDK samples
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
NewNew GFX ndash global effect filterGFX ndash global effect filter MSVAD ndash virtual audio deviceMSVAD ndash virtual audio device
ImprovedImproved AC97smpl ndash Intel ICH2AC97smpl ndash Intel ICH2 DDKSynth ndash kernel software synthDDKSynth ndash kernel software synth DMusUART ndash MPU miniportDMusUART ndash MPU miniport SB16 ndash ISA sample SB16 ndash ISA sample
AC97 SampleAC97 SampleAdditions and UpgradesAdditions and Upgrades
New interactive INF Viewer toolNew interactive INF Viewer tool Contains migration DLL sample codeContains migration DLL sample code
New property page amp CPLNew property page amp CPL Speaker configuration propertySpeaker configuration property
KSPROPERTY_AUDIO_CHANNEL_CONFIGKSPROPERTY_AUDIO_CHANNEL_CONFIG Driver writes to registry upon setDriver writes to registry upon set Driver reads registry value upon getDriver reads registry value upon get
Also at MiniportInit Also at MiniportInit
Other custom properties - Get (and Set)Other custom properties - Get (and Set)
AC97 SampleAC97 SampleAdditions and Upgrades (2)Additions and Upgrades (2)
WAVEFORMATPCMEX support for WAVEFORMATPCMEX support for multi-channel streamsmulti-channel streams
Support for Intel 820 (multi-channel ac97 codecs)Support for Intel 820 (multi-channel ac97 codecs) Multi-channel volume workarounds for past Multi-channel volume workarounds for past
versions of Windowsversions of Windows How to add additional nodesconnections for surround How to add additional nodesconnections for surround
and centerLFEand centerLFE Send sample rate change requests there etcSend sample rate change requests there etc
How to add virtual master volume (mono) if 4 or 6 How to add virtual master volume (mono) if 4 or 6 channel presentchannel present
How to change data range depending on number of ac97 How to change data range depending on number of ac97 codecs detectedcodecs detected
Multi-channel mute and volume handlersMulti-channel mute and volume handlers
AC97 SampleAC97 SampleAdditions and Upgrades (3)Additions and Upgrades (3)
DRM supportDRM support Note that it cant detect presence of SPDIF Note that it cant detect presence of SPDIF
on non-compliant ac97 codecs so this is on non-compliant ac97 codecs so this is questionablequestionable
Vastly improved INFVastly improved INF Significant DataRangeIntersection Significant DataRangeIntersection
handler cleanuphandler cleanup Better synchronizationBetter synchronization
MapLock not held during MapLock not held during PortStream-gtGetMappingPortStream-gtGetMapping
AC97 SampleAC97 SampleAdditions and Upgrades (4)Additions and Upgrades (4)
Treat D2 exactly like D3 nowTreat D2 exactly like D3 now Disconnect interrupt anytime not in D0 nowDisconnect interrupt anytime not in D0 now Note bug fix at minwavecpp line 570-72 Note bug fix at minwavecpp line 570-72
(Win9x removeadd doesnrsquot destroy filter (Win9x removeadd doesnrsquot destroy filter descriptor)descriptor)
GetAllocatorFraming FrameSize must be GetAllocatorFraming FrameSize must be sample block alignedsample block aligned
Pins DataRangeSampleSize should be set Pins DataRangeSampleSize should be set to non-zeroto non-zero
Code clean up from Windows 2000Code clean up from Windows 2000
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
DDK Doc ChangesDDK Doc ChangesNew Material (2)New Material (2)
KMixer driver Sample Rate Conversion KMixer driver Sample Rate Conversion and mixing policyand mixing policy
Factors governing Wave-output latencyFactors governing Wave-output latency DirectSound capture effectsDirectSound capture effects
Including AEC AGC NSIncluding AEC AGC NS
Multifunction audio devicesMultifunction audio devices Installing and configuring Audio driversInstalling and configuring Audio drivers Windows 2000 device-interface limitsWindows 2000 device-interface limits
DDK Doc ChangesDDK Doc ChangesNew Material (3)New Material (3)
Extensions to legacy Windows Extensions to legacy Windows Multimedia APIsMultimedia APIs Extended capabilities in WDM Audio driversExtended capabilities in WDM Audio drivers Accessing the preferred Device IDAccessing the preferred Device ID
Media-Class INF ExtensionsMedia-Class INF Extensions AlsoInstall Known FilesAlsoInstall Known Files
Data-intersection handlersData-intersection handlers Power management for Audio driversPower management for Audio drivers Version numbering for Audio driversVersion numbering for Audio drivers
DDK Doc ChangesDDK Doc ChangesExisting information augmentedExisting information augmented
USB AudioMIDI class driver descriptionUSB AudioMIDI class driver description Supporting hardware acceleration of Supporting hardware acceleration of
DirectSound 2-dimensional mixingDirectSound 2-dimensional mixing Kernel Streaming topology to Audio Kernel Streaming topology to Audio
Mixer API translationMixer API translation Clarified use of Clarified use of
PcNewRegistryKey PcNewRegistryKey NewMasterDmaChannel NewMasterDmaChannel PcRegisterPhysicalConnection PcRegisterPhysicalConnection PcAddAdapterDevice and so onPcAddAdapterDevice and so on
DDK Doc ChangesDDK Doc ChangesNew Material Already Added post-BetaNew Material Already Added post-Beta
Global Effects filtersGlobal Effects filters AEC system filterAEC system filter Media-Class INF ExtensionsMedia-Class INF Extensions
KnownRegEntries SetupPreferredAudioDevicesKnownRegEntries SetupPreferredAudioDevices
Control Panel branding by vendorsControl Panel branding by vendors Speaker configuration updateSpeaker configuration update
Elaboration of driver implementation of Elaboration of driver implementation of DSSPEAKER_SURROUND and DSSPEAKER_SURROUND and DSSPEAKER_DIRECTOUT modesDSSPEAKER_DIRECTOUT modes
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-BetaNew Material To Be Added post-Beta
Update information about Microsoftrsquos AEC Update information about Microsoftrsquos AEC implementationimplementation
64-bit driver and API specifics64-bit driver and API specifics Detecting different WDM platformsDetecting different WDM platforms
Including how to detect which QFESP is installedIncluding how to detect which QFESP is installed Differences between WDM audio platformsDifferences between WDM audio platforms
Including a taxonomy of the different QFEsSPsIncluding a taxonomy of the different QFEsSPs Explain MME device limits in Win XPExplain MME device limits in Win XP Chart showing non-PCM support among Chart showing non-PCM support among
different WDM OSesdifferent WDM OSes Additional DRM documentationAdditional DRM documentation
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-Beta (2)New Material To Be Added post-Beta (2)
Using the migration DLL to retain a 9x WDM Using the migration DLL to retain a 9x WDM driver during upgrade to NTOSdriver during upgrade to NTOS
Document how a driver exposes multi-channel Document how a driver exposes multi-channel volumemute nodesvolumemute nodes
New default settings for sliders in Win XPNew default settings for sliders in Win XP DirectSound HW acceleration slider DirectSound HW acceleration slider SRC quality (used for DSound output only)SRC quality (used for DSound output only)
DSound support for mix of 2D3D pinsDSound support for mix of 2D3D pins Overriding the IDmaChannel interfaceOverriding the IDmaChannel interface Info for audio bus driversInfo for audio bus drivers ldquoldquoWhich sample to start withrdquo - Overview of Which sample to start withrdquo - Overview of
the various DDK samplesthe various DDK samples
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
NewNew GFX ndash global effect filterGFX ndash global effect filter MSVAD ndash virtual audio deviceMSVAD ndash virtual audio device
ImprovedImproved AC97smpl ndash Intel ICH2AC97smpl ndash Intel ICH2 DDKSynth ndash kernel software synthDDKSynth ndash kernel software synth DMusUART ndash MPU miniportDMusUART ndash MPU miniport SB16 ndash ISA sample SB16 ndash ISA sample
AC97 SampleAC97 SampleAdditions and UpgradesAdditions and Upgrades
New interactive INF Viewer toolNew interactive INF Viewer tool Contains migration DLL sample codeContains migration DLL sample code
New property page amp CPLNew property page amp CPL Speaker configuration propertySpeaker configuration property
KSPROPERTY_AUDIO_CHANNEL_CONFIGKSPROPERTY_AUDIO_CHANNEL_CONFIG Driver writes to registry upon setDriver writes to registry upon set Driver reads registry value upon getDriver reads registry value upon get
Also at MiniportInit Also at MiniportInit
Other custom properties - Get (and Set)Other custom properties - Get (and Set)
AC97 SampleAC97 SampleAdditions and Upgrades (2)Additions and Upgrades (2)
WAVEFORMATPCMEX support for WAVEFORMATPCMEX support for multi-channel streamsmulti-channel streams
Support for Intel 820 (multi-channel ac97 codecs)Support for Intel 820 (multi-channel ac97 codecs) Multi-channel volume workarounds for past Multi-channel volume workarounds for past
versions of Windowsversions of Windows How to add additional nodesconnections for surround How to add additional nodesconnections for surround
and centerLFEand centerLFE Send sample rate change requests there etcSend sample rate change requests there etc
How to add virtual master volume (mono) if 4 or 6 How to add virtual master volume (mono) if 4 or 6 channel presentchannel present
How to change data range depending on number of ac97 How to change data range depending on number of ac97 codecs detectedcodecs detected
Multi-channel mute and volume handlersMulti-channel mute and volume handlers
AC97 SampleAC97 SampleAdditions and Upgrades (3)Additions and Upgrades (3)
DRM supportDRM support Note that it cant detect presence of SPDIF Note that it cant detect presence of SPDIF
on non-compliant ac97 codecs so this is on non-compliant ac97 codecs so this is questionablequestionable
Vastly improved INFVastly improved INF Significant DataRangeIntersection Significant DataRangeIntersection
handler cleanuphandler cleanup Better synchronizationBetter synchronization
MapLock not held during MapLock not held during PortStream-gtGetMappingPortStream-gtGetMapping
AC97 SampleAC97 SampleAdditions and Upgrades (4)Additions and Upgrades (4)
Treat D2 exactly like D3 nowTreat D2 exactly like D3 now Disconnect interrupt anytime not in D0 nowDisconnect interrupt anytime not in D0 now Note bug fix at minwavecpp line 570-72 Note bug fix at minwavecpp line 570-72
(Win9x removeadd doesnrsquot destroy filter (Win9x removeadd doesnrsquot destroy filter descriptor)descriptor)
GetAllocatorFraming FrameSize must be GetAllocatorFraming FrameSize must be sample block alignedsample block aligned
Pins DataRangeSampleSize should be set Pins DataRangeSampleSize should be set to non-zeroto non-zero
Code clean up from Windows 2000Code clean up from Windows 2000
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
DDK Doc ChangesDDK Doc ChangesNew Material (3)New Material (3)
Extensions to legacy Windows Extensions to legacy Windows Multimedia APIsMultimedia APIs Extended capabilities in WDM Audio driversExtended capabilities in WDM Audio drivers Accessing the preferred Device IDAccessing the preferred Device ID
Media-Class INF ExtensionsMedia-Class INF Extensions AlsoInstall Known FilesAlsoInstall Known Files
Data-intersection handlersData-intersection handlers Power management for Audio driversPower management for Audio drivers Version numbering for Audio driversVersion numbering for Audio drivers
DDK Doc ChangesDDK Doc ChangesExisting information augmentedExisting information augmented
USB AudioMIDI class driver descriptionUSB AudioMIDI class driver description Supporting hardware acceleration of Supporting hardware acceleration of
DirectSound 2-dimensional mixingDirectSound 2-dimensional mixing Kernel Streaming topology to Audio Kernel Streaming topology to Audio
Mixer API translationMixer API translation Clarified use of Clarified use of
PcNewRegistryKey PcNewRegistryKey NewMasterDmaChannel NewMasterDmaChannel PcRegisterPhysicalConnection PcRegisterPhysicalConnection PcAddAdapterDevice and so onPcAddAdapterDevice and so on
DDK Doc ChangesDDK Doc ChangesNew Material Already Added post-BetaNew Material Already Added post-Beta
Global Effects filtersGlobal Effects filters AEC system filterAEC system filter Media-Class INF ExtensionsMedia-Class INF Extensions
KnownRegEntries SetupPreferredAudioDevicesKnownRegEntries SetupPreferredAudioDevices
Control Panel branding by vendorsControl Panel branding by vendors Speaker configuration updateSpeaker configuration update
Elaboration of driver implementation of Elaboration of driver implementation of DSSPEAKER_SURROUND and DSSPEAKER_SURROUND and DSSPEAKER_DIRECTOUT modesDSSPEAKER_DIRECTOUT modes
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-BetaNew Material To Be Added post-Beta
Update information about Microsoftrsquos AEC Update information about Microsoftrsquos AEC implementationimplementation
64-bit driver and API specifics64-bit driver and API specifics Detecting different WDM platformsDetecting different WDM platforms
Including how to detect which QFESP is installedIncluding how to detect which QFESP is installed Differences between WDM audio platformsDifferences between WDM audio platforms
Including a taxonomy of the different QFEsSPsIncluding a taxonomy of the different QFEsSPs Explain MME device limits in Win XPExplain MME device limits in Win XP Chart showing non-PCM support among Chart showing non-PCM support among
different WDM OSesdifferent WDM OSes Additional DRM documentationAdditional DRM documentation
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-Beta (2)New Material To Be Added post-Beta (2)
Using the migration DLL to retain a 9x WDM Using the migration DLL to retain a 9x WDM driver during upgrade to NTOSdriver during upgrade to NTOS
Document how a driver exposes multi-channel Document how a driver exposes multi-channel volumemute nodesvolumemute nodes
New default settings for sliders in Win XPNew default settings for sliders in Win XP DirectSound HW acceleration slider DirectSound HW acceleration slider SRC quality (used for DSound output only)SRC quality (used for DSound output only)
DSound support for mix of 2D3D pinsDSound support for mix of 2D3D pins Overriding the IDmaChannel interfaceOverriding the IDmaChannel interface Info for audio bus driversInfo for audio bus drivers ldquoldquoWhich sample to start withrdquo - Overview of Which sample to start withrdquo - Overview of
the various DDK samplesthe various DDK samples
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
NewNew GFX ndash global effect filterGFX ndash global effect filter MSVAD ndash virtual audio deviceMSVAD ndash virtual audio device
ImprovedImproved AC97smpl ndash Intel ICH2AC97smpl ndash Intel ICH2 DDKSynth ndash kernel software synthDDKSynth ndash kernel software synth DMusUART ndash MPU miniportDMusUART ndash MPU miniport SB16 ndash ISA sample SB16 ndash ISA sample
AC97 SampleAC97 SampleAdditions and UpgradesAdditions and Upgrades
New interactive INF Viewer toolNew interactive INF Viewer tool Contains migration DLL sample codeContains migration DLL sample code
New property page amp CPLNew property page amp CPL Speaker configuration propertySpeaker configuration property
KSPROPERTY_AUDIO_CHANNEL_CONFIGKSPROPERTY_AUDIO_CHANNEL_CONFIG Driver writes to registry upon setDriver writes to registry upon set Driver reads registry value upon getDriver reads registry value upon get
Also at MiniportInit Also at MiniportInit
Other custom properties - Get (and Set)Other custom properties - Get (and Set)
AC97 SampleAC97 SampleAdditions and Upgrades (2)Additions and Upgrades (2)
WAVEFORMATPCMEX support for WAVEFORMATPCMEX support for multi-channel streamsmulti-channel streams
Support for Intel 820 (multi-channel ac97 codecs)Support for Intel 820 (multi-channel ac97 codecs) Multi-channel volume workarounds for past Multi-channel volume workarounds for past
versions of Windowsversions of Windows How to add additional nodesconnections for surround How to add additional nodesconnections for surround
and centerLFEand centerLFE Send sample rate change requests there etcSend sample rate change requests there etc
How to add virtual master volume (mono) if 4 or 6 How to add virtual master volume (mono) if 4 or 6 channel presentchannel present
How to change data range depending on number of ac97 How to change data range depending on number of ac97 codecs detectedcodecs detected
Multi-channel mute and volume handlersMulti-channel mute and volume handlers
AC97 SampleAC97 SampleAdditions and Upgrades (3)Additions and Upgrades (3)
DRM supportDRM support Note that it cant detect presence of SPDIF Note that it cant detect presence of SPDIF
on non-compliant ac97 codecs so this is on non-compliant ac97 codecs so this is questionablequestionable
Vastly improved INFVastly improved INF Significant DataRangeIntersection Significant DataRangeIntersection
handler cleanuphandler cleanup Better synchronizationBetter synchronization
MapLock not held during MapLock not held during PortStream-gtGetMappingPortStream-gtGetMapping
AC97 SampleAC97 SampleAdditions and Upgrades (4)Additions and Upgrades (4)
Treat D2 exactly like D3 nowTreat D2 exactly like D3 now Disconnect interrupt anytime not in D0 nowDisconnect interrupt anytime not in D0 now Note bug fix at minwavecpp line 570-72 Note bug fix at minwavecpp line 570-72
(Win9x removeadd doesnrsquot destroy filter (Win9x removeadd doesnrsquot destroy filter descriptor)descriptor)
GetAllocatorFraming FrameSize must be GetAllocatorFraming FrameSize must be sample block alignedsample block aligned
Pins DataRangeSampleSize should be set Pins DataRangeSampleSize should be set to non-zeroto non-zero
Code clean up from Windows 2000Code clean up from Windows 2000
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
DDK Doc ChangesDDK Doc ChangesExisting information augmentedExisting information augmented
USB AudioMIDI class driver descriptionUSB AudioMIDI class driver description Supporting hardware acceleration of Supporting hardware acceleration of
DirectSound 2-dimensional mixingDirectSound 2-dimensional mixing Kernel Streaming topology to Audio Kernel Streaming topology to Audio
Mixer API translationMixer API translation Clarified use of Clarified use of
PcNewRegistryKey PcNewRegistryKey NewMasterDmaChannel NewMasterDmaChannel PcRegisterPhysicalConnection PcRegisterPhysicalConnection PcAddAdapterDevice and so onPcAddAdapterDevice and so on
DDK Doc ChangesDDK Doc ChangesNew Material Already Added post-BetaNew Material Already Added post-Beta
Global Effects filtersGlobal Effects filters AEC system filterAEC system filter Media-Class INF ExtensionsMedia-Class INF Extensions
KnownRegEntries SetupPreferredAudioDevicesKnownRegEntries SetupPreferredAudioDevices
Control Panel branding by vendorsControl Panel branding by vendors Speaker configuration updateSpeaker configuration update
Elaboration of driver implementation of Elaboration of driver implementation of DSSPEAKER_SURROUND and DSSPEAKER_SURROUND and DSSPEAKER_DIRECTOUT modesDSSPEAKER_DIRECTOUT modes
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-BetaNew Material To Be Added post-Beta
Update information about Microsoftrsquos AEC Update information about Microsoftrsquos AEC implementationimplementation
64-bit driver and API specifics64-bit driver and API specifics Detecting different WDM platformsDetecting different WDM platforms
Including how to detect which QFESP is installedIncluding how to detect which QFESP is installed Differences between WDM audio platformsDifferences between WDM audio platforms
Including a taxonomy of the different QFEsSPsIncluding a taxonomy of the different QFEsSPs Explain MME device limits in Win XPExplain MME device limits in Win XP Chart showing non-PCM support among Chart showing non-PCM support among
different WDM OSesdifferent WDM OSes Additional DRM documentationAdditional DRM documentation
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-Beta (2)New Material To Be Added post-Beta (2)
Using the migration DLL to retain a 9x WDM Using the migration DLL to retain a 9x WDM driver during upgrade to NTOSdriver during upgrade to NTOS
Document how a driver exposes multi-channel Document how a driver exposes multi-channel volumemute nodesvolumemute nodes
New default settings for sliders in Win XPNew default settings for sliders in Win XP DirectSound HW acceleration slider DirectSound HW acceleration slider SRC quality (used for DSound output only)SRC quality (used for DSound output only)
DSound support for mix of 2D3D pinsDSound support for mix of 2D3D pins Overriding the IDmaChannel interfaceOverriding the IDmaChannel interface Info for audio bus driversInfo for audio bus drivers ldquoldquoWhich sample to start withrdquo - Overview of Which sample to start withrdquo - Overview of
the various DDK samplesthe various DDK samples
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
NewNew GFX ndash global effect filterGFX ndash global effect filter MSVAD ndash virtual audio deviceMSVAD ndash virtual audio device
ImprovedImproved AC97smpl ndash Intel ICH2AC97smpl ndash Intel ICH2 DDKSynth ndash kernel software synthDDKSynth ndash kernel software synth DMusUART ndash MPU miniportDMusUART ndash MPU miniport SB16 ndash ISA sample SB16 ndash ISA sample
AC97 SampleAC97 SampleAdditions and UpgradesAdditions and Upgrades
New interactive INF Viewer toolNew interactive INF Viewer tool Contains migration DLL sample codeContains migration DLL sample code
New property page amp CPLNew property page amp CPL Speaker configuration propertySpeaker configuration property
KSPROPERTY_AUDIO_CHANNEL_CONFIGKSPROPERTY_AUDIO_CHANNEL_CONFIG Driver writes to registry upon setDriver writes to registry upon set Driver reads registry value upon getDriver reads registry value upon get
Also at MiniportInit Also at MiniportInit
Other custom properties - Get (and Set)Other custom properties - Get (and Set)
AC97 SampleAC97 SampleAdditions and Upgrades (2)Additions and Upgrades (2)
WAVEFORMATPCMEX support for WAVEFORMATPCMEX support for multi-channel streamsmulti-channel streams
Support for Intel 820 (multi-channel ac97 codecs)Support for Intel 820 (multi-channel ac97 codecs) Multi-channel volume workarounds for past Multi-channel volume workarounds for past
versions of Windowsversions of Windows How to add additional nodesconnections for surround How to add additional nodesconnections for surround
and centerLFEand centerLFE Send sample rate change requests there etcSend sample rate change requests there etc
How to add virtual master volume (mono) if 4 or 6 How to add virtual master volume (mono) if 4 or 6 channel presentchannel present
How to change data range depending on number of ac97 How to change data range depending on number of ac97 codecs detectedcodecs detected
Multi-channel mute and volume handlersMulti-channel mute and volume handlers
AC97 SampleAC97 SampleAdditions and Upgrades (3)Additions and Upgrades (3)
DRM supportDRM support Note that it cant detect presence of SPDIF Note that it cant detect presence of SPDIF
on non-compliant ac97 codecs so this is on non-compliant ac97 codecs so this is questionablequestionable
Vastly improved INFVastly improved INF Significant DataRangeIntersection Significant DataRangeIntersection
handler cleanuphandler cleanup Better synchronizationBetter synchronization
MapLock not held during MapLock not held during PortStream-gtGetMappingPortStream-gtGetMapping
AC97 SampleAC97 SampleAdditions and Upgrades (4)Additions and Upgrades (4)
Treat D2 exactly like D3 nowTreat D2 exactly like D3 now Disconnect interrupt anytime not in D0 nowDisconnect interrupt anytime not in D0 now Note bug fix at minwavecpp line 570-72 Note bug fix at minwavecpp line 570-72
(Win9x removeadd doesnrsquot destroy filter (Win9x removeadd doesnrsquot destroy filter descriptor)descriptor)
GetAllocatorFraming FrameSize must be GetAllocatorFraming FrameSize must be sample block alignedsample block aligned
Pins DataRangeSampleSize should be set Pins DataRangeSampleSize should be set to non-zeroto non-zero
Code clean up from Windows 2000Code clean up from Windows 2000
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
DDK Doc ChangesDDK Doc ChangesNew Material Already Added post-BetaNew Material Already Added post-Beta
Global Effects filtersGlobal Effects filters AEC system filterAEC system filter Media-Class INF ExtensionsMedia-Class INF Extensions
KnownRegEntries SetupPreferredAudioDevicesKnownRegEntries SetupPreferredAudioDevices
Control Panel branding by vendorsControl Panel branding by vendors Speaker configuration updateSpeaker configuration update
Elaboration of driver implementation of Elaboration of driver implementation of DSSPEAKER_SURROUND and DSSPEAKER_SURROUND and DSSPEAKER_DIRECTOUT modesDSSPEAKER_DIRECTOUT modes
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-BetaNew Material To Be Added post-Beta
Update information about Microsoftrsquos AEC Update information about Microsoftrsquos AEC implementationimplementation
64-bit driver and API specifics64-bit driver and API specifics Detecting different WDM platformsDetecting different WDM platforms
Including how to detect which QFESP is installedIncluding how to detect which QFESP is installed Differences between WDM audio platformsDifferences between WDM audio platforms
Including a taxonomy of the different QFEsSPsIncluding a taxonomy of the different QFEsSPs Explain MME device limits in Win XPExplain MME device limits in Win XP Chart showing non-PCM support among Chart showing non-PCM support among
different WDM OSesdifferent WDM OSes Additional DRM documentationAdditional DRM documentation
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-Beta (2)New Material To Be Added post-Beta (2)
Using the migration DLL to retain a 9x WDM Using the migration DLL to retain a 9x WDM driver during upgrade to NTOSdriver during upgrade to NTOS
Document how a driver exposes multi-channel Document how a driver exposes multi-channel volumemute nodesvolumemute nodes
New default settings for sliders in Win XPNew default settings for sliders in Win XP DirectSound HW acceleration slider DirectSound HW acceleration slider SRC quality (used for DSound output only)SRC quality (used for DSound output only)
DSound support for mix of 2D3D pinsDSound support for mix of 2D3D pins Overriding the IDmaChannel interfaceOverriding the IDmaChannel interface Info for audio bus driversInfo for audio bus drivers ldquoldquoWhich sample to start withrdquo - Overview of Which sample to start withrdquo - Overview of
the various DDK samplesthe various DDK samples
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
NewNew GFX ndash global effect filterGFX ndash global effect filter MSVAD ndash virtual audio deviceMSVAD ndash virtual audio device
ImprovedImproved AC97smpl ndash Intel ICH2AC97smpl ndash Intel ICH2 DDKSynth ndash kernel software synthDDKSynth ndash kernel software synth DMusUART ndash MPU miniportDMusUART ndash MPU miniport SB16 ndash ISA sample SB16 ndash ISA sample
AC97 SampleAC97 SampleAdditions and UpgradesAdditions and Upgrades
New interactive INF Viewer toolNew interactive INF Viewer tool Contains migration DLL sample codeContains migration DLL sample code
New property page amp CPLNew property page amp CPL Speaker configuration propertySpeaker configuration property
KSPROPERTY_AUDIO_CHANNEL_CONFIGKSPROPERTY_AUDIO_CHANNEL_CONFIG Driver writes to registry upon setDriver writes to registry upon set Driver reads registry value upon getDriver reads registry value upon get
Also at MiniportInit Also at MiniportInit
Other custom properties - Get (and Set)Other custom properties - Get (and Set)
AC97 SampleAC97 SampleAdditions and Upgrades (2)Additions and Upgrades (2)
WAVEFORMATPCMEX support for WAVEFORMATPCMEX support for multi-channel streamsmulti-channel streams
Support for Intel 820 (multi-channel ac97 codecs)Support for Intel 820 (multi-channel ac97 codecs) Multi-channel volume workarounds for past Multi-channel volume workarounds for past
versions of Windowsversions of Windows How to add additional nodesconnections for surround How to add additional nodesconnections for surround
and centerLFEand centerLFE Send sample rate change requests there etcSend sample rate change requests there etc
How to add virtual master volume (mono) if 4 or 6 How to add virtual master volume (mono) if 4 or 6 channel presentchannel present
How to change data range depending on number of ac97 How to change data range depending on number of ac97 codecs detectedcodecs detected
Multi-channel mute and volume handlersMulti-channel mute and volume handlers
AC97 SampleAC97 SampleAdditions and Upgrades (3)Additions and Upgrades (3)
DRM supportDRM support Note that it cant detect presence of SPDIF Note that it cant detect presence of SPDIF
on non-compliant ac97 codecs so this is on non-compliant ac97 codecs so this is questionablequestionable
Vastly improved INFVastly improved INF Significant DataRangeIntersection Significant DataRangeIntersection
handler cleanuphandler cleanup Better synchronizationBetter synchronization
MapLock not held during MapLock not held during PortStream-gtGetMappingPortStream-gtGetMapping
AC97 SampleAC97 SampleAdditions and Upgrades (4)Additions and Upgrades (4)
Treat D2 exactly like D3 nowTreat D2 exactly like D3 now Disconnect interrupt anytime not in D0 nowDisconnect interrupt anytime not in D0 now Note bug fix at minwavecpp line 570-72 Note bug fix at minwavecpp line 570-72
(Win9x removeadd doesnrsquot destroy filter (Win9x removeadd doesnrsquot destroy filter descriptor)descriptor)
GetAllocatorFraming FrameSize must be GetAllocatorFraming FrameSize must be sample block alignedsample block aligned
Pins DataRangeSampleSize should be set Pins DataRangeSampleSize should be set to non-zeroto non-zero
Code clean up from Windows 2000Code clean up from Windows 2000
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-BetaNew Material To Be Added post-Beta
Update information about Microsoftrsquos AEC Update information about Microsoftrsquos AEC implementationimplementation
64-bit driver and API specifics64-bit driver and API specifics Detecting different WDM platformsDetecting different WDM platforms
Including how to detect which QFESP is installedIncluding how to detect which QFESP is installed Differences between WDM audio platformsDifferences between WDM audio platforms
Including a taxonomy of the different QFEsSPsIncluding a taxonomy of the different QFEsSPs Explain MME device limits in Win XPExplain MME device limits in Win XP Chart showing non-PCM support among Chart showing non-PCM support among
different WDM OSesdifferent WDM OSes Additional DRM documentationAdditional DRM documentation
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-Beta (2)New Material To Be Added post-Beta (2)
Using the migration DLL to retain a 9x WDM Using the migration DLL to retain a 9x WDM driver during upgrade to NTOSdriver during upgrade to NTOS
Document how a driver exposes multi-channel Document how a driver exposes multi-channel volumemute nodesvolumemute nodes
New default settings for sliders in Win XPNew default settings for sliders in Win XP DirectSound HW acceleration slider DirectSound HW acceleration slider SRC quality (used for DSound output only)SRC quality (used for DSound output only)
DSound support for mix of 2D3D pinsDSound support for mix of 2D3D pins Overriding the IDmaChannel interfaceOverriding the IDmaChannel interface Info for audio bus driversInfo for audio bus drivers ldquoldquoWhich sample to start withrdquo - Overview of Which sample to start withrdquo - Overview of
the various DDK samplesthe various DDK samples
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
NewNew GFX ndash global effect filterGFX ndash global effect filter MSVAD ndash virtual audio deviceMSVAD ndash virtual audio device
ImprovedImproved AC97smpl ndash Intel ICH2AC97smpl ndash Intel ICH2 DDKSynth ndash kernel software synthDDKSynth ndash kernel software synth DMusUART ndash MPU miniportDMusUART ndash MPU miniport SB16 ndash ISA sample SB16 ndash ISA sample
AC97 SampleAC97 SampleAdditions and UpgradesAdditions and Upgrades
New interactive INF Viewer toolNew interactive INF Viewer tool Contains migration DLL sample codeContains migration DLL sample code
New property page amp CPLNew property page amp CPL Speaker configuration propertySpeaker configuration property
KSPROPERTY_AUDIO_CHANNEL_CONFIGKSPROPERTY_AUDIO_CHANNEL_CONFIG Driver writes to registry upon setDriver writes to registry upon set Driver reads registry value upon getDriver reads registry value upon get
Also at MiniportInit Also at MiniportInit
Other custom properties - Get (and Set)Other custom properties - Get (and Set)
AC97 SampleAC97 SampleAdditions and Upgrades (2)Additions and Upgrades (2)
WAVEFORMATPCMEX support for WAVEFORMATPCMEX support for multi-channel streamsmulti-channel streams
Support for Intel 820 (multi-channel ac97 codecs)Support for Intel 820 (multi-channel ac97 codecs) Multi-channel volume workarounds for past Multi-channel volume workarounds for past
versions of Windowsversions of Windows How to add additional nodesconnections for surround How to add additional nodesconnections for surround
and centerLFEand centerLFE Send sample rate change requests there etcSend sample rate change requests there etc
How to add virtual master volume (mono) if 4 or 6 How to add virtual master volume (mono) if 4 or 6 channel presentchannel present
How to change data range depending on number of ac97 How to change data range depending on number of ac97 codecs detectedcodecs detected
Multi-channel mute and volume handlersMulti-channel mute and volume handlers
AC97 SampleAC97 SampleAdditions and Upgrades (3)Additions and Upgrades (3)
DRM supportDRM support Note that it cant detect presence of SPDIF Note that it cant detect presence of SPDIF
on non-compliant ac97 codecs so this is on non-compliant ac97 codecs so this is questionablequestionable
Vastly improved INFVastly improved INF Significant DataRangeIntersection Significant DataRangeIntersection
handler cleanuphandler cleanup Better synchronizationBetter synchronization
MapLock not held during MapLock not held during PortStream-gtGetMappingPortStream-gtGetMapping
AC97 SampleAC97 SampleAdditions and Upgrades (4)Additions and Upgrades (4)
Treat D2 exactly like D3 nowTreat D2 exactly like D3 now Disconnect interrupt anytime not in D0 nowDisconnect interrupt anytime not in D0 now Note bug fix at minwavecpp line 570-72 Note bug fix at minwavecpp line 570-72
(Win9x removeadd doesnrsquot destroy filter (Win9x removeadd doesnrsquot destroy filter descriptor)descriptor)
GetAllocatorFraming FrameSize must be GetAllocatorFraming FrameSize must be sample block alignedsample block aligned
Pins DataRangeSampleSize should be set Pins DataRangeSampleSize should be set to non-zeroto non-zero
Code clean up from Windows 2000Code clean up from Windows 2000
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
DDK Doc ChangesDDK Doc ChangesNew Material To Be Added post-Beta (2)New Material To Be Added post-Beta (2)
Using the migration DLL to retain a 9x WDM Using the migration DLL to retain a 9x WDM driver during upgrade to NTOSdriver during upgrade to NTOS
Document how a driver exposes multi-channel Document how a driver exposes multi-channel volumemute nodesvolumemute nodes
New default settings for sliders in Win XPNew default settings for sliders in Win XP DirectSound HW acceleration slider DirectSound HW acceleration slider SRC quality (used for DSound output only)SRC quality (used for DSound output only)
DSound support for mix of 2D3D pinsDSound support for mix of 2D3D pins Overriding the IDmaChannel interfaceOverriding the IDmaChannel interface Info for audio bus driversInfo for audio bus drivers ldquoldquoWhich sample to start withrdquo - Overview of Which sample to start withrdquo - Overview of
the various DDK samplesthe various DDK samples
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
NewNew GFX ndash global effect filterGFX ndash global effect filter MSVAD ndash virtual audio deviceMSVAD ndash virtual audio device
ImprovedImproved AC97smpl ndash Intel ICH2AC97smpl ndash Intel ICH2 DDKSynth ndash kernel software synthDDKSynth ndash kernel software synth DMusUART ndash MPU miniportDMusUART ndash MPU miniport SB16 ndash ISA sample SB16 ndash ISA sample
AC97 SampleAC97 SampleAdditions and UpgradesAdditions and Upgrades
New interactive INF Viewer toolNew interactive INF Viewer tool Contains migration DLL sample codeContains migration DLL sample code
New property page amp CPLNew property page amp CPL Speaker configuration propertySpeaker configuration property
KSPROPERTY_AUDIO_CHANNEL_CONFIGKSPROPERTY_AUDIO_CHANNEL_CONFIG Driver writes to registry upon setDriver writes to registry upon set Driver reads registry value upon getDriver reads registry value upon get
Also at MiniportInit Also at MiniportInit
Other custom properties - Get (and Set)Other custom properties - Get (and Set)
AC97 SampleAC97 SampleAdditions and Upgrades (2)Additions and Upgrades (2)
WAVEFORMATPCMEX support for WAVEFORMATPCMEX support for multi-channel streamsmulti-channel streams
Support for Intel 820 (multi-channel ac97 codecs)Support for Intel 820 (multi-channel ac97 codecs) Multi-channel volume workarounds for past Multi-channel volume workarounds for past
versions of Windowsversions of Windows How to add additional nodesconnections for surround How to add additional nodesconnections for surround
and centerLFEand centerLFE Send sample rate change requests there etcSend sample rate change requests there etc
How to add virtual master volume (mono) if 4 or 6 How to add virtual master volume (mono) if 4 or 6 channel presentchannel present
How to change data range depending on number of ac97 How to change data range depending on number of ac97 codecs detectedcodecs detected
Multi-channel mute and volume handlersMulti-channel mute and volume handlers
AC97 SampleAC97 SampleAdditions and Upgrades (3)Additions and Upgrades (3)
DRM supportDRM support Note that it cant detect presence of SPDIF Note that it cant detect presence of SPDIF
on non-compliant ac97 codecs so this is on non-compliant ac97 codecs so this is questionablequestionable
Vastly improved INFVastly improved INF Significant DataRangeIntersection Significant DataRangeIntersection
handler cleanuphandler cleanup Better synchronizationBetter synchronization
MapLock not held during MapLock not held during PortStream-gtGetMappingPortStream-gtGetMapping
AC97 SampleAC97 SampleAdditions and Upgrades (4)Additions and Upgrades (4)
Treat D2 exactly like D3 nowTreat D2 exactly like D3 now Disconnect interrupt anytime not in D0 nowDisconnect interrupt anytime not in D0 now Note bug fix at minwavecpp line 570-72 Note bug fix at minwavecpp line 570-72
(Win9x removeadd doesnrsquot destroy filter (Win9x removeadd doesnrsquot destroy filter descriptor)descriptor)
GetAllocatorFraming FrameSize must be GetAllocatorFraming FrameSize must be sample block alignedsample block aligned
Pins DataRangeSampleSize should be set Pins DataRangeSampleSize should be set to non-zeroto non-zero
Code clean up from Windows 2000Code clean up from Windows 2000
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
NewNew GFX ndash global effect filterGFX ndash global effect filter MSVAD ndash virtual audio deviceMSVAD ndash virtual audio device
ImprovedImproved AC97smpl ndash Intel ICH2AC97smpl ndash Intel ICH2 DDKSynth ndash kernel software synthDDKSynth ndash kernel software synth DMusUART ndash MPU miniportDMusUART ndash MPU miniport SB16 ndash ISA sample SB16 ndash ISA sample
AC97 SampleAC97 SampleAdditions and UpgradesAdditions and Upgrades
New interactive INF Viewer toolNew interactive INF Viewer tool Contains migration DLL sample codeContains migration DLL sample code
New property page amp CPLNew property page amp CPL Speaker configuration propertySpeaker configuration property
KSPROPERTY_AUDIO_CHANNEL_CONFIGKSPROPERTY_AUDIO_CHANNEL_CONFIG Driver writes to registry upon setDriver writes to registry upon set Driver reads registry value upon getDriver reads registry value upon get
Also at MiniportInit Also at MiniportInit
Other custom properties - Get (and Set)Other custom properties - Get (and Set)
AC97 SampleAC97 SampleAdditions and Upgrades (2)Additions and Upgrades (2)
WAVEFORMATPCMEX support for WAVEFORMATPCMEX support for multi-channel streamsmulti-channel streams
Support for Intel 820 (multi-channel ac97 codecs)Support for Intel 820 (multi-channel ac97 codecs) Multi-channel volume workarounds for past Multi-channel volume workarounds for past
versions of Windowsversions of Windows How to add additional nodesconnections for surround How to add additional nodesconnections for surround
and centerLFEand centerLFE Send sample rate change requests there etcSend sample rate change requests there etc
How to add virtual master volume (mono) if 4 or 6 How to add virtual master volume (mono) if 4 or 6 channel presentchannel present
How to change data range depending on number of ac97 How to change data range depending on number of ac97 codecs detectedcodecs detected
Multi-channel mute and volume handlersMulti-channel mute and volume handlers
AC97 SampleAC97 SampleAdditions and Upgrades (3)Additions and Upgrades (3)
DRM supportDRM support Note that it cant detect presence of SPDIF Note that it cant detect presence of SPDIF
on non-compliant ac97 codecs so this is on non-compliant ac97 codecs so this is questionablequestionable
Vastly improved INFVastly improved INF Significant DataRangeIntersection Significant DataRangeIntersection
handler cleanuphandler cleanup Better synchronizationBetter synchronization
MapLock not held during MapLock not held during PortStream-gtGetMappingPortStream-gtGetMapping
AC97 SampleAC97 SampleAdditions and Upgrades (4)Additions and Upgrades (4)
Treat D2 exactly like D3 nowTreat D2 exactly like D3 now Disconnect interrupt anytime not in D0 nowDisconnect interrupt anytime not in D0 now Note bug fix at minwavecpp line 570-72 Note bug fix at minwavecpp line 570-72
(Win9x removeadd doesnrsquot destroy filter (Win9x removeadd doesnrsquot destroy filter descriptor)descriptor)
GetAllocatorFraming FrameSize must be GetAllocatorFraming FrameSize must be sample block alignedsample block aligned
Pins DataRangeSampleSize should be set Pins DataRangeSampleSize should be set to non-zeroto non-zero
Code clean up from Windows 2000Code clean up from Windows 2000
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
Windows DDK Sample Driver Windows DDK Sample Driver Additions and UpgradesAdditions and Upgrades
NewNew GFX ndash global effect filterGFX ndash global effect filter MSVAD ndash virtual audio deviceMSVAD ndash virtual audio device
ImprovedImproved AC97smpl ndash Intel ICH2AC97smpl ndash Intel ICH2 DDKSynth ndash kernel software synthDDKSynth ndash kernel software synth DMusUART ndash MPU miniportDMusUART ndash MPU miniport SB16 ndash ISA sample SB16 ndash ISA sample
AC97 SampleAC97 SampleAdditions and UpgradesAdditions and Upgrades
New interactive INF Viewer toolNew interactive INF Viewer tool Contains migration DLL sample codeContains migration DLL sample code
New property page amp CPLNew property page amp CPL Speaker configuration propertySpeaker configuration property
KSPROPERTY_AUDIO_CHANNEL_CONFIGKSPROPERTY_AUDIO_CHANNEL_CONFIG Driver writes to registry upon setDriver writes to registry upon set Driver reads registry value upon getDriver reads registry value upon get
Also at MiniportInit Also at MiniportInit
Other custom properties - Get (and Set)Other custom properties - Get (and Set)
AC97 SampleAC97 SampleAdditions and Upgrades (2)Additions and Upgrades (2)
WAVEFORMATPCMEX support for WAVEFORMATPCMEX support for multi-channel streamsmulti-channel streams
Support for Intel 820 (multi-channel ac97 codecs)Support for Intel 820 (multi-channel ac97 codecs) Multi-channel volume workarounds for past Multi-channel volume workarounds for past
versions of Windowsversions of Windows How to add additional nodesconnections for surround How to add additional nodesconnections for surround
and centerLFEand centerLFE Send sample rate change requests there etcSend sample rate change requests there etc
How to add virtual master volume (mono) if 4 or 6 How to add virtual master volume (mono) if 4 or 6 channel presentchannel present
How to change data range depending on number of ac97 How to change data range depending on number of ac97 codecs detectedcodecs detected
Multi-channel mute and volume handlersMulti-channel mute and volume handlers
AC97 SampleAC97 SampleAdditions and Upgrades (3)Additions and Upgrades (3)
DRM supportDRM support Note that it cant detect presence of SPDIF Note that it cant detect presence of SPDIF
on non-compliant ac97 codecs so this is on non-compliant ac97 codecs so this is questionablequestionable
Vastly improved INFVastly improved INF Significant DataRangeIntersection Significant DataRangeIntersection
handler cleanuphandler cleanup Better synchronizationBetter synchronization
MapLock not held during MapLock not held during PortStream-gtGetMappingPortStream-gtGetMapping
AC97 SampleAC97 SampleAdditions and Upgrades (4)Additions and Upgrades (4)
Treat D2 exactly like D3 nowTreat D2 exactly like D3 now Disconnect interrupt anytime not in D0 nowDisconnect interrupt anytime not in D0 now Note bug fix at minwavecpp line 570-72 Note bug fix at minwavecpp line 570-72
(Win9x removeadd doesnrsquot destroy filter (Win9x removeadd doesnrsquot destroy filter descriptor)descriptor)
GetAllocatorFraming FrameSize must be GetAllocatorFraming FrameSize must be sample block alignedsample block aligned
Pins DataRangeSampleSize should be set Pins DataRangeSampleSize should be set to non-zeroto non-zero
Code clean up from Windows 2000Code clean up from Windows 2000
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
AC97 SampleAC97 SampleAdditions and UpgradesAdditions and Upgrades
New interactive INF Viewer toolNew interactive INF Viewer tool Contains migration DLL sample codeContains migration DLL sample code
New property page amp CPLNew property page amp CPL Speaker configuration propertySpeaker configuration property
KSPROPERTY_AUDIO_CHANNEL_CONFIGKSPROPERTY_AUDIO_CHANNEL_CONFIG Driver writes to registry upon setDriver writes to registry upon set Driver reads registry value upon getDriver reads registry value upon get
Also at MiniportInit Also at MiniportInit
Other custom properties - Get (and Set)Other custom properties - Get (and Set)
AC97 SampleAC97 SampleAdditions and Upgrades (2)Additions and Upgrades (2)
WAVEFORMATPCMEX support for WAVEFORMATPCMEX support for multi-channel streamsmulti-channel streams
Support for Intel 820 (multi-channel ac97 codecs)Support for Intel 820 (multi-channel ac97 codecs) Multi-channel volume workarounds for past Multi-channel volume workarounds for past
versions of Windowsversions of Windows How to add additional nodesconnections for surround How to add additional nodesconnections for surround
and centerLFEand centerLFE Send sample rate change requests there etcSend sample rate change requests there etc
How to add virtual master volume (mono) if 4 or 6 How to add virtual master volume (mono) if 4 or 6 channel presentchannel present
How to change data range depending on number of ac97 How to change data range depending on number of ac97 codecs detectedcodecs detected
Multi-channel mute and volume handlersMulti-channel mute and volume handlers
AC97 SampleAC97 SampleAdditions and Upgrades (3)Additions and Upgrades (3)
DRM supportDRM support Note that it cant detect presence of SPDIF Note that it cant detect presence of SPDIF
on non-compliant ac97 codecs so this is on non-compliant ac97 codecs so this is questionablequestionable
Vastly improved INFVastly improved INF Significant DataRangeIntersection Significant DataRangeIntersection
handler cleanuphandler cleanup Better synchronizationBetter synchronization
MapLock not held during MapLock not held during PortStream-gtGetMappingPortStream-gtGetMapping
AC97 SampleAC97 SampleAdditions and Upgrades (4)Additions and Upgrades (4)
Treat D2 exactly like D3 nowTreat D2 exactly like D3 now Disconnect interrupt anytime not in D0 nowDisconnect interrupt anytime not in D0 now Note bug fix at minwavecpp line 570-72 Note bug fix at minwavecpp line 570-72
(Win9x removeadd doesnrsquot destroy filter (Win9x removeadd doesnrsquot destroy filter descriptor)descriptor)
GetAllocatorFraming FrameSize must be GetAllocatorFraming FrameSize must be sample block alignedsample block aligned
Pins DataRangeSampleSize should be set Pins DataRangeSampleSize should be set to non-zeroto non-zero
Code clean up from Windows 2000Code clean up from Windows 2000
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
AC97 SampleAC97 SampleAdditions and Upgrades (2)Additions and Upgrades (2)
WAVEFORMATPCMEX support for WAVEFORMATPCMEX support for multi-channel streamsmulti-channel streams
Support for Intel 820 (multi-channel ac97 codecs)Support for Intel 820 (multi-channel ac97 codecs) Multi-channel volume workarounds for past Multi-channel volume workarounds for past
versions of Windowsversions of Windows How to add additional nodesconnections for surround How to add additional nodesconnections for surround
and centerLFEand centerLFE Send sample rate change requests there etcSend sample rate change requests there etc
How to add virtual master volume (mono) if 4 or 6 How to add virtual master volume (mono) if 4 or 6 channel presentchannel present
How to change data range depending on number of ac97 How to change data range depending on number of ac97 codecs detectedcodecs detected
Multi-channel mute and volume handlersMulti-channel mute and volume handlers
AC97 SampleAC97 SampleAdditions and Upgrades (3)Additions and Upgrades (3)
DRM supportDRM support Note that it cant detect presence of SPDIF Note that it cant detect presence of SPDIF
on non-compliant ac97 codecs so this is on non-compliant ac97 codecs so this is questionablequestionable
Vastly improved INFVastly improved INF Significant DataRangeIntersection Significant DataRangeIntersection
handler cleanuphandler cleanup Better synchronizationBetter synchronization
MapLock not held during MapLock not held during PortStream-gtGetMappingPortStream-gtGetMapping
AC97 SampleAC97 SampleAdditions and Upgrades (4)Additions and Upgrades (4)
Treat D2 exactly like D3 nowTreat D2 exactly like D3 now Disconnect interrupt anytime not in D0 nowDisconnect interrupt anytime not in D0 now Note bug fix at minwavecpp line 570-72 Note bug fix at minwavecpp line 570-72
(Win9x removeadd doesnrsquot destroy filter (Win9x removeadd doesnrsquot destroy filter descriptor)descriptor)
GetAllocatorFraming FrameSize must be GetAllocatorFraming FrameSize must be sample block alignedsample block aligned
Pins DataRangeSampleSize should be set Pins DataRangeSampleSize should be set to non-zeroto non-zero
Code clean up from Windows 2000Code clean up from Windows 2000
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
AC97 SampleAC97 SampleAdditions and Upgrades (3)Additions and Upgrades (3)
DRM supportDRM support Note that it cant detect presence of SPDIF Note that it cant detect presence of SPDIF
on non-compliant ac97 codecs so this is on non-compliant ac97 codecs so this is questionablequestionable
Vastly improved INFVastly improved INF Significant DataRangeIntersection Significant DataRangeIntersection
handler cleanuphandler cleanup Better synchronizationBetter synchronization
MapLock not held during MapLock not held during PortStream-gtGetMappingPortStream-gtGetMapping
AC97 SampleAC97 SampleAdditions and Upgrades (4)Additions and Upgrades (4)
Treat D2 exactly like D3 nowTreat D2 exactly like D3 now Disconnect interrupt anytime not in D0 nowDisconnect interrupt anytime not in D0 now Note bug fix at minwavecpp line 570-72 Note bug fix at minwavecpp line 570-72
(Win9x removeadd doesnrsquot destroy filter (Win9x removeadd doesnrsquot destroy filter descriptor)descriptor)
GetAllocatorFraming FrameSize must be GetAllocatorFraming FrameSize must be sample block alignedsample block aligned
Pins DataRangeSampleSize should be set Pins DataRangeSampleSize should be set to non-zeroto non-zero
Code clean up from Windows 2000Code clean up from Windows 2000
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
AC97 SampleAC97 SampleAdditions and Upgrades (4)Additions and Upgrades (4)
Treat D2 exactly like D3 nowTreat D2 exactly like D3 now Disconnect interrupt anytime not in D0 nowDisconnect interrupt anytime not in D0 now Note bug fix at minwavecpp line 570-72 Note bug fix at minwavecpp line 570-72
(Win9x removeadd doesnrsquot destroy filter (Win9x removeadd doesnrsquot destroy filter descriptor)descriptor)
GetAllocatorFraming FrameSize must be GetAllocatorFraming FrameSize must be sample block alignedsample block aligned
Pins DataRangeSampleSize should be set Pins DataRangeSampleSize should be set to non-zeroto non-zero
Code clean up from Windows 2000Code clean up from Windows 2000
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
DDKSynth SampleDDKSynth SampleAdditions and UpgradesAdditions and Upgrades
Vastly improved INFinstallVastly improved INFinstall Now appropriate for SW devicesNow appropriate for SW devices
FP protectionFP protection Fixes for memory leaks KS property Fixes for memory leaks KS property
handlinghandling
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
DMusUART SampleDMusUART SampleAdditions and UpgradesAdditions and Upgrades
Added IMusicTechnology for clients to Added IMusicTechnology for clients to specify specify KSMUSIC_TECHNOLOGY_PORTKSMUSIC_TECHNOLOGY_PORT KSMUSIC_TECHNOLOGY_WAVETABLEKSMUSIC_TECHNOLOGY_WAVETABLE (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH (KSMUSIC_TECHNOLOGY_SWSYNTH _SQSYNTH
and _FMSYNTH are NA)and _FMSYNTH are NA) Fixes for KS property handlingFixes for KS property handling Added IPowerNotify for proper power Added IPowerNotify for proper power
management behaviormanagement behavior Reset MPU when returning to D0Reset MPU when returning to D0
Removed UART sampleRemoved UART sample
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
Global Effects SampleGlobal Effects SampleAdditions and UpgradesAdditions and Upgrades
AVStream filter (GFXSwap) that AVStream filter (GFXSwap) that performs global audio processing (in performs global audio processing (in this case LR channel swap)this case LR channel swap)
Vendor UI property page including Vendor UI property page including custom KS property (Get and Set)custom KS property (Get and Set)
INF for installation with optional INF INF for installation with optional INF lines for hardware-specific installationlines for hardware-specific installation
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
Virtual Audio Driver (MSVAD)Virtual Audio Driver (MSVAD)Additions and UpgradesAdditions and Upgrades
SimpleSimple Baseline miniport driver templateBaseline miniport driver template Extended caps (MID PID) Extended caps (MID PID)
AC3AC3 AC3-over-SPDIF output pinAC3-over-SPDIF output pin Non-PCM DataRangeIntersection handlerNon-PCM DataRangeIntersection handler
DrmSimpDrmSimp SetContentId implementation for simple SetContentId implementation for simple
IDrmAudioStreamIDrmAudioStream Emulates muting of HW with savedataEmulates muting of HW with savedata
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
MSVADMSVADAdditions and Upgrades (2)Additions and Upgrades (2)
DrmMultDrmMult CreateContentMixed GetContentRights CreateContentMixed GetContentRights
DestroyContentDestroyContent Like DrmSimp emulates muting of individual HW Like DrmSimp emulates muting of individual HW
streams with savedata streams with savedata Doesnt actually mixDoesnt actually mix
ds2dhwds2dhw Volume sum SRC properties and nodesVolume sum SRC properties and nodes Correct node ordering for DS mixingCorrect node ordering for DS mixing
MultStrMultStr gt 1 output streamgt 1 output stream
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
MSVADMSVADAdditions and Upgrades (3)Additions and Upgrades (3)
PcmExPcmEx Intersection handler for extensible Intersection handler for extensible
formatformat
DDK sample migration pathsDDK sample migration paths Simple --gt AC3 PcmEx DrmSimp Simple --gt AC3 PcmEx DrmSimp
MultStrMultStr MultStr --gt ds2dhw DrmMult MultStr --gt ds2dhw DrmMult (DrmSimp --gt DrmMult)(DrmSimp --gt DrmMult)
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
SB16SB16Additions and UpgradesAdditions and Upgrades
HW event support (volume control callbacks) HW event support (volume control callbacks) KSEVENT_CONTROL_CHANGE automation table KSEVENT_CONTROL_CHANGE automation table
and event handler AddEventToEventListand event handler AddEventToEventList Then on ISR we GenerateEventListThen on ISR we GenerateEventList
DRMDRM Also better comments in SetContentIdAlso better comments in SetContentId
IDmaChannel for indirectionbuffer tweakingIDmaChannel for indirectionbuffer tweaking Resume from S4 SR fixResume from S4 SR fix
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
SB16SB16Additions and Upgrades (2)Additions and Upgrades (2)
Extended caps (MID PID)Extended caps (MID PID) INF MediaCategories entry for NameGuidINF MediaCategories entry for NameGuid IPortClsVersionIPortClsVersion
Plus comments for how to detect pre-Plus comments for how to detect pre-IPortClsVersion QFEsIPortClsVersion QFEs
DataRangeIntersection handler cleanupDataRangeIntersection handler cleanup SetNotificationFreq FramingSize must be SetNotificationFreq FramingSize must be
sample block alignedsample block aligned General code clean upGeneral code clean up
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
DDK Samples DDK Samples New Material To Be Added post-Beta New Material To Be Added post-Beta
Migration DLL sample with complete INFMigration DLL sample with complete INF MSVAD sample for DSound 3D mixingMSVAD sample for DSound 3D mixing Inclusion of AddContentHandlers and Inclusion of AddContentHandlers and
other DRM calls into MSVADDrmMultother DRM calls into MSVADDrmMult
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
New DDK ToolsNew DDK Tools
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
New DDK ToolsNew DDK Tools
KsStudio (Grapher2)KsStudio (Grapher2) Tons of great new featuresTons of great new features
Interactive INF viewerInteractive INF viewer Multi-channel streaming toolMulti-channel streaming tool New WHQL testsNew WHQL tests
DRMTestDRMTest AC3TestAC3Test DmDrvTstDmDrvTst KsDmTstKsDmTst GfxTestGfxTest
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
Important Changes to Important Changes to Libs Header Files INFsLibs Header Files INFs
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
Lib and h File ChangesLib and h File ChangesPortClslibPortClslib
Removed from PortClslibRemoved from PortClslib PcNewIrpStreamPhysical PcNewIrpStreamPhysical
PcNewIrpStreamVirtualPcNewIrpStreamVirtual Added to PortClslibAdded to PortClslib
PcAddContentHandlers PcAddContentHandlers PcForwardContentToDeviceObjectPcForwardContentToDeviceObject Not in Windows MeNot in Windows Me
PcCompleteIrp plus five DRM exportsPcCompleteIrp plus five DRM exports PcCreateContentMixed PcDestroyContent PcCreateContentMixed PcDestroyContent PcForwardContentToInterface PcForwardContentToInterface
PcGetContentRightsPcGetContentRights PcForwardContentToFileObject (deprecated) PcForwardContentToFileObject (deprecated)
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
New PortCls interfaces added to PortClshNew PortCls interfaces added to PortClsh IDrmPort interface declaration and IDrmPort interface declaration and
implementation macroimplementation macro IDrmPort2 built on IDrmPort from Windows MeIDrmPort2 built on IDrmPort from Windows Me
Adds AddContentHandlers amp Adds AddContentHandlers amp ForwardContentToDeviceObjectForwardContentToDeviceObject
IPortClsVersion for WDM audio platform detectionIPortClsVersion for WDM audio platform detection IDmaOperations for HalAllocateCommonBuffer IDmaOperations for HalAllocateCommonBuffer
(since it is obsolete)(since it is obsolete) Could use IDmaChannelCould use IDmaChannel
IMusicTechnology for non-MPU devices with a IMusicTechnology for non-MPU devices with a UART interfaceUART interface
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
Lib and h File ChangesLib and h File ChangesPortClshPortClsh
Removed from PortClshRemoved from PortClsh NewIrpStream definesNewIrpStream defines PcRegisterIrpHandlerPcRegisterIrpHandler
Other Vtable declaration cleanup for Other Vtable declaration cleanup for ForwardContentToInterfaceForwardContentToInterface
Managment --gt ManagementManagment --gt Management
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
INFsSetupINFsSetup
Dynamic UpdateDynamic Update Logorsquod driver on Windows Update automatically Logorsquod driver on Windows Update automatically
pushed during upgrade if no in-box PNP ID matchpushed during upgrade if no in-box PNP ID match Windows 9x WDM driversrsquo INF files are Windows 9x WDM driversrsquo INF files are
deleted upon upgrade to NTOSdeleted upon upgrade to NTOS Unless Win 9x INF contains special section and Unless Win 9x INF contains special section and
installs Migration DLLinstalls Migration DLL Migration DLL entries shown in INF viewer toolMigration DLL entries shown in INF viewer tool
Legacy detection removed for Windows XPLegacy detection removed for Windows XP PreCopySection removed for NT-only INFs PreCopySection removed for NT-only INFs
Only needed for Windows 9x legacy detectionOnly needed for Windows 9x legacy detection Sample INFsrsquo 9x vs NT sections cleaned upSample INFsrsquo 9x vs NT sections cleaned up
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
Common Problems with Common Problems with Audio DriversDevicesAudio DriversDevices
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
Common ProblemsCommon ProblemsWith WDM Audio DriversWith WDM Audio Drivers
Power ManagementPower Management Scatter-gather lists gets scrambledScatter-gather lists gets scrambled Test aggressively with PMTE amp LullabyTest aggressively with PMTE amp Lullaby
Plug and PlayPlug and Play Incorrect treatment of child devicesIncorrect treatment of child devices Test aggressively with HCT testsTest aggressively with HCT tests
FP problemsFP problems Not saving FP state appropriatelyNot saving FP state appropriately Direct CR0 manipulationDirect CR0 manipulation
Interrupt StormsInterrupt Storms Failures with new Verifier (deadlock IO)Failures with new Verifier (deadlock IO)
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
Common ProblemsCommon ProblemsWith Audio DevicesWith Audio Devices
Power Management HW issuesPower Management HW issues C3 state issuesC3 state issues Repeated power cycles HW does not awakenRepeated power cycles HW does not awaken
Plug and Play HW issuesPlug and Play HW issues Interactions with on-chip video modem devicesInteractions with on-chip video modem devices Not separable into MF-compliant subdevices Not separable into MF-compliant subdevices
HW cannot be partitionedHW cannot be partitioned HW incapable of redirecting final output to host HW incapable of redirecting final output to host Renderer includes analog processingRenderer includes analog processing
USB not providing a low-bandwidth pipe USB not providing a low-bandwidth pipe (non-zero lt20) for bandwidth reservation(non-zero lt20) for bandwidth reservation
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
Resources for WDM Audio Resources for WDM Audio Driver WritersDriver Writers Windows DDK (of course)Windows DDK (of course) Web resourcesWeb resources
wwwmicrosoftcomwinhecwwwmicrosoftcomwinhec wwwmicrosoftcomwinhecwinhec2000htmwwwmicrosoftcomwinhecwinhec2000htm wwwmicrosoftcomhwdevaudiowwwmicrosoftcomhwdevaudio supportmicrosoftcomdirectorysupportmicrosoftcomdirectory groupsyahoocomgroupwdmaudiodevgroupsyahoocomgroupwdmaudiodev
Good external resource for audio developersGood external resource for audio developers Archive is full of loreArchive is full of lore
Numerous books on WDM (Oney Numerous books on WDM (Oney et alet al))
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful
Call to ActionCall to Action
Take advantage of new audio features of Take advantage of new audio features of Windows XP to create full-featured driversWindows XP to create full-featured drivers
Logo your drivers for Windows XPLogo your drivers for Windows XP Keep in touch DDK feedback is appreciatedKeep in touch DDK feedback is appreciated
Are samplesdocs unclear or incompleteAre samplesdocs unclear or incomplete What new samples or docs are neededWhat new samples or docs are needed What features should be added to WDM audioWhat features should be added to WDM audio Send DDK feedback to Send DDK feedback to HakonSmicrosoftcomHakonSmicrosoftcom
(program manager for WDM audio drivers)(program manager for WDM audio drivers)
WinHEC is over go forth and be fruitfulWinHEC is over go forth and be fruitful