IMiniport::D ataRangeIntersection-Methode (portcls.h)

Die DataRangeIntersection-Methode bestimmt die schnittmenge von zwei Datenbereichen mit der höchsten Qualität.

Syntax

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

Parameter

PinId

Gibt die Pin-ID an. Dieser Parameter identifiziert die Pinfactory, für die die Daten schnittmenge bestimmt wird. Wenn der Filter n Pin-Fabriken enthält, reichen gültige Pin-IDs von 0 bis n-1.

DataRange

Zeiger auf eine KSDATARANGE-Struktur, die den datenbereich enthält, der vom Client in der Datenbereichs-Eigenschaftsanforderung übermittelt wurde.

MatchingDataRange

Zeiger auf eine KSDATARANGE-Struktur, die den Datenbereich des Miniporttreibers enthält, der mit dem Datenbereich des Clients verglichen werden soll.

OutputBufferLength

Gibt die Größe des Puffers in Byte an, auf den der ResultantFormat-Parameter verweist. Der Aufrufer kann OutputBufferLength als Null angeben, um die erforderliche Puffergröße abzufragen. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise".

ResultantFormat

Zeiger auf den Puffer, in den die Methode das resultierende Format schreibt. Wenn dieser Parameter NULL ist, muss der OutputBufferLength-Parameter null sein. Wenn dieser Parameter nicht NULL ist, muss dieser Parameter auf einen Puffer verweisen, der groß genug ist, um die in OutputBufferLength angegebene Anzahl von Bytes zu enthalten.

ResultantFormatLength

Ausgabezeiger für die Länge des Ergebnisformats. Dieser Parameter verweist auf eine vom Aufrufer zugewiesene ULONG-Variable, in die die Methode die Länge des resultierenden Formats schreibt. Dies ist die Größe des resultierenden Formats in Byte, das in den Puffer geschrieben wird, auf den resultantFormat verweist. Diese Größe muss kleiner oder gleich OutputBufferLength sein (es sei denn, OutputBufferLength ist 0( siehe den folgenden Abschnitt "Hinweise").

Rückgabewert

Diese Methode gibt NTSTATUS zurück, das STATUS_SUCCESS enthält, wenn der Aufruf erfolgreich war. Wenn der OutputBufferLength-Parameter als null angegeben wurde, gibt die Methode STATUS_BUFFER_OVERFLOW zurück. Andernfalls gibt die Methode einen geeigneten Fehlercode zurück. In der folgenden Tabelle sind einige der möglichen Rückgabecodes status aufgeführt.

Rückgabecode Beschreibung
STATUS_NO_MATCH Es gibt keine Schnittmenge.
STATUS_NOT_IMPLEMENTED Verschiebt die Datenschnittbehandlung auf den Standardhandler für die Datenkreuzung des Porttreibers.
STATUS_BUFFER_TOO_SMALL Die in OutputBufferLength angegebene Pufferlänge war ungleich null, aber zu klein, um das resultierende Format zu halten.

Hinweise

Die DataRangeIntersection-Methode ist der Datenüberschneidungshandler des Miniporttreibers. Der Porttreiber ruft diese Methode auf, wenn er eine Anforderung der Datenbereichsüberschneidungseigenschaft empfängt (siehe KSPROPERTY_PIN_DATAINTERSECTION), und das Ziel für die Anforderung ist eine Pinfactory für einen Filter instance, den der Miniporttreiber implementiert.

Der Parameter ResultantFormat verweist auf einen Puffer, der mit einer KSDATAFORMAT_WAVEFORMATEX-Struktur beginnt. Beachten Sie, dass das WaveFormatEx-Element dieser Struktur erweitert werden kann, um zusätzliche Formatinformationen (z. B. eine Kanalkonfigurationsmaske) einzuschließen. Weitere Informationen finden Sie unter WAVEFORMATEXTENSIBLE.

Der Parameter ResultantFormat ist optional und kann als NULL angegeben werden. In diesem Fall muss OutputBufferLength als null angegeben werden. Der Aufrufer kann die erforderliche Pufferlänge abfragen, indem er einen ersten Aufruf von DataRangeIntersection mit dem OutputBufferLength-Wert 0 ausführt. Die -Methode antwortet, indem sie die erforderliche Pufferlänge an die Position schreibt, auf die resultantFormatLength verweist, und status Code STATUS_BUFFER_OVERFLOW zurückgibt. Der Aufrufer kann dann einen Puffer der erforderlichen Größe zuordnen und diesen Puffer in einem zweiten Aufruf von DataRangeIntersection angeben.

Wenn der Treiber KSPROPERTY_AUDIOSIGNALPROCESSING_MODES unterstützt, gibt diese Methode ResultantFormat zurück, wenn das Format von einem Audiosignalverarbeitungsmodus unterstützt wird.

Anforderungen

Anforderung Wert
Header portcls.h
IRQL PASSIVE_LEVEL

Weitere Informationen

IMiniPort