共用方式為


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。 否則,方法會傳回適當的錯誤碼。 下表顯示一些可能的傳回狀態代碼。

傳回碼 Description
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