50
New Developments in New Developments in WDM Audio Drivers in WDM Audio Drivers in Windows XP Windows XP Martin Puryear Martin Puryear Development Lead Development Lead Windows Core Audio Windows Core Audio Microsoft Corporation Microsoft Corporation

New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

Embed Size (px)

Citation preview

Page 1: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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

  • New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 2: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft 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

  • New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 3: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 4: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 5: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 6: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 7: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 8: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 9: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 10: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 11: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 12: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 13: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

(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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 14: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 15: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 16: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 17: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 18: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 19: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 20: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 21: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 22: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 23: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 24: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 25: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 26: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 27: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 28: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 29: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 30: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 31: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 32: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 33: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 34: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 35: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 36: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 37: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 38: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 39: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 40: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 41: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 42: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 43: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 44: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 45: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 46: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 47: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 48: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation

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 Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50
Page 49: New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • New Developments in WDM Audio Drivers in Windows XP Martin Puryear Development Lead Windows Core Audio Microsoft Corporation
  • Agenda
  • New Features
  • New Features Added in Windows XP
  • New Features Added in Windows XP (2)
  • New Features Added in Windows XP (3)
  • New Features Added in Windows XP (4)
  • New Features Added in Windows XP (5)
  • New Features Added in Windows XP (6)
  • New Features Added in Windows Me
  • New Features Added in QFE Releases
  • New Features Added in Service Pack Releases
  • (Un)Features Whatrsquos not present in Windows XP
  • DDK Documentation Additions and Updates (big thanks to Windows DDK doc team particularly Jerry Van Aken)
  • DDK Doc Changes New Material
  • DDK Doc Changes New Material (2)
  • DDK Doc Changes New Material (3)
  • DDK Doc Changes Existing information augmented
  • DDK Doc Changes New Material Already Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta
  • DDK Doc Changes New Material To Be Added post-Beta (2)
  • Windows DDK Sample Driver Additions and Upgrades
  • Slide 24
  • AC97 Sample Additions and Upgrades
  • AC97 Sample Additions and Upgrades (2)
  • AC97 Sample Additions and Upgrades (3)
  • AC97 Sample Additions and Upgrades (4)
  • DDKSynth Sample Additions and Upgrades
  • DMusUART Sample Additions and Upgrades
  • Global Effects Sample Additions and Upgrades
  • Virtual Audio Driver (MSVAD) Additions and Upgrades
  • MSVAD Additions and Upgrades (2)
  • MSVAD Additions and Upgrades (3)
  • SB16 Additions and Upgrades
  • SB16 Additions and Upgrades (2)
  • DDK Samples New Material To Be Added post-Beta
  • New DDK Tools
  • Slide 39
  • Important Changes to Libs Header Files INFs
  • Lib and h File Changes PortClslib
  • Lib and h File Changes PortClsh
  • Slide 43
  • INFsSetup
  • Common Problems with Audio DriversDevices
  • Common Problems With WDM Audio Drivers
  • Common Problems With Audio Devices
  • Resources for WDM Audio Driver Writers
  • Call to Action
  • Slide 50