KSPROPERTY_ITEM 구조체(ks.h)

드라이버는 KSPROPERTY_ITEM 구조를 사용하여 속성 집합의 속성을 지원하는 방법을 설명합니다.

구문

typedef struct {
  ULONG                   PropertyId;
  union {
    PFNKSHANDLER GetPropertyHandler;
    BOOLEAN      GetSupported;
  };
  ULONG                   MinProperty;
  ULONG                   MinData;
  union {
    PFNKSHANDLER SetPropertyHandler;
    BOOLEAN      SetSupported;
  };
  const KSPROPERTY_VALUES *Values;
  ULONG                   RelationsCount;
  const KSPROPERTY        *Relations;
  PFNKSHANDLER            SupportHandler;
  ULONG                   SerializedSize;
} KSPROPERTY_ITEM, *PKSPROPERTY_ITEM;

멤버

PropertyId

설명 중인 속성의 ID를 지정합니다.

GetPropertyHandler

미니드라이버 제공 KStrGetPropertyHandler에 대한 포인터입니다. NULL이면 속성을 읽을 수 없습니다. 이 멤버는 AVStream 또는 Stream 클래스 인터페이스를 사용하는 드라이버에서만 사용됩니다.

GetSupported

이 속성이 요청 가져오기를 지원하는 경우 TRUE 로, 그렇지 않으면 FALSE 로 설정합니다. (클래스 드라이버는 SRB_GET_DEVICE_PROPERTY 또는 SRB_GET_STREAM_PROPERTY 요청을 통해 요청을 수행합니다.) 이 멤버는 스트림 클래스에서 실행되는 미니 드라이버에서만 사용됩니다.

MinProperty

속성 식별자를 보유할 최소 버퍼 길이를 지정합니다. 최소 sizeof(KSPROPERTY)여야 합니다.

MinData

이 속성에서 읽거나 이 속성에 기록된 데이터를 저장할 최소 버퍼 길이를 지정합니다.

SetPropertyHandler

미니드라이버 제공 KStrSetPropertyHandler에 대한 포인터입니다. NULL이면 속성을 설정할 수 없습니다. 이 멤버는 AVStream 또는 Stream 클래스 인터페이스를 사용하는 드라이버에서만 사용됩니다.

SetSupported

이 속성이 set requests를 지원하는 경우 TRUE 로, 그렇지 않으면 FALSE 로 설정합니다. 클래스 드라이버는 SRB_SET_DEVICE_PROPERTY 또는 SRB_SET_STREAM_PROPERTY 요청을 통해 요청을 수행합니다.

Values

형식 KSPROPERTY_VALUES 구조체에 대한 포인터입니다. 속성에 허용되는 및/또는 기본값을 지정합니다. 이는 KSPROPERTY_TYPE_BASICSUPPORT 및 KSPROPERTY_TYPE_DEFAULTVALUES 플래그가 설정된 IOCTL_KS_PROPERTY 요청에 대한 응답으로 드라이버가 보고한 값과 동일합니다.

RelationsCount

Relations 멤버가 가리키는 배열의 항목 수를 지정합니다.

Relations

이 구조체와 관련된 속성을 나타내는 KSPROPERTY 구조체의 배열을 가리킵니다. 한 속성을 변경하면 다른 속성의 값에 영향을 줄 수 있는 경우 두 속성이 관련된 것으로 간주됩니다. 각 항목의 Flags 멤버는 사용되지 않습니다.

SupportHandler

원시 직렬화 또는 원시 비직렬화를 위해 고유한 형식을 구현하는 경우에만 이 멤버를 제공합니다. 기본 지원 쿼리, 범위 쿼리 및 관계 쿼리는 AVStream에서 자동으로 처리되며, AVStream은 이 KSPROPERTY_ITEM 구조의 다른 멤버로부터 관련 값을 반환합니다.

SerializedSize

KSPROPERTY_TYPE_SERIALIZESET 요청에서 serialize할 때 속성의 크기를 지정합니다. 속성을 serialize할 수 없는 경우 0이어야 합니다. 자세한 내용은 KSPROPERTY 를 참조하세요.

설명

Stream 클래스 미니 드라이버는 KSPROPERTY_ITEM 사용하여 집합 내의 각 속성에 대한 속성 요청을 수행하는 방법을 클라이언트에 설명합니다. 전체 속성 집합에 대한 처리는 KSPROPERTY_ITEM 구조체의 배열에 대한 포인터를 포함하는 KSPROPERTY_SET 구조체에 지정됩니다.

스트림 클래스 드라이버는 미니드라이버를 대신하여 속성 요청을 처리합니다. 스트림 클래스 드라이버에 미니 드라이버의 추가 정보가 필요한 경우 미니 드라이버의 StrMiniReceiveXXXRequest 루틴 중 하나에 SRB_XXX 요청을 전달합니다. 스트림 클래스 드라이버는 다음 표에 나열된 대로 다양한 요청 유형을 처리합니다.

속성 요청 플래그 값 응답
KSPROPERTY_TYPE_GET GetSupportedTRUE이면 스트림 클래스 드라이버는 적절한 미니드라이버 StrMiniReceiveXXXRequest 루틴에 SRB_GET_DEVICE_PROPERTY 또는 SRB_GET_STREAM_PROPERTY 요청을 제출합니다.
KSPROPERTY_TYPE_SET SetSupportedTRUE이면 스트림 클래스 드라이버는 적절한 미니 드라이버 StrMiniReceiveXXXRequest 루틴에 SRB_SET_DEVICE_PROPERTY 또는 SRB_SET_STREAM_PROPERTY 요청을 제출합니다.
KSPROPERTY_TYPE_BASICSUPPORT 스트림 클래스 드라이버는 KSPROPERTY_ITEM 사용하여 이 요청을 수행하는 데 필요한 정보를 가져옵니다. 예를 들어 속성 데이터의 데이터 형식 및 허용된 범위를 지정하려면 각각 이 구조체의 Values 멤버를 사용합니다.
KSPROPERTY_TYPE_SETSUPPORT 스트림 클래스 드라이버는 드라이버가 KSPROPERTY_SET 구조 내에서 설정된 속성에 대한 항목을 제공하는 경우에만 속성 요청 IRP를 STATUS_SUCCESS 완료합니다.
KSPROPERTY_TYPE_DEFAULTVALUES 스트림 클래스 드라이버는 이 구조체의 Values 멤버를 사용하여 속성 데이터의 기본값을 결정합니다.
KSPROPERTY_TYPE_RELATIONS 스트림 클래스 드라이버는 Relations 멤버를 사용하여 이 속성과 관련된 속성을 확인합니다.

클라이언트가 KSPROPERTY_TYPE_DEFAULTVALUES 지정하는 경우 드라이버는 데이터 버퍼를 사용하여 허용되는 범위와 기본값을 포함하여 해당 값 형식에 대한 설명을 반환합니다. 이 플래그는 반환된 값이 구조체 KSPROPERTY_MEMBERSHEADER Flags 멤버에 KSPROPERTY_MEMBER_FLAG_DEFAULT 표시된 값이라는 점을 제외하고 KSPROPERTY_TYPE_BASICSUPPORT 결과와 비슷합니다.

자세한 내용은 KS 속성을 참조하세요.

요구 사항

요구 사항
헤더 ks.h(Ks.h 포함)

추가 정보

KSPROPERTY

KSPROPERTY_SET

KSPROPERTY_VALUES

SRB_GET_DEVICE_PROPERTY

SRB_GET_STREAM_PROPERTY

SRB_SET_DEVICE_PROPERTY

SRB_SET_STREAM_PROPERTY