Freigeben über


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. Daher sind ihre Definitionen identisch.

Syntax

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

Members

Set

Gibt eine GUID an, die einen Kernelstreaming-Eigenschaftensatz identifiziert. For more information about property set GUIDs, see the Remarks section below.

Id

Gibt das Element des Eigenschaftensatzes an.

Flags

Gibt den Anforderungstyp an. 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. Einige der Flags können mit einem bitweisen OR-Vorgang kombiniert werden.

Value Description
KSPROPERTY_TYPE_GET Ruft den Wert des angegebenen Eigenschaftselements ab.
KSPROPERTY_TYPE_SET Legt den Wert des angegebenen Eigenschaftselements fest.
KSPROPERTY_TYPE_SETSUPPORT Fragt ab, ob der Treiber diesen Eigenschaftensatz unterstützt.
KSPROPERTY_TYPE_BASICSUPPORT Fragt die Anforderungstypen ab, die der Treiber für dieses Eigenschaftselement behandelt. Returns KSPROPERTY_TYPE_GET or KSPROPERTY_TYPE_SET or both. Alle Eigenschaftensätze müssen dieses Flag unterstützen.
KSPROPERTY_TYPE_DEFAULTVALUES Fragt die Standardwerte für das angegebene Eigenschaftselement ab. Returns a structure of type KSPROPERTY_VALUES.
KSPROPERTY_TYPE_RELATIONS Fragt alle Eigenschaften mit Abhängigkeiten von der aktuellen Einstellung dieser Eigenschaft ab. Gibt an, dass die Eigenschaftsbeziehungenliste zurückgegeben werden soll, oder die Menge des Pufferraums, der für eine solche Liste erforderlich ist, wenn der Rückgabepuffer die Größe eines ULONG-Objekts ist. Each element is on FILE_QUAD_ALIGNMENT, preceded by a KSMULTIPLE_ITEM structure. Dies ist beim Abfragen der Unterstützung des Eigenschaftensatzes im Allgemeinen ungültig. Alle Eigenschaftensätze müssen dieses Flag unterstützen.
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. Eine Größe von Null gibt an, dass eine Eigenschaft nicht serialisiert werden muss.
KSPROPERTY_TYPE_SERIALIZERAW Gibt an, dass die Eigenschaften in diesem Satz vom Unterstützungshandler des Eigenschaftensatzes serialisiert werden sollen, sofern vorhanden. Wenn nicht, schlägt der Anruf fehl. Das Serialisierungsformat ist privat. 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. Legen Sie diese Kennzeichnung nicht selbst fest; Stattdessen OR it with other flags in this table.
KSPROPERTY_TYPE_UNSERIALIZERAW Gibt an, dass der bereitgestellte Puffer eine Gruppe von Eigenschaften enthält, die zu diesem Satz gehören, die vom Unterstützungshandler für den Eigenschaftensatz nichtialisiert werden sollen, falls vorhanden. Wenn nicht, schlägt der Anruf fehl. Das Serialisierungsformat ist privat. This operation must be the inverse of KSPROPERTY_TYPE_SERIALIZERAW.

Remarks

Die Größe des übergebenen Ausgabepuffers bestimmt, welche Daten aus einer KSPROPERTY_TYPE_BASICSUPPORT Anforderung zurückgegeben werden. Wenn der Ausgabepuffer die Größe einer ULONG-Datei hat, werden nur die Zugriffskennzeichnungen zurückgegeben. 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.

Bei einer KSPROPERTY_TYPE_RELATIONS Anforderung hängt die zurückgegebenen Daten auch von der Größe des Ausgabepuffers ab. 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. Bei Verwendung dieses Handlers steuert der Eigenschaftensatz, welche Eigenschaften serialisiert werden sollen.

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. Wenn der Wert des SerializedSize-Elements 1 ist, ist es unbekannt und muss abgefragt werden (alle unbekannten Eigenschaften beginnen mit einer KSMULTIPLE_ITEM Struktur, die separat abgefragt werden kann). 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. Ein puffer, der dieser Größe zugeordnet ist, kann dann mit den serialisierten Daten gefüllt werden.

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. Die für die Serialisierung erforderliche Puffergröße kann auch abgefragt werden, indem ein Puffer der Länge Null an eine Serialisierungsanforderung übergeben wird. 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. Dieser Handler kann mit mehreren Eigenschaften innerhalb des Satzes umgehen.

Microsoft stellt mehrere systemdefinierte Eigenschaftensatz-GUIDs bereit. 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.

Weitere Informationen zu Kernelstreamingereignissen finden Sie unter KS-Eigenschaften, Ereignisse und Methoden.

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