다음을 통해 공유


KSPROPERTY structure

The KSPROPERTY structure specifies a single kernel streaming property within a property set.

The KSEVENT, KSMETHOD, and KSPROPERTY structures are aliases for the KSIDENTIFIER structure. 따라서 해당 정의는 동일합니다.

Syntax

struct KSPROPERTY {
  GUID Set;
  ULONG Id;
  ULONG Flags;
};

Members

Set

커널 스트리밍 속성 집합을 식별하는 GUID를 지정합니다. For more information about property set GUIDs, see the Remarks section below.

Id

속성 집합의 멤버를 지정합니다.

Flags

요청 유형을 지정합니다. If you are writing a stream class minidriver, also see KSPROPERTY_ITEM for class-specific flag information.

Flags should be one of the values listed in the following table. 일부 플래그는 비트 OR 연산을 사용하여 결합될 수 있습니다.

Value Description
KSPROPERTY_TYPE_GET 지정된 속성 항목의 값을 검색합니다.
KSPROPERTY_TYPE_SET 지정된 속성 항목의 값을 설정합니다.
KSPROPERTY_TYPE_SETSUPPORT 드라이버에서 이 속성 집합을 지원하는지 쿼리합니다.
KSPROPERTY_TYPE_BASICSUPPORT 드라이버가 이 속성 항목에 대해 처리하는 요청 형식을 쿼리합니다. Returns KSPROPERTY_TYPE_GET or KSPROPERTY_TYPE_SET or both. 모든 속성 집합은 이 플래그를 지원해야 합니다.
KSPROPERTY_TYPE_DEFAULTVALUES 지정된 속성 항목의 기본값을 쿼리합니다. Returns a structure of type KSPROPERTY_VALUES.
KSPROPERTY_TYPE_RELATIONS 이 속성의 현재 설정에 대한 종속성이 있는 모든 속성을 쿼리합니다. 반환 버퍼가 ULONG의 크기인 경우 속성 관계 목록을 반환하거나 이러한 목록에 필요한 버퍼룸의 양을 지정합니다. Each element is on FILE_QUAD_ALIGNMENT, preceded by a KSMULTIPLE_ITEM structure. 일반적으로 속성 집합의 지원을 쿼리할 때는 유효하지 않습니다. 모든 속성 집합은 이 플래그를 지원해야 합니다.
KSPROPERTY_TYPE_SERIALIZESET Serialize the property set, using the standard KSPROPERTY_SERIALHDR and KSPROPERTY_SERIAL structures.
KSPROPERTY_TYPE_UNSERIALIZESET Unserialize the property set, using the standard KSPROPERTY_SERIALHDR and KSPROPERTY_SERIAL structures.
KSPROPERTY_TYPE_SERIALIZESIZE Returns a ULONG specifying size of the property data when serialized as part of a KSPROPERTY_TYPE_SERIALIZESET request. 크기가 0이면 속성을 serialize할 필요가 없음을 나타냅니다.
KSPROPERTY_TYPE_SERIALIZERAW 이 집합의 속성이 있는 경우 속성 집합 지원 처리기에 의해 serialize되도록 지정합니다. 그렇지 않은 경우 호출이 실패합니다. serialization 형식은 private입니다. This operation must be the inverse of KSPROPERTY_TYPE_UNSERIALIZERAW.
KSPROPERTY_TYPE_TOPOLOGY Property passed is of type KSP_NODE, where NodeId indicates the numeric ID of the topology node. 이 플래그를 자체적으로 설정하지 마세요. 대신 이 테이블의 다른 플래그와 함께 추가합니다.
KSPROPERTY_TYPE_UNSERIALIZERAW 제공된 버퍼가 있는 경우 속성 집합 지원 처리기에 의해 초기화되지 않아야 하는 이 집합에 속하는 속성 그룹을 포함하도록 지정합니다. 그렇지 않은 경우 호출이 실패합니다. serialization 형식은 private입니다. This operation must be the inverse of KSPROPERTY_TYPE_SERIALIZERAW.

Remarks

전달된 출력 버퍼의 크기는 KSPROPERTY_TYPE_BASICSUPPORT 요청에서 반환되는 데이터를 결정합니다. 출력 버퍼가 ULONG의 크기이면 액세스 플래그만 반환됩니다. If the output buffer is the size of the KSPROPERTY_DESCRIPTION structure, the structure is filled with the access flags, the inclusive size of the entire values information, the property value type information, and the number of member lists that correspond to the structure.

KSPROPERTY_TYPE_RELATIONS 요청의 경우 반환되는 데이터도 출력 버퍼의 크기에 따라 달라집니다. If the output buffer size is zero, the size required to return the related properties is returned in BytesReturned with a warning status of STATUS_BUFFER_OVERFLOW. If the buffer is the size of a KSMULTIPLE_ITEM structure, both the byte size and count of relations is returned. Otherwise, the buffer is expected to be long enough to return the KSMULTIPLE_ITEM structure and all related property identifiers, which is returned as a list of KSIDENTIFIER structures.

KSPROPERTY_TYPE_SERIALIZESET and KSPROPERTY_TYPE_UNSERIALIZESET requests allow interaction with multiple properties with a single call from the client. If the kernel streaming handler is being used to process property requests, these are broken up into multiple calls by the KsPropertyHandler function. 이 처리기를 사용하는 경우 속성 집합 정의는 serialize할 속성을 제어합니다.

For serialization requests, the SerializedSize member of the relevant KSPROPERTY_ITEM structure is checked for a nonzero value that indicates the size, in bytes, of the property. SerializedSize 멤버의 값이 1이면 알 수 없으며 쿼리해야 합니다(알 수 없는 모든 속성은 개별적으로 쿼리할 수 있는 KSMULTIPLE_ITEM 구조로 시작). To query for the total size a serialization would take, the client passes a zero length buffer in the call to DeviceIoControl. BytesReturned then returns the size, in bytes, that the buffer must be to serialize the set, and a warning status of STATUS_BUFFER_OVERFLOW. 그런 다음, 해당 크기가 할당된 버퍼를 직렬화된 데이터로 채울 수 있습니다.

The format of the serialization buffer is a KSPROPERTY_SERIALHDR, followed by serialized properties. Each property that follows contains a header (KSPROPERTY_SERIAL), followed by the property data, with the start of each property on FILE_LONG_ALIGNMENT. Note that the serial header structure is defined to be on FILE_LONG_ALIGNMENT.

KSPROPERTY_TYPE_SERIALIZERAW and KSPROPERTY_TYPE_UNSERIALIZERAW are supported if a property item handler exists. The KsPropertyHandler function invokes the handler provided by the minidriver. 직렬화에 필요한 버퍼 크기는 길이가 0인 버퍼를 serialize 원시 요청에 전달하여 쿼리할 수도 있습니다. Because handlers are attached to property items rather than the property set, a specific item within the property set must be specified in the Property parameter. 이 처리기는 집합 내의 여러 속성을 처리할 수 있습니다.

Microsoft는 여러 시스템 정의 속성 집합 GUID를 제공합니다. Minidrivers specify one of these GUIDs in the Set member. Kernel streaming property sets typically begin with either a KSPROPSETID or a PROPSETID prefix. Kernel streaming property sets are defined in ks.h, ksmedia.h, bdamedia.h, and possibly other header files.

커널 스트리밍 이벤트에 대한 자세한 내용은 KS 속성, 이벤트 및 메서드참조하세요.

Requirements

Header: ks.h (include Ks.h)

See also

KSEVENT

KSMETHOD

KSIDENTIFIER

KSMETHOD_ITEM

KSE_NODE

KSPROPERTY_DESCRIPTION

KSPROPERTY_ITEM

KSMULTIPLE_ITEM

KsPropertyHandler

KSPROPERTY_SERIALHDR

KSPROPERTY_SERIAL