共用方式為


IMiniport::D ataRangeIntersection 方法 (portcls.h)

DataRangeIntersection 方法會決定兩個數據範圍的最高品質交集。

語法

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

參數

PinId

指定釘選標識碼。 此參數會識別要判斷數據交集的針腳處理站。 如果篩選包含 n 個針腳處理站,有效的針腳標識碼範圍從 0 到 n-1。

DataRange

KSDATARANGE 結構的指標,其中包含客戶端在數據範圍交集屬性要求中送出的數據範圍。

MatchingDataRange

KSDATARANGE 結構的指標,其中包含要與客戶端數據範圍比較的迷你埠驅動程序數據範圍。

OutputBufferLength

指定 ResultantFormat 參數所指向之緩衝區的位元元組大小。 呼叫端可以將 OutputBufferLength 指定為零,以查詢所需的緩衝區大小。 如需詳細資訊,請參閱下列一節。

ResultantFormat

方法寫入結果格式之緩衝區的指標。 如果此參數為 NULL,OutputBufferLength 參數必須是零。 如果非 NULL,此參數必須指向足以包含 OutputBufferLength 中所指定位元元組數目的緩衝區。

ResultantFormatLength

結果格式長度的輸出指標。 此參數會指向呼叫端配置的 ULONG 變數,方法會將結果格式的長度寫入其中。 這是寫入 ResultantFormat 所指向之緩衝區的結果格式位元元組大小。 此大小必須小於或等於 OutputBufferLength(除非 OutputBufferLength 為零;請參閱下列一節)。

返回值

此方法會傳回NTSTATUS,如果呼叫成功,則包含STATUS_SUCCESS。 如果 OutputBufferLength 參數指定為零,則方法會傳回STATUS_BUFFER_OVERFLOW。 否則,方法會傳回適當的錯誤碼。 下表顯示一些可能的傳回狀態代碼。

回傳碼 說明
STATUS_NO_MATCH 沒有交集。
STATUS_NOT_IMPLEMENTED 將數據交集處理延遲至埠驅動程序的預設數據交集處理程式。
STATUS_BUFFER_TOO_SMALL OutputBufferLength 中指定的緩衝區長度不是零,但太小,無法保存結果格式。

備註

DataRangeIntersection 方法是迷你埠驅動程序的數據交集處理程式。 當埠驅動程式收到數據範圍交集屬性要求時,埠驅動程式會呼叫這個方法(請參閱 KSPROPERTY_PIN_DATAINTERSECTION),而要求的目標則是迷你埠驅動程式所實作之篩選實例上的針腳處理站。

ResultantFormat 參數會指向以 KSDATAFORMAT_WAVEFORMATEX 結構開頭的緩衝區。 請注意,此結構的 WaveFormatEx 成員可以擴充以包含其他格式資訊(例如通道組態遮罩)。 如需詳細資訊,請參閱 WAVEFORMATEXTENSIBLE

ResultantFormat 參數是選擇性的,可以指定為 NULL,在此情況下,OutputBufferLength 必須指定為零。 呼叫端可以透過對具有 OutputBufferLength 值為零的初始呼叫 DataRangeIntersection 來查詢所需的緩衝區長度。 方法會藉由將必要的緩衝區長度寫入 ResultantFormatLength 所指向的位置,並傳回狀態代碼STATUS_BUFFER_OVERFLOW來回應。 呼叫端接著可以配置所需大小的緩衝區,並在對 DataRangeIntersection 的第二次呼叫中指定這個緩衝區。

如果驅動程式支援KSPROPERTY_AUDIOSIGNALPROCESSING_MODES,如果任何音訊號處理模式支援格式,這個方法應該會傳回 ResultantFormat

需求

要求 價值
標題 portcls.h
IRQL PASSIVE_LEVEL

另請參閱

IMiniPort