KSPROPERTY_ITEM struttura (ks.h)

I driver usano la struttura KSPROPERTY_ITEM per descrivere come supportano una proprietà in un set di proprietà.

Sintassi

typedef struct {
  ULONG                   PropertyId;
  union {
    PFNKSHANDLER GetPropertyHandler;
    BOOLEAN      GetSupported;
  };
  ULONG                   MinProperty;
  ULONG                   MinData;
  union {
    PFNKSHANDLER SetPropertyHandler;
    BOOLEAN      SetSupported;
  };
  const KSPROPERTY_VALUES *Values;
  ULONG                   RelationsCount;
  const KSPROPERTY        *Relations;
  PFNKSHANDLER            SupportHandler;
  ULONG                   SerializedSize;
} KSPROPERTY_ITEM, *PKSPROPERTY_ITEM;

Members

PropertyId

Specifica l'ID della proprietà descritta.

GetPropertyHandler

Puntatore a un minidriver fornito da KStrGetPropertyHandler. Se NULL non è possibile leggere la proprietà. Questo membro viene usato solo dai driver che usano le interfacce di classe AVStream o Stream.

GetSupported

Impostare su TRUE se questa proprietà supporta le richieste di recupero, FALSE se non lo fa. Il driver di classe soddisfa la richiesta tramite SRB_GET_DEVICE_PROPERTY o SRB_GET_STREAM_PROPERTY richieste. Questo membro viene usato solo dai minidriver in esecuzione nella classe di flusso.

MinProperty

Specifica la lunghezza minima del buffer per contenere l'identificatore della proprietà. Questo deve essere almeno sizeof(KSPROPERTY).

MinData

Specifica la lunghezza minima del buffer per contenere i dati letti da o scritti in questa proprietà.

SetPropertyHandler

Puntatore a un minidriver fornito da KStrSetPropertyHandler. Se NULL, la proprietà non può essere impostata. Questo membro viene usato solo dai driver che usano le interfacce di classe AVStream o Stream.

SetSupported

Impostare su TRUE se questa proprietà supporta le richieste impostate, FALSE se non lo fa. Il driver di classe soddisfa la richiesta tramite la SRB_SET_DEVICE_PROPERTY o le richieste di SRB_SET_STREAM_PROPERTY.

Values

Puntatore a una struttura di tipo KSPROPERTY_VALUES. Specifica i valori predefiniti e/o accettabili per la proprietà. Questi sono gli stessi dei valori segnalati da un driver in risposta a una richiesta di IOCTL_KS_PROPERTY con i flag di KSPROPERTY_TYPE_BASICSUPPORT e KSPROPERTY_TYPE_DEFAULTVALUES impostati.

RelationsCount

Specifica il numero di voci nella matrice a cui punta il membro Relazioni .

Relations

Punta a una matrice di strutture KSPROPERTY che rappresentano le proprietà correlate a questa. Due proprietà vengono considerate correlate se la modifica di una proprietà può influire sul valore dell'altra proprietà. Il membro Flag di ogni voce è inutilizzato.

SupportHandler

Specificare questo membro solo se implementa il proprio formato per la serializzazione non elaborata o l'annullamento non elaborato. Le query di supporto di base, le query di intervallo e le query di relazione vengono gestite automaticamente da AVStream, che restituisce i valori pertinenti da altri membri di questa struttura KSPROPERTY_ITEM.

SerializedSize

Specifica le dimensioni della proprietà quando viene serializzata in una richiesta di KSPROPERTY_TYPE_SERIALIZESET. Questo valore deve essere zero se la proprietà non può essere serializzata. Per altre informazioni, vedere KSPROPERTY .

Commenti

Stream minidriver di classe usano KSPROPERTY_ITEM per descrivere al client come soddisfare le richieste di proprietà in ogni proprietà all'interno di un set. La gestione per il set di proprietà come intero viene specificata nella struttura KSPROPERTY_SET, che contiene puntatori a matrici di strutture KSPROPERTY_ITEM .

Il driver della classe di flusso gestisce le richieste di proprietà per conto del minidriver. Quando il driver della classe di flusso richiede altre informazioni dal minidriver, passa una richiesta di SRB_XXX a una delle routine StrMiniReceiveXXXRequest del minidriver. Il driver della classe di flusso gestisce i diversi tipi di richiesta elencati nella tabella seguente.

Valore dei flag delle richieste di proprietà Risposta
KSPROPERTY_TYPE_GET Se GetSupported è TRUE, il driver della classe di flusso invia una richiesta di SRB_GET_DEVICE_PROPERTY o SRB_GET_STREAM_PROPERTY alla routine StrMiniReceiveXXXRequest appropriata.
KSPROPERTY_TYPE_SET Se SetSupported è TRUE, il driver della classe di flusso invia una richiesta di SRB_SET_DEVICE_PROPERTY o SRB_SET_STREAM_PROPERTY alla routine StrMiniReceiveXXXRequest appropriata.
KSPROPERTY_TYPE_BASICSUPPORT Il driver della classe di flusso usa KSPROPERTY_ITEM per ottenere le informazioni necessarie per soddisfare questa richiesta. Ad esempio, per specificare il tipo di dati e gli intervalli consentiti dei dati delle proprietà, ognuno usa il membro Valori di questa struttura.
KSPROPERTY_TYPE_SETSUPPORT Il driver della classe di flusso completa l'IRP della proprietà come STATUS_SUCCESS solo se il driver fornisce una voce per la proprietà impostata all'interno della relativa struttura di KSPROPERTY_SET .
KSPROPERTY_TYPE_DEFAULTVALUES Il driver della classe di flusso usa il membro Valori di questa struttura per determinare i valori predefiniti per i dati delle proprietà.
KSPROPERTY_TYPE_RELATIONS Il driver della classe di flusso usa il membro Relazioni per determinare quali proprietà sono correlate a questa proprietà.

Se il client specifica KSPROPERTY_TYPE_DEFAULTVALUES, il driver usa il buffer di dati per restituire una descrizione del relativo tipo di valore, incluso eventualmente il relativo intervallo consentito e il valore predefinito. Questo flag è simile al risultato di KSPROPERTY_TYPE_BASICSUPPORT, ad eccezione del fatto che tutti i valori restituiti sono quelli contrassegnati con KSPROPERTY_MEMBER_FLAG_DEFAULT nel membro Flag della struttura KSPROPERTY_MEMBERSHEADER.

Per altre informazioni, vedere Proprietà KS.

Requisiti

Requisito Valore
Intestazione ks.h (include Ks.h)

Vedi anche

KSPROPERTY

KSPROPERTY_SET

KSPROPERTY_VALUES

SRB_GET_DEVICE_PROPERTY

SRB_GET_STREAM_PROPERTY

SRB_SET_DEVICE_PROPERTY

SRB_SET_STREAM_PROPERTY