Partager via


Méthode IMiniport ::D ataRangeIntersection (portcls.h)

La méthode DataRangeIntersection détermine l’intersection de qualité la plus élevée de deux plages de données.

Syntaxe

NTSTATUS DataRangeIntersection(
  ULONG        PinId,
  PKSDATARANGE DataRange,
  PKSDATARANGE MatchingDataRange,
  ULONG        OutputBufferLength,
  PVOID        ResultantFormat,
  PULONG       ResultantFormatLength
);

Paramètres

PinId

Spécifie l’ID de broche. Ce paramètre identifie la fabrique de broches pour laquelle l’intersection de données est déterminée. Si le filtre contient n fabriques de broches, les ID de broche valides vont de 0 à n-1.

DataRange

Pointeur vers une structure KSDATARANGE qui contient la plage de données envoyée par le client dans la demande de propriété d’intersection de plage de données.

MatchingDataRange

Pointeur vers une structure KSDATARANGE qui contient la plage de données du pilote miniport à comparer à la plage de données du client.

OutputBufferLength

Spécifie la taille en octets de la mémoire tampon pointée vers le paramètre ResultantFormat. L’appelant peut spécifier OutputBufferLength comme zéro pour interroger la taille de mémoire tampon requise. Pour plus d'informations, consultez la section Notes qui suit.

ResultantFormat

Pointeur vers la mémoire tampon dans laquelle la méthode écrit le format résultant. Si ce paramètre a la valeur NULL, le paramètre OutputBufferLength doit être égal à zéro. S’il n’est pas NULL, ce paramètre doit pointer vers une mémoire tampon suffisamment grande pour contenir le nombre d’octets spécifié dans OutputBufferLength.

ResultantFormatLength

Pointeur de sortie pour la longueur du format résultant. Ce paramètre pointe vers une variable ULONG allouée par l’appelant dans laquelle la méthode écrit la longueur du format résultant. Il s’agit de la taille en octets du format résultant qui est écrit dans la mémoire tampon pointée par ResultantFormat. Cette taille doit être inférieure ou égale à OutputBufferLength (sauf si OutputBufferLength est égal à zéro ; voir la section Remarques suivante).

Valeur retournée

Cette méthode retourne NTSTATUS qui contient STATUS_SUCCESS si l’appel a réussi. Si le paramètre OutputBufferLength a été spécifié comme zéro, la méthode retourne STATUS_BUFFER_OVERFLOW. Sinon, la méthode retourne un code d’erreur approprié. Le tableau suivant présente certains des codes status de retour possibles.

Code de retour Description
STATUS_NO_MATCH Il n’y a pas d’intersection.
STATUS_NOT_IMPLEMENTED Reporte la gestion des intersections de données au gestionnaire d’intersection de données par défaut du pilote de port.
STATUS_BUFFER_TOO_SMALL La longueur de mémoire tampon spécifiée dans OutputBufferLength était différente de zéro, mais était trop petite pour contenir le format résultant.

Remarques

La méthode DataRangeIntersection est le gestionnaire d’intersection de données du pilote miniport. Le pilote de port appelle cette méthode lorsqu’il reçoit une demande de propriété d’intersection de plage de données (voir KSPROPERTY_PIN_DATAINTERSECTION) et que la cible de la requête est une fabrique d’épingles sur un filtre instance que le pilote miniport implémente.

Le paramètre ResultantFormat pointe vers une mémoire tampon qui commence par une structure KSDATAFORMAT_WAVEFORMATEX. Notez que le membre WaveFormatEx de cette structure peut être étendu pour inclure des informations de format supplémentaires (par exemple, un masque de configuration de canal). Pour plus d’informations, consultez WAVEFORMATEXTENSIBLE.

Le paramètre ResultantFormat est facultatif et peut être spécifié comme NULL, auquel cas OutputBufferLength doit être spécifié comme zéro. L’appelant peut interroger la longueur de mémoire tampon requise en effectuant un appel initial à DataRangeIntersection avec une valeur OutputBufferLength de zéro. La méthode répond en écrivant la longueur de mémoire tampon requise dans l’emplacement pointé par ResultantFormatLength et en retournant status code STATUS_BUFFER_OVERFLOW. L’appelant peut ensuite allouer une mémoire tampon de la taille requise et spécifier cette mémoire tampon dans un deuxième appel à DataRangeIntersection.

Si le pilote prend en charge KSPROPERTY_AUDIOSIGNALPROCESSING_MODES, cette méthode doit retourner ResultantFormat si le format est pris en charge par n’importe quel mode de traitement du signal audio.

Configuration requise

Condition requise Valeur
En-tête portcls.h
IRQL PASSIVE_LEVEL

Voir aussi

IMiniPort