다음을 통해 공유


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

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

Context

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

Id

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

Communication

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

ConnectionIsExternal

이 멤버는 TRUE 경우 연결된 핀이 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 바이트). 클라이언트가 이 멤버를 설정하지 않으면 스트림 헤더를 따르는 확장된 정보가 없음을 나타냅니다. 이러한 경우 각 스트림 헤더는 (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 이전 값으로 롤백합니다. 상태 전환에 실패하고 처리 중에 이 멤버를 확인하는 미니 드라이버는 이 이벤트 시퀀스를 알고 있어야 합니다.

발언

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

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

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

개체 모음 참조하세요.

요구 사항

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

참고 항목

KSPIN_DESCRIPTOR

KSPIN_DESCRIPTOR_EX

KSPIN_DISPATCH

KsAddItemToObjectBag

KsCompletePendingRequest