Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit onderwerp vindt u de helperinterfaces die Microsoft heeft toegevoegd aan het stuurprogramma voor audiopoortklasse (PortCls), om de implementatie van stuurprogramma's die ondersteuning bieden voor offloaded-audioverwerking te vereenvoudigen.
Wanneer u uw WaveRT-minipoortstuurprogramma ontwikkelt dat werkt met een audioadapter die geschikt is voor het verwerken van hardware-offloade audiostreams, werkt uw minipoortstuurprogramma met PortCls om audiogegevens te streamen en/of te verwerken.
PortCls kan alle eigenschappen van de offload-gerelateerde kernelstreaming (KS) verwerken en dat is wat het eenvoudig maakt om een WaveRT-minipoortstuurprogramma te ontwikkelen om ondersteuning beschikbaar te maken voor het verwerken van hardware-offloaded audiostreams. Als gevolg van de updates roept PortCls alleen het onderliggende minipoortstuurprogramma aan voor hardware- en/of stuurprogrammaspecifieke bewerkingen via twee nieuw gedefinieerde interfaces:
U moet twee klassen ontwikkelen om met deze interfaces te werken, één voor elke interface.
Werken met IMiniportAudioEngineNode
De klasse die u ontwikkelt om te werken met IMiniportAudioEngineNode, moet ook overnemen van IMiniportWaveRT. Met de methoden die zijn gedefinieerd in IMiniportAudioEngineNode , kan uw stuurprogramma KS-eigenschappen gebruiken die toegang hebben tot de audio-engine via een KS-filtergreep. De klasse-/interfacehiërarchie is als volgt:
Dus als u bijvoorbeeld een klasse met de naam CYourMiniportWaveRT ontwikkelt, moet CYourMiniportWaveRT, zoals u in het voorgaande diagram kunt zien, alle methoden (weergegeven als Bewerkingen) implementeren die zijn gedefinieerd voor de twee bovenliggende interfaces.
Een skeletaalsjabloon voor een dergelijke klasse bevat de volgende code:
class CMiniportWaveRT :
public IMiniportWaveRT,
public IMiniportAudioEngineNode,
public CUnknown
{
...
IMP_IMiniportWaveRT;
IMP_IMiniportAudioEngineNode;
...
};
Het headerbestand Portcls.h definieert deze interfaces.
Werken met IMiniportStreamAudioEngineNode
De klasse die u ontwikkelt om te werken met de tweede interface, IMiniportStreamAudioEngineNode, moet ook overnemen van IMiniportWaveRTStreamNotification. Met de methoden die zijn gedefinieerd in IMiniportStreamAudioEngineNode kan uw driver KS-eigenschappen gebruiken die toegang biedt tot de audio-engine via een pin-instance handle. De klasse-/interfacehiërarchie is als volgt:
Dus als u bijvoorbeeld een klasse ontwikkelt met de naam CYourMiniportWaveRTStream, moet CYourMiniportWaveRTStream, zoals u in het voorgaande diagram kunt zien, alle methoden implementeren die zijn gedefinieerd voor de twee bovenliggende interfaces.
Een skeletaalsjabloon voor een dergelijke klasse bevat de volgende code:
class CMiniportWaveRTStream :
public IMiniportWaveRTStreamNotification,
public IMiniportStreamAudioEngineNode,
public CUnknown
{
...
IMP_IMiniportWaveRTStream;
IMP_IMiniportWaveRTStreamNotification;
IMP_IMiniportStreamAudioEngineNode;
...
};
Het headerbestand Portcls.h definieert deze interfaces. En voor meer informatie over het ontwikkelen van een stuurprogramma dat hardware-offloaded audiostreams kan verwerken, zie Hardware Offloaded Audio Driver Implementation.