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 | GetSupported가 TRUE이면 스트림 클래스 드라이버는 적절한 미니드라이버 StrMiniReceiveXXXRequest 루틴에 SRB_GET_DEVICE_PROPERTY 또는 SRB_GET_STREAM_PROPERTY 요청을 제출합니다. |
KSPROPERTY_TYPE_SET | SetSupported가 TRUE이면 스트림 클래스 드라이버는 적절한 미니 드라이버 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 포함) |