IMiniport ::D ataRangeIntersection, méthode (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 d’épingle. Ce paramètre identifie la fabrique d’épingles pour laquelle l’intersection de données est déterminée. Si le filtre contient n fabriques d’épingles, les ID de broche valides vont de 0 à n-1.
DataRange
Pointeur vers une structure KSDATARANGE qui contient la plage de données soumise 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 par le paramètre ResultantFormat. L’appelant peut spécifier OutputBufferLength comme zéro pour rechercher la taille de mémoire tampon requise. Pour plus d’informations, consultez la section Remarques suivante.
ResultantFormat
Pointeur vers la mémoire tampon dans laquelle la méthode écrit le format résultant. Si ce paramètre est NULL, le paramètre OutputBufferLength doit être égal à zéro. Si la valeur n’est pas NULL, ce paramètre doit pointer vers une mémoire tampon suffisamment grande pour contenir le nombre d’octets spécifiés 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 écrit dans la mémoire tampon pointée par ResultantFormat. Cette taille doit être inférieure ou égale à OutputBufferLength (sauf si OutputBufferLength est zéro ; consultez la section Remarques suivante).
Valeur de retour
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 d’état de retour possibles.
Retourner le code | 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 la mémoire tampon spécifiée dans OutputBufferLength était différente de zéro, mais elle é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 une instance de filtre que le pilote miniport implémente.
Le paramètre ResultantFormat pointe vers une mémoire tampon commençant 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é en tant que NULL, auquel cas OutputBufferLength doit être spécifié comme zéro. L’appelant peut interroger la longueur de la 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 à l’emplacement pointé par ResultantFormatLength et en retournant le code d’état 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 retourne ResultantFormat si le format est pris en charge par n’importe quel mode de traitement du signal audio.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | portcls.h |
IRQL | PASSIVE_LEVEL |