Condividi tramite


Gestori di Data-Intersection predefiniti

Il gestore di intersezione dati proprietario di un adattatore (il metodo IMiniport::D ataRangeIntersection dell'oggetto driver miniport) può rifiutare di eseguire il controllo di intersezione dei dati restituendo il codice di stato STATUS_NOT_IMPLEMENTED. In questo caso, il gestore di intersezione dati predefinito del driver di porta esegue il controllo per conto dell'adattatore.

È possibile implementare un gestore di intersezione dati minimo per il driver dell'adattatore come metodo DataRangeIntersection che rifiuta tutte le richieste di intersezione dei dati restituendo STATUS_NOT_IMPLEMENTED.

L'implementazione corrente del gestore predefinito del driver di porta è limitata nei tipi di intervalli di dati che può gestire:

  • Solo formati di dati PCM

  • Solo flussi audio mono e stereo

Un driver di adattatore che supporta formati non PCM o multicanale deve implementare un gestore di intersezione dati proprietario anziché basarsi sul driver della porta per gestire le intersezioni dei dati per questi formati.

Inoltre, il gestore predefinito supporta solo formati audio che possono essere specificati da una struttura KSDATAFORMAT_DSOUND o KSDATAFORMAT_WAVEFORMATEX . Non supporta alcun formato contenente una struttura WAVEFORMATEXTENSIBLE , necessaria, ad esempio, per specificare la maschera di canale per un formato con più di due canali.

Quando si sceglie un formato comune dall'intersezione tra due intervalli di dati, il gestore predefinito del driver di porta seleziona sempre il valore più alto nell'area di intersezione di ogni parametro:

  • Se l'intersezione si estende su più di una frequenza di campionamento valida (11, 22 e 44 kHz, ad esempio), il gestore predefinito seleziona la frequenza più alta.

  • Se l'intersezione si estende su più di un valore valido per bit per campione (8, 16 e 32 bit, ad esempio), il gestore predefinito seleziona il valore più grande.

  • Se l'intersezione si estende sia su formati mono che stereo, il gestore predefinito seleziona stereo.

Se il gestore predefinito seleziona un formato insoddisfacente, il driver dell'adattatore ha la possibilità di rifiutare il formato eseguendo la chiamata a NewStream (ad esempio, vedere IMiniportWavePci::NewStream) quando SysAudio tenta di creare un pin sink con il formato. Se la chiamata non riesce, SysAudio non continuerà a cercare intersezioni dati. Tenterà invece di creare una connessione eseguendo un'iterazione tramite un elenco dei formati PCM supportati dai filtri di sistema, ad esempio KMixer, finché non ne trova uno che il pin sink dell'adattatore può supportare. L'elenco viene ordinato prima con formati di qualità superiore. Come in precedenza, l'adattatore rifiuta i formati insoddisfacenti nell'elenco eseguendo le chiamate NewStream per tali formati.