KSPROCESSPIN 구조체(ks.h)

KSPROCESSPIN 구조체는 특정 핀의 프로세스 상태를 설명합니다.

구문

typedef struct _KSPROCESSPIN {
  PKSPIN            Pin;
  PKSSTREAM_POINTER StreamPointer;
  PKSPROCESSPIN     InPlaceCounterpart;
  PKSPROCESSPIN     DelegateBranch;
  PKSPROCESSPIN     CopySource;
  PVOID             Data;
  ULONG             BytesAvailable;
  ULONG             BytesUsed;
  ULONG             Flags;
  BOOLEAN           Terminate;
} KSPROCESSPIN, *PKSPROCESSPIN;

멤버

Pin

KSPROCESSPIN 구조체에서 설명하는 KSPIN 구조체에 대한 포인터입니다. 구조체의 모든 항목은 이 KSPIN을 참조합니다.

StreamPointer

현재 입력 위치의 입력 스트림 또는 현재 출력 위치의 출력 스트림을 가리키는 KSSTREAM_POINTER 구조체에 대한 포인터입니다. 예를 들어 출력 핀을 사용하여 관련 KSSTREAM_HEADER 정보를 스탬프할 수 있습니다(ProcessPin-StreamPointer-StreamHeader-Flags>>>=...).

InPlaceCounterpart

KSPROCESSPIN 구조체에 대한 포인터입니다. 이 KSPROCESSPIN이 inplace 변환의 일부가 아닌 경우 AVStream은 InPlaceCounterpartNULL로 설정합니다. 이 KSPROCESSPIN이 위치 변환에 대한 입력인 경우 InPlaceCounterpart 는 변환에 대한 출력 프로세스 핀을 가리킵니다. 이 KSPROCESSPIN이 inplace 변환의 출력인 경우 InPlaceCounterpart 는 변환에 대한 입력 프로세스 핀을 가리킵니다.

DelegateBranch

KSPROCESSPIN 구조체에 대한 포인터입니다. 이 KSPROCESSPIN에서 나오는 프레임이 분할되어 여러 싱크 핀으로 전송되고 분할로 인해 데이터 복사가 발생하지 않는 경우(즉, 분할은 읽기 전용 방식으로 프레임을 보내고 모든 분할 핀 인스턴스는 동일한 파이프에 있음) DelegateBranch는 프로세스 핀의 첫 번째 instance 가리킵니다. 분할자는 NULL이 아닌 DelegateBranch가 있는 모든 프로세스 핀을 자동으로 처리합니다.

CopySource

KSPROCESSPIN 구조체에 대한 포인터입니다. 이 프로세스 핀에서 나오는 프레임이 분할되어 데이터 복사를 유발하는 방식으로 여러 싱크 핀으로 전송되는 경우(즉, 다운스트림 필터 중 하나가 현재 위치 변환을 사용하여 데이터 프레임을 수정하는 경우) CopySource 는 프레임이 복사된 프로세스 핀을 가리킵니다. 분할기에서는 NULL이 아닌 CopySource가 있는 모든 프로세스 핀을 자동으로 처리합니다.

Data

버퍼에 대한 포인터입니다. 이 프로세스 항목에서 설명하는 핀이 입력 핀인 경우 데이터는 입력할 데이터의 다음 사용 가능한 바이트를 가리킵니다. 이 프로세스 항목에서 설명하는 핀이 출력 핀인 경우 데이터는 처리된 데이터가 배치되는 출력 버퍼를 가리킵니다.

BytesAvailable

이 멤버는 데이터에서 사용할 수 있는 데이터의 바이트 수를 지정합니다.

BytesUsed

이 멤버는 프로세스 함수에서 사용된 이 데이터 프레임의 바이트 수를 지정합니다. AVStream 드라이버는 이 멤버를 설정하여 읽거나 쓴 양을 업데이트해야 합니다.

Flags

이 KSPROCESSPIN이 입력 핀인 경우 이 멤버는 관련 KSSTREAM_HEADER 구조체의 플래그 복사본을 포함합니다.

Terminate

이 멤버는 프로세스 디스패치가 완료된 후 현재 데이터 프레임을 다운스트림으로 보내야 하는지 여부를 나타냅니다. TRUE이면 모든 데이터가 사용되지 않은 경우에도 프레임이 다운스트림으로 전송됩니다. FALSE이면 모든 데이터를 사용할 때까지 프레임이 해제되지 않습니다.

설명

KSPROCESSPIN 구조체는 필터 중심 처리 모델에 사용됩니다. 이 구조를 사용하여 특정 입력 핀의 데이터에 액세스하거나 처리된 데이터를 출력 핀에 쓸 수 있습니다.

필터 중심 클라이언트만 프로세스 핀을 사용합니다. 또한 NULL이 아닌 DelegateBranch 또는 NULL이 아닌CopySource가 있는 프로세스 핀은 일반적으로 클라이언트에 문제가 되지 않습니다. 분할기에서는 이러한 포인터를 사용하여 프로세스 핀을 자동으로 처리합니다.

대부분의 클라이언트는 Pin, Data, BytesAvailable, BytesUsed, FlagsTerminate 멤버와 관련이 있습니다. 스트림에서 데이터를 읽거나 데이터 멤버를 통해 스트림에 쓸 수 있습니다. BytesAvailable데이터가 가리키는 현재 데이터 프레임(버퍼)에서 사용할 수 있는 데이터의 바이트 수를 클라이언트에 알려줍니다. 클라이언트 미니드라이버가 스트림에서 읽거나 쓸 때 사용된 데이터의 바이트 수를 반영하도록 BytesUsed 를 업데이트해야 합니다. BytesUsedBytesAvailable과 같지 않음에도 불구하고 미니드라이버가 현재 프레임으로 수행되면 Terminate 플래그를 설정할 수 있습니다. 미니드라이버가 처리 디스패치를 종료하면 포인터가 고급화되고 프레임이 적절하게 완료됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Microsoft Windows XP 이상 운영 체제 및 Microsoft DirectX 8.0 이상 버전에서 사용할 수 있습니다.
머리글 ks.h(Ks.h 포함)

추가 정보

KSPIN

KSPROCESSPIN_INDEXENTRY

KSSTREAM_HEADER

KSSTREAM_POINTER