Поделиться через


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. Размер нуля указывает, что свойство не требует сериализации.
KSPROPERTY_TYPE_SERIALIZERAW Указывает, что свойства в этом наборе должны сериализоваться обработчиком поддержки набора свойств, если он существует. В противном случае вызов завершается ошибкой. Формат сериализации является частным. 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 Указывает, что предоставленный буфер содержит группу свойств, принадлежащих этому набору, который должен быть несериализирован обработчиком поддержки набора свойств, если он существует. В противном случае вызов завершается ошибкой. Формат сериализации является частным. 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. При использовании этого обработчика определение набора свойств определяет, какие свойства необходимо сериализовать.

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. Размер буфера, необходимый для сериализации, также может запрашиваться путем передачи буфера нулевой длины в сериализуемый необработанный запрос. 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. Этот обработчик может иметь дело с несколькими свойствами в наборе.

Корпорация Майкрософт предоставляет несколько определяемых системой идентификаторов идентификаторов свойств. 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