Condividi tramite


Richieste di elementi di proprietà del driver Miniport

Questa sezione è una breve introduzione alle richieste di elementi di proprietà DirectMusic. Una panoramica completa di questo e altri concetti di streaming del kernel sono disponibili in Kernel Streaming.

I driver miniport DirectMusic devono gestire i set di proprietà dei driver audio. Una richiesta di proprietà è disponibile in due parti. La prima parte è il set di proprietà definito dalla struttura KSPROPERTY . Il secondo è un buffer di dati che contiene i dati dell'istanza specifici dell'elemento della proprietà.

La struttura KSPROPERTY contiene quanto segue:

Il membro Flags di KSPROPERTY può contenere esattamente uno dei flag seguenti per specificare l'operazione richiesta dal driver miniport:

KSPROPERTY_TYPE_GET
Per recuperare il valore dell'elemento della proprietà specificato.

KSPROPERTY_TYPE_SET
Per impostare il valore dell'elemento della proprietà specificato.

KSPROPERTY_TYPE_BASICSUPPORT
Per determinare il tipo di supporto disponibile per il set di proprietà. I dati restituiti in *pvPropertyData sono un DWORD contenente uno o entrambi i KSPROPERTY_TYPE_GET e KSPROPERTY_TYPE_SET, a indicare quali operazioni sono possibili.

La seconda parte della richiesta dell'elemento di proprietà è costituita dai dati dell'istanza, ovvero un buffer che può essere usato per passare dati da o verso il driver miniport. La modalità di utilizzo di questo buffer dipende dal fatto che la richiesta sia set o GET:

  • Se la richiesta è una KSPROPERTY_TYPE_SET, i dati dell'istanza vengono inviati al driver miniport ma non vengono restituiti al richiedente.

  • Se la richiesta è una KSPROPERTY_TYPE_GET, i dati dell'istanza vengono compilati nel driver miniport e restituiti al richiedente.

Una richiesta di elemento di proprietà può essere indirizzata a un determinato nodo nella topologia del driver miniport. La topologia del driver miniport descrive il layout del driver e l'hardware sottostante. All'interno della topologia possono essere nodi in cui è possibile inviare gli elementi della proprietà, indipendentemente dal fatto che siano disponibili istanze pin al momento della richiesta.

È necessario creare un'istanza di pin per la riproduzione DirectMusic. I dati DirectMusic vengono inviati al nodo di tipo KSNODETYPE_DMSYNTH. Di seguito è riportato un esempio di connessione al driver miniport:

  • Connettere il flusso in a synth:

    PCFILTER_NODE Pin 0 (out) -> Nodo 0 Pin 1 (in)

  • Connettere synth all'audio:

    Pin 0 nodo 0 (out):> PCFILTER_NODE Pin 1 (in)

I formati di dati supportati sono un intervallo di dati che specifica il formato in cui un pin può ricevere i dati.

Il formato DirectMusic (STATIC_KSDATAFORMAT_SUBTYPE_DIRECTMUSIC) deve essere definito nella topologia del driver miniport in modo che DirectMusic possa inviare i dati al driver miniport. Questo formato è definito dalla struttura DMUS_EVENTHEADER (vedere la documentazione di Microsoft Windows SDK) in dmusbuff.h. Quando il driver miniport specifica che supporta questo particolare intervallo di dati, DirectMusic può esporre tale intervallo di dati all'utente (tramite un pin sulla porta stessa).