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 |