Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
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)