Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym temacie przedstawiono interfejsy pomocnicze, które firma Microsoft dodała do sterownika klasy portów audio (PortCls), aby uprościć implementację sterowników obsługujących przetwarzanie audio z odciążeniem.
Gdy opracowujesz sterownik miniportu WaveRT, współpracujący z adapterem audio zdolnym do przetwarzania strumieni audio odciążanych sprzętowo, sterownik miniportu współpracuje z PortCls w celu przesyłania oraz/lub przetwarzania danych audio.
PortCls może obsługiwać wszystkie właściwości przesyłania strumieniowego jądra związane z offload (KS), i to sprawia, że można łatwo opracować sterownik miniportu WaveRT, aby zapewnić obsługę przetwarzania sprzętowo odciążonych strumieni audio. Po aktualizacji, PortCls wywołuje sterownik miniportu tylko dla operacji sprzętowych i/lub specyficznych dla sterowników za pośrednictwem dwóch nowo zdefiniowanych interfejsów.
Aby pracować z tymi interfejsami, należy opracować dwie klasy, po jednym dla każdego interfejsu.
Praca z węzłem IMiniportAudioEngineNode
Klasa opracowywana do pracy z IMiniportAudioEngineNode musi również dziedziczyć z IMiniportWaveRT. Metody zdefiniowane w IMiniportAudioEngineNode umożliwiają sterownikowi używanie właściwości KS, które uzyskują dostęp do aparatu audio za pośrednictwem uchwytu filtru KS. Hierarchia klasy/interfejsu jest następująca:
Więc jeśli na przykład utworzysz klasę o nazwie CYourMiniportWaveRT, to jak widać na powyższym diagramie, CYourMiniportWaveRT musi zaimplementować wszystkie metody (pokazane jako Operacje) zdefiniowane dla dwóch interfejsów nadrzędnych.
Szablon szkieletowy dla takiej klasy będzie zawierać następujący kod:
class CMiniportWaveRT :
public IMiniportWaveRT,
public IMiniportAudioEngineNode,
public CUnknown
{
...
IMP_IMiniportWaveRT;
IMP_IMiniportAudioEngineNode;
...
};
Plik nagłówka Portcls.h definiuje te interfejsy.
Praca z modułem IMiniportStreamAudioEngineNode
Klasa opracowywana do pracy z drugim interfejsem IMiniportStreamAudioEngineNode musi również dziedziczyć z klasy IMiniportWaveRTStreamNotification. Metody zdefiniowane w IMiniportStreamAudioEngineNode umożliwiają sterownikowi używanie właściwości KS, które uzyskują dostęp do aparatu audio za pośrednictwem uchwytu instancji pinu. Hierarchia klasy/interfejsu jest następująca:
Więc jeśli na przykład utworzysz klasę o nazwie CYourMiniportWaveRTStream, to jak widać na powyższym diagramie, CYourMiniportWaveRTStream musi zaimplementować wszystkie metody zdefiniowane dla dwóch interfejsów nadrzędnych.
Szablon szkieletowy dla takiej klasy będzie zawierać następujący kod:
class CMiniportWaveRTStream :
public IMiniportWaveRTStreamNotification,
public IMiniportStreamAudioEngineNode,
public CUnknown
{
...
IMP_IMiniportWaveRTStream;
IMP_IMiniportWaveRTStreamNotification;
IMP_IMiniportStreamAudioEngineNode;
...
};
Plik nagłówka Portcls.h definiuje te interfejsy. Aby uzyskać więcej informacji o sposobie opracowywania sterownika, który może obsługiwać odciążane strumienie audio sprzętu, zobacz Hardware Offloaded Audio Driver Implementation (Implementacja odciążonego sterownika audio sprzętu).