Compartilhar via


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. Dessa forma, suas definições são idênticas.

Syntax

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

Members

Set

Especifica um GUID que identifica um conjunto de propriedades de streaming de kernel. For more information about property set GUIDs, see the Remarks section below.

Id

Especifica o membro do conjunto de propriedades.

Flags

Especifica o tipo de solicitação. 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. Alguns dos sinalizadores podem ser combinados usando uma operação OR bit a bit.

Value Description
KSPROPERTY_TYPE_GET Recupera o valor do item de propriedade especificado.
KSPROPERTY_TYPE_SET Define o valor do item de propriedade especificado.
KSPROPERTY_TYPE_SETSUPPORT Consulta se o driver dá suporte a esse conjunto de propriedades.
KSPROPERTY_TYPE_BASICSUPPORT Consulta os tipos de solicitação que o driver manipula para este item de propriedade. Returns KSPROPERTY_TYPE_GET or KSPROPERTY_TYPE_SET or both. Todos os conjuntos de propriedades devem dar suporte a esse sinalizador.
KSPROPERTY_TYPE_DEFAULTVALUES Consulta os valores padrão do item de propriedade especificado. Returns a structure of type KSPROPERTY_VALUES.
KSPROPERTY_TYPE_RELATIONS Consulta todas as propriedades com dependências na configuração atual dessa propriedade. Especifica que a lista de relações de propriedade deve ser retornada ou a quantidade de sala de buffer necessária para essa lista se o buffer de retorno for do tamanho de um ULONG. Each element is on FILE_QUAD_ALIGNMENT, preceded by a KSMULTIPLE_ITEM structure. Isso não é válido ao consultar o suporte da propriedade definida em geral. Todos os conjuntos de propriedades devem dar suporte a esse sinalizador.
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. Um tamanho zero indica que uma propriedade não precisa ser serializada.
KSPROPERTY_TYPE_SERIALIZERAW Especifica que as propriedades nesse conjunto devem ser serializadas pelo manipulador de suporte do conjunto de propriedades, se houver. Caso contrário, a chamada falhará. O formato de serialização é privado. 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. Não defina esse sinalizador por conta própria; em vez disso, OU com outros sinalizadores nesta tabela.
KSPROPERTY_TYPE_UNSERIALIZERAW Especifica que o buffer fornecido contém um grupo de propriedades que pertencem a esse conjunto que devem ser nãoializadas pelo manipulador de suporte do conjunto de propriedades, se houver. Caso contrário, a chamada falhará. O formato de serialização é privado. This operation must be the inverse of KSPROPERTY_TYPE_SERIALIZERAW.

Remarks

O tamanho do buffer de saída passado determina quais dados são retornados de uma solicitação de KSPROPERTY_TYPE_BASICSUPPORT. Se o buffer de saída for do tamanho de um ULONG, somente os sinalizadores de acesso serão retornados. 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.

Para uma solicitação KSPROPERTY_TYPE_RELATIONS, os dados retornados também dependem do tamanho do buffer de saída. 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. Ao usar esse manipulador, a definição do conjunto de propriedades controla quais propriedades devem ser serializadas.

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. Se o valor do membro SerializedSize for 1, ele será desconhecido e deverá ser consultado (todas as propriedades desconhecidas começam com uma estrutura KSMULTIPLE_ITEM que pode ser consultada separadamente). 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. Um buffer alocado desse tamanho pode ser preenchido com os dados serializados.

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. O tamanho do buffer necessário para serialização também pode ser consultado passando um buffer de comprimento zero para uma solicitação bruta de serialização. 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. Esse manipulador pode lidar com várias propriedades dentro do conjunto.

A Microsoft fornece vários GUIDs de conjunto de propriedades definidos pelo sistema. 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.

Para obter mais informações sobre eventos de streaming de kernel, consulte Propriedades, Eventos e Métodos do 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