Struttura KSPROPERTY

La struttura KSPROPERTY specifica una singola proprietà di streaming del kernel all'interno di un set di proprietà.

Le strutture KSEVENT, KSMETHOD e KSPROPERTY sono alias per la struttura KSIDENTIFIER . Di conseguenza, le loro definizioni sono identiche.

Sintassi

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

Members

Set

Specifica un GUID che identifica un set di proprietà di streaming del kernel. Per altre informazioni sui GUID del set di proprietà, vedere la sezione Osservazioni di seguito.

Id

Specifica il membro del set di proprietà.

Flags

Specifica il tipo di richiesta. Se si scrive un minidriver di classe di flusso, vedere anche KSPROPERTY_ITEM per informazioni sul flag specifiche della classe.

I flag devono essere uno dei valori elencati nella tabella seguente. Alcuni flag possono essere combinati usando un'operazione OR bit per bit.

Valore Descrizione
KSPROPERTY_TYPE_GET Recupera il valore dell'elemento della proprietà specificata.
KSPROPERTY_TYPE_SET Imposta il valore dell'elemento della proprietà specificata.
KSPROPERTY_TYPE_SETSUPPORT Esegue query se il driver supporta questo set di proprietà.
KSPROPERTY_TYPE_BASICSUPPORT Esegue una query sui tipi di richiesta gestiti dal driver per questo elemento della proprietà. Restituisce KSPROPERTY_TYPE_GET o KSPROPERTY_TYPE_SET o entrambi. Tutti i set di proprietà devono supportare questo flag.
KSPROPERTY_TYPE_DEFAULTVALUES Esegue una query sui valori predefiniti per l'elemento di proprietà specificato. Restituisce una struttura di tipo KSPROPERTY_VALUES.
KSPROPERTY_TYPE_RELATIONS Esegue query su tutte le proprietà con dipendenze sull'impostazione corrente di questa proprietà. Specifica che l'elenco delle relazioni delle proprietà deve essere restituito o la quantità di spazio buffer richiesto da tale elenco se il buffer restituito è la dimensione di un ULONG. Ogni elemento si trova su FILE_QUAD_ALIGNMENT, preceduto da una struttura KSMULTIPLE_ITEM . Questa operazione non è valida quando si esegue una query sul supporto della proprietà impostata in generale. Tutti i set di proprietà devono supportare questo flag.
KSPROPERTY_TYPE_SERIALIZESET Serializzare il set di proprietà usando le strutture di KSPROPERTY_SERIALHDR standard e KSPROPERTY_SERIAL .
KSPROPERTY_TYPE_UNSERIALIZESET Annullare il set di proprietà usando le strutture standard KSPROPERTY_SERIALHDR e KSPROPERTY_SERIAL .
KSPROPERTY_TYPE_SERIALIZESIZE Restituisce un oggetto ULONG che specifica le dimensioni dei dati delle proprietà durante la serializzazione come parte di una richiesta di KSPROPERTY_TYPE_SERIALIZESET . Una dimensione pari a zero indica che non è necessario serializzare una proprietà.
KSPROPERTY_TYPE_SERIALIZERAW Specifica che le proprietà di questo set devono essere serializzate dal gestore del supporto del set di proprietà, se presente. In caso contrario, la chiamata ha esito negativo. Il formato di serializzazione è privato. Questa operazione deve essere inversa di KSPROPERTY_TYPE_UNSERIALIZERAW.
KSPROPERTY_TYPE_TOPOLOGY La proprietà passata è di tipo KSP_NODE, dove NodeId indica l'ID numerico del nodo della topologia. Non impostare questo flag da solo; invece, OR con altri flag in questa tabella.
KSPROPERTY_TYPE_UNSERIALIZERAW Specifica che il buffer fornito contiene un gruppo di proprietà che appartengono a questo set che deve essere annullato dal gestore del supporto del set di proprietà, se presente. In caso contrario, la chiamata ha esito negativo. Il formato di serializzazione è privato. Questa operazione deve essere inversa di KSPROPERTY_TYPE_SERIALIZERAW.

Commenti

Le dimensioni del buffer di output passato determinano i dati restituiti da una richiesta di KSPROPERTY_TYPE_BASICSUPPORT. Se il buffer di output è la dimensione di un ULONG, vengono restituiti solo i flag di accesso. Se il buffer di output è la dimensione della struttura KSPROPERTY_DESCRIPTION , la struttura viene riempita con i flag di accesso, le dimensioni incluse dell'intero valore dei valori, le informazioni sul tipo di valore della proprietà e il numero di elenchi di membri corrispondenti alla struttura.

Per una richiesta di KSPROPERTY_TYPE_RELATIONS, i dati restituiti dipendono anche dalle dimensioni del buffer di output. Se la dimensione del buffer di output è zero, le dimensioni necessarie per restituire le proprietà correlate vengono restituite in ByteReturned con stato di avviso di STATUS_BUFFER_OVERFLOW. Se il buffer è la dimensione di una struttura KSMULTIPLE_ITEM , vengono restituite sia le dimensioni del byte che il conteggio delle relazioni. In caso contrario, il buffer deve essere abbastanza lungo per restituire la struttura KSMULTIPLE_ITEM e tutti gli identificatori di proprietà correlati, restituiti come elenco di strutture KSIDENTIFIER .

KSPROPERTY_TYPE_SERIALIZESETe KSPROPERTY_TYPE_UNSERIALIZESET richieste consentono l'interazione con più proprietà con una singola chiamata dal client. Se il gestore di streaming del kernel viene usato per elaborare le richieste di proprietà, queste vengono suddivise in più chiamate dalla funzione KsPropertyHandler . Quando si usa questo gestore, il set di proprietà controlla quali proprietà devono essere serializzate.

Per le richieste di serializzazione, il membro SerializedSize della struttura di KSPROPERTY_ITEM pertinente viene controllato per un valore diverso da zero che indica le dimensioni, in byte, della proprietà. Se il valore del membro SerializedSize è 1, è sconosciuto e deve essere eseguito una query (tutte le proprietà sconosciute iniziano con una struttura KSMULTIPLE_ITEM che può essere eseguita una query separatamente). Per eseguire una query sulle dimensioni totali di una serializzazione, il client passa un buffer di lunghezza zero nella chiamata a DeviceIoControl. ByteReturned restituisce quindi le dimensioni, in byte, che il buffer deve essere serializzare il set e uno stato di avviso di STATUS_BUFFER_OVERFLOW. Un buffer allocato che può quindi essere riempito con i dati serializzati.

Il formato del buffer di serializzazione è un KSPROPERTY_SERIALHDR, seguito dalle proprietà serializzate. Ogni proprietà che segue contiene un'intestazione (KSPROPERTY_SERIAL), seguita dai dati delle proprietà, con l'inizio di ogni proprietà in FILE_LONG_ALIGNMENT. Si noti che la struttura dell'intestazione seriale è definita in FILE_LONG_ALIGNMENT.

KSPROPERTY_TYPE_SERIALIZERAW e KSPROPERTY_TYPE_UNSERIALIZERAW sono supportati se esiste un gestore di elementi di proprietà. La funzione KsPropertyHandler richiama il gestore fornito dal minidriver. Le dimensioni del buffer necessarie per la serializzazione possono anche essere sottoposte a query passando un buffer a lunghezza zero a una richiesta non elaborata di serializzazione. Poiché i gestori sono collegati agli elementi delle proprietà anziché al set di proprietà, è necessario specificare un elemento specifico all'interno del set di proprietà nel parametro Property . Questo gestore può gestire più proprietà all'interno del set.

Microsoft offre diversi GUID del set di proprietà definiti dal sistema. I minidriver specificano uno di questi GUID nel membro Set . I set di proprietà di streaming del kernel iniziano in genere con un prefisso KSPROPSETID o PROPSETID . I set di proprietà di streaming del kernel sono definiti in ks.h, ksmedia.h, bdamedia.h e eventualmente altri file di intestazione.

Per altre informazioni sugli eventi di streaming del kernel, vedere Proprietà, eventi e metodi KS.

Requisiti

Intestazione: ks.h (includere Ks.h)

Vedi anche

KSEVENT

KSMETHOD

KSIDENTIFIER

KSMETHOD_ITEM

KSE_NODE

KSPROPERTY_DESCRIPTION

KSPROPERTY_ITEM

KSMULTIPLE_ITEM

KsPropertyHandler

KSPROPERTY_SERIALHDR

KSPROPERTY_SERIAL