IMiniport::D ataRangeIntersection 메서드(portcls.h)

DataRangeIntersection 메서드는 두 데이터 범위의 최고 품질의 교차점을 결정합니다.

구문

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

매개 변수

PinId

핀 ID를 지정합니다. 이 매개 변수는 데이터 교차가 결정되는 핀 팩터리를 식별합니다. 필터에 n 핀 팩터리를 포함하는 경우 유효한 핀 ID 범위는 0에서 n-1까지입니다.

DataRange

데이터 범위 교차 속성 요청에서 클라이언트가 제출한 데이터 범위를 포함하는 KSDATARANGE 구조체에 대한 포인터입니다.

MatchingDataRange

클라이언트의 데이터 범위와 비교할 미니포트 드라이버의 데이터 범위를 포함하는 KSDATARANGE 구조체에 대한 포인터입니다.

OutputBufferLength

ResultantFormat 매개 변수가 가리키는 버퍼의 크기(바이트)를 지정합니다. 호출자는 필요한 버퍼 크기를 쿼리하기 위해 OutputBufferLength를 0으로 지정할 수 있습니다. 자세한 내용은 아래 설명 부분을 참조하십시오.

ResultantFormat

메서드가 결과 형식을 작성하는 버퍼에 대한 포인터입니다. 이 매개 변수가 NULL이면 OutputBufferLength 매개 변수는 0이어야 합니다. NULL이 아닌 경우 이 매개 변수는 OutputBufferLength에 지정된 바이트 수를 포함할 만큼 큰 버퍼를 가리킵니다.

ResultantFormatLength

결과 형식 길이에 대한 출력 포인터입니다. 이 매개 변수는 메서드가 결과 형식의 길이를 쓰는 호출자가 할당한 ULONG 변수를 가리킵니다. ResultantFormat이 가리키는 버퍼에 기록되는 결과 형식의 크기(바이트)입니다. 이 크기는 OutputBufferLength보다 작거나 같아야 합니다(OutputBufferLength가 0이 아니면 다음 설명 섹션 참조).

반환 값

이 메서드는 호출이 성공한 경우 STATUS_SUCCESS 포함하는 NTSTATUS를 반환합니다. OutputBufferLength 매개 변수가 0으로 지정된 경우 메서드는 STATUS_BUFFER_OVERFLOW 반환합니다. 그렇지 않으면 메서드는 적절한 오류 코드를 반환합니다. 다음 표에서는 가능한 반환 상태 코드 중 일부를 보여 줍니다.

반환 코드 설명
STATUS_NO_MATCH 교집합이 없습니다.
STATUS_NOT_IMPLEMENTED 데이터 교차 처리를 포트 드라이버의 기본 데이터 교차 처리기로 연기합니다.
STATUS_BUFFER_TOO_SMALL OutputBufferLength에 지정된 버퍼 길이는 0이 아니지만 결과 형식을 보유하기에는 너무 작습니다.

설명

DataRangeIntersection 메서드는 미니포트 드라이버의 데이터 교차 처리기입니다. 포트 드라이버는 데이터 범위 교차 속성 요청(KSPROPERTY_PIN_DATAINTERSECTION 참조)을 수신할 때 이 메서드를 호출하고 요청 대상은 미니포트 드라이버가 구현하는 필터 instance 핀 팩터리입니다.

ResultantFormat 매개 변수는 KSDATAFORMAT_WAVEFORMATEX 구조체로 시작하는 버퍼를 가리킵니다. 이 구조체의 WaveFormatEx 멤버를 확장하여 추가 형식 정보(예: 채널 구성 마스크)를 포함할 수 있습니다. 자세한 내용은 WAVEFORMATEXTENSIBLE을 참조하세요.

ResultantFormat 매개 변수는 선택 사항이며 NULL로 지정할 수 있습니다. 이 경우 OutputBufferLength를 0으로 지정해야 합니다. 호출자는 OutputBufferLength 값이 0인 DataRangeIntersection에 대한 초기 호출을 통해 필요한 버퍼 길이를 쿼리할 수 있습니다. 메서드는 ResultantFormatLength가 가리키는 위치에 필요한 버퍼 길이를 쓰고 코드 STATUS_BUFFER_OVERFLOW 상태 반환하여 응답합니다. 그런 다음 호출자는 필요한 크기의 버퍼를 할당하고 DataRangeIntersection에 대한 두 번째 호출에서 이 버퍼를 지정할 수 있습니다.

드라이버가 KSPROPERTY_AUDIOSIGNALPROCESSING_MODES 지원하는 경우 형식이 오디오 신호 처리 모드에서 지원되는 경우 이 메서드는 ResultantFormat 을 반환해야 합니다.

요구 사항

요구 사항
헤더 portcls.h
IRQL PASSIVE_LEVEL

추가 정보

IMiniPort