KSPIN 구조체(ks.h)

KSPIN 구조체는 인스턴스화된 핀을 설명합니다.

구문

typedef struct _KSPIN {
  const KSPIN_DESCRIPTOR_EX *Descriptor;
  KSOBJECT_BAG              Bag;
  PVOID                     Context;
  ULONG                     Id;
  KSPIN_COMMUNICATION       Communication;
  BOOLEAN                   ConnectionIsExternal;
  KSPIN_INTERFACE           ConnectionInterface;
  KSPIN_MEDIUM              ConnectionMedium;
  KSPRIORITY                ConnectionPriority;
  PKSDATAFORMAT             ConnectionFormat;
  PKSMULTIPLE_ITEM          AttributeList;
  ULONG                     StreamHeaderSize;
  KSPIN_DATAFLOW            DataFlow;
  KSSTATE                   DeviceState;
  KSRESET                   ResetState;
  KSSTATE                   ClientState;
} KSPIN, *PKSPIN;

멤버

Descriptor

이 특정 핀의 핀 설명자에 대한 포인터입니다. 자세한 내용은 KSPIN_DESCRIPTOR_EX 참조하세요.

Bag

이 멤버는 이 특정 핀 instance 대한 KSOBJECT_BAG(KSOBJECT_BAG 구조가 PVOID 형식과 동일)을 지정합니다. 개체 모음 은 동적 메모리를 특정 AVStream 개체와 연결하는 데 사용되는 구조체입니다. 핀 개체 모음의 모든 항목은 핀이 닫히면 자동으로 정리됩니다.

Context

버퍼에 대한 포인터입니다. 클라이언트는 컨텍스트를 사용하여 컨텍스트 정보를 특정 핀 instance 연결할 수 있습니다. 일반적으로 핀/스트림 확장에 사용되며 핀 디스패치 테이블에 제공된 디스패치 만들기에 할당됩니다. 컨텍스트 정보에 할당된 동적 메모리는 KsAddItemToObjectBag을 사용하여 핀 instance 개체 모음에 배치해야 합니다. 컨텍스트는 핀을 만들 때 부모 KSFILTERContext 멤버 값으로 초기화됩니다. AVStream 개체 계층 구조를 참조하세요.

Id

이 멤버는 핀 유형 식별자를 지정합니다. 지정된 필터 형식에 대해 제공되는 핀 설명자 배열의 인덱스입니다.

Communication

이 멤버는 KSPIN_COMMUNICATION_NONE, KSPIN_COMMUNICATION_SINK, KSPIN_COMMUNICATION_SOURCE, KSPIN_COMMUNICATION_BOTH 또는 KSPIN_COMMUNICATION_BRIDGE 지정합니다. 각 값의 의미는 KSPROPERTY_PIN_COMMUNICATION 참조하세요.

ConnectionIsExternal

이 멤버는 연결된 핀이 AVStream 연결 핸드셰이크를 지원하지 않음을 나타내는 부울 값을 지정합니다. FALSE이면 연결된 핀이 AVStream 연결 핸드셰이크를 지원한다는 것을 나타냅니다. 이는 이 핀과 핀이 연결된 핀 간의 연결이 두 AVStream 핀 간의 연결인지 여부를 나타냅니다.

ConnectionInterface

이 멤버에는 연결에 사용되는 인터페이스를 식별하는 KSPIN_INTERFACE 구조체가 포함되어 있습니다. 이 정보는 핀을 만들 때 그래프 작성기에서 제공합니다.

ConnectionMedium

이 멤버에는 이 핀이 사용해야 하는 연결 매체를 식별하는 KSPIN_MEDIUM 구조가 포함되어 있습니다. 이 정보는 핀을 만들 때 그래프 작성기에서 제공합니다.

ConnectionPriority

이 멤버에는 연결의 우선 순위를 지정하는 KSPRIORITY 구조체가 포함되어 있습니다. 이 정보는 핀을 만들 때 그래프 작성기에서 제공합니다.

ConnectionFormat

연결의 데이터 형식을 지정하는 KSDATAFORMAT 구조체에 대한 포인터입니다. 이 정보는 핀을 만들 때 그래프 작성기에서 처음에 제공하며 속성 액세스 또는 스트림에 삽입된 형식 변경 메시지를 통해 변경될 수 있습니다. 이 멤버에 대한 액세스는 필터 컨트롤 뮤텍스에 의해 동기화됩니다. 이 멤버는 클라이언트에서 변경하면 안 됩니다.

AttributeList

연결을 설명하기 위해 핀을 만드는 동안 제공되는 특성 목록을 지정하는 KSMULTIPLE_ITEM 구조체에 대한 포인터입니다. 이 핀의 데이터 흐름 방향(KSPIN_DATAFLOW_IN 또는 KSPIN_DATAFLOW_OUT)을 지정합니다. 이 정보는 핀의 정적 특성이며 핀 설명자에 표시됩니다. PASSIVE_LEVEL 위의 IRQL에서 액세스하기 위해 여기에 캐시됩니다.

StreamHeaderSize

이 멤버는 이 핀에 대한 각 KSSTREAM_HEADER 구조체의 크기(바이트 ) 를 나타냅니다. 일반적으로 출력 핀에 사용되는 클라이언트는 이를 sizeof (KSSTREAM_HEADER) 보다 큰 값으로 설정하고 확장 스트림 헤더를 할당할 수 있습니다(각 스트림 헤더는 StreamHeaderSize 바이트 길이). 클라이언트가 이 멤버를 설정하지 않으면 스트림 헤더를 따르는 확장된 정보가 없음을 나타냅니다. 이러한 상황에서 각 스트림 헤더는 정확하게 sizeof (KSSTREAM_HEADER)입니다. 클라이언트는 핀 만들기 디스패치에서 이를 설정할 수 있습니다.

DataFlow

이 멤버는 핀의 데이터 흐름 방향을 지정합니다. 가능한 설정은 KSPIN_DATAFLOW_IN KSPIN_DATAFLOW_OUT. 이 정보는 핀의 정적 특성이며 관련 KSPIN_DESCRIPTOR 구조에 나타납니다. PASSIVE_LEVEL 위의 IRQL에서 액세스하기 위해 여기에 캐시됩니다.

DeviceState

이 멤버에는 핀이 전환하라는 지시를 받은 상태를 식별하는 KSSTATE 형식의 열거형이 포함되어 있습니다. AVStrMiniPinSetDeviceState를 통해 보고되는 파이프의 상태와 반드시 같은 것은 아닙니다. 처음에 KSSTATE_STOP AVStream이 연결 상태 속성 집합 IOCTL을 받으면 이 멤버가 변경됩니다. 필터 컨트롤 뮤텍스를 사용하여 액세스가 동기화됩니다. 미니드라이버에서 이 멤버를 변경하면 안 됩니다. 아래의 주의 섹션을 참조하세요. ClientState 멤버도 참조하세요.

ResetState

이 멤버에는 핀의 현재 재설정 상태를 식별하는 KSRESET 형식의 열거형이 포함되어 있습니다. 가능한 설정은 KSRESET_BEGIN KSRESET_END. 이 멤버는 처음에 KSRESET_END 설정되며 속성 액세스를 통해 변경됩니다. 이 멤버에 대한 액세스는 필터 컨트롤 뮤텍스에 의해 동기화됩니다. 클라이언트는 이 멤버를 변경하면 안 됩니다.

ClientState

이 멤버는 핀이 현재 설정된 KSSTATE 를 지정합니다. AVStrMiniPinSetDeviceState가 호출되기 직전에 업데이트되었습니다. 이 콜백 루틴이 실패하면 AVStream은 ClientState 를 이전 값으로 롤백합니다. 상태 전환에 실패하고 처리하는 동안 이 멤버를 검사 미니 드라이버는 이 이벤트 시퀀스를 알고 있어야 합니다.

설명

여러 가지 면에서 핀은 필터 동작의 초점입니다. 이는 핀 구조에 많은 수의 멤버가 있다는 사실에 반영됩니다. 많은 미니드라이버가 핀 동작을 구체화하고 추가 핀 관련 컨텍스트를 유지해야 합니다. 상당히 일반적인 핀 동작이 있는 필터의 경우 추가 구체화 또는 컨텍스트가 필요하지 않습니다. 대부분의 경우 기본 핀 동작으로 충분합니다. 핀은 필터 중심 처리를 사용하여 액세스됩니다.

동기화를 위해 이 개체의 수명은 미니드라이버의 PreCreate 디스패치 함수가 호출되는 시점부터 시작하여 미니드라이버의 Close 디스패치 함수가 반환할 때 종료되는 간격이며, 함수가 STATUS_PENDING 반환하지 않는다고 가정합니다. STATUS_PENDING 반환하는 경우 클라이언트가 KsCompletePendingRequest를 호출하여 닫기 요청의 완료를 나타내면 개체의 수명이 종료됩니다.

미니 드라이버가 특정 KSSTATE로 이동하라는 지시를 받았는지 여부를 결정해야 하는 경우 KSPINDeviceState 멤버 값을 해당 상태와 비교하는 것은 신뢰할 수 있는 방법이 아닙니다. 대신 ClientState 멤버를 확인하거나 SetDeviceState 콜백에서 변수를 만든 다음 이 변수를 검사. SetDeviceStateKSPIN_DISPATCH 멤버입니다.

개체 모음도 참조하세요.

요구 사항

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

추가 정보

KSPIN_DESCRIPTOR

KSPIN_DESCRIPTOR_EX

KSPIN_DISPATCH

KsAddItemToObjectBag

KsCompletePendingRequest