KSPROPERTY_ITEM 構造体 (ks.h)
ドライバーは、KSPROPERTY_ITEM構造体を使用して、プロパティ セット内のプロパティをサポートする方法を説明します。
構文
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;
メンバー
PropertyId
記述するプロパティの ID を指定します。
GetPropertyHandler
ミニドライバーが提供する KStrGetPropertyHandler へのポインター。 NULL の場合、プロパティを読み取ることができません。 このメンバーは、AVStream または Stream クラス インターフェイスを使用するドライバーによってのみ使用されます。
GetSupported
このプロパティが get 要求をサポートしている場合は TRUE 、サポートされていない場合は FALSE に設定します。 (クラス ドライバーは、SRB_GET_DEVICE_PROPERTYまたはSRB_GET_STREAM_PROPERTY要求を通じて要求を満たします。このメンバーは、ストリーム クラスで実行されているミニドライバーによってのみ使用されます。
MinProperty
プロパティ識別子を保持するバッファーの最小長を指定します。 これは、少なくとも sizeof(KSPROPERTY) である必要があります。
MinData
このプロパティの読み取りまたは書き込みデータを保持するバッファーの最小長を指定します。
SetPropertyHandler
ミニドライバーが提供する KStrSetPropertyHandler へのポインター。 NULL の場合、プロパティを設定できません。 このメンバーは、AVStream または Stream クラス インターフェイスを使用するドライバーによってのみ使用されます。
SetSupported
このプロパティが set 要求をサポートしている場合は TRUE 、サポートされていない場合は FALSE に設定します。 (クラス ドライバーは、SRB_SET_DEVICE_PROPERTYまたはSRB_SET_STREAM_PROPERTY要求を通じて要求を満たします。
Values
KSPROPERTY_VALUES型の構造体へのポインター。 プロパティの許容される値または既定値を指定します。 これらは、KSPROPERTY_TYPE_BASICSUPPORTフラグとKSPROPERTY_TYPE_DEFAULTVALUES フラグが設定されたIOCTL_KS_PROPERTY要求に応答してドライバーによって報告される値と同じです。
RelationsCount
Relations メンバーが指す配列内のエントリの数を指定します。
Relations
この構造体に関連するプロパティを表す KSPROPERTY 構造体の配列を指します。 1 つのプロパティを変更すると、もう一方のプロパティの値に影響を与える可能性がある場合、2 つのプロパティが関連していると見なされます。 各エントリの Flags メンバーは使用されません。
SupportHandler
このメンバーは、生のシリアル化または未加工の非シリアル化用に独自の形式を実装する場合にのみ指定します。 基本的なサポート クエリ、範囲クエリ、およびリレーション クエリは AVStream によって自動的に処理され、このKSPROPERTY_ITEM構造体の他のメンバーから関連する値が返されます。
SerializedSize
KSPROPERTY_TYPE_SERIALIZESET要求でシリアル化されるときにプロパティのサイズを指定します。 プロパティをシリアル化できない場合は、0 にする必要があります。 詳細については、「 KSPROPERTY 」を参照してください。
注釈
Streamクラス ミニドライバーは、KSPROPERTY_ITEMを使用して、セット内の各プロパティに対するプロパティ要求を満たす方法をクライアントに説明します。 プロパティ セット全体の処理は、KSPROPERTY_ITEM構造体の配列へのポインターを含む KSPROPERTY_SET 構造体で指定されます。
ストリーム クラス ドライバーは、ミニドライバーの代わりにプロパティ要求を処理します。 ストリーム クラス ドライバーがミニドライバーからの詳細情報を必要とする場合は、ミニドライバーの StrMiniReceiveXXXRequest ルーチンのいずれかにSRB_XXX要求を渡します。 ストリーム クラス ドライバーは、次の表に示すように、さまざまな要求の種類を処理します。
プロパティ要求フラグの値 | Response |
---|---|
KSPROPERTY_TYPE_GET | GetSupported が TRUE の場合、ストリーム クラス ドライバーは、適切なミニドライバー StrMiniReceiveXXXRequest ルーチンにSRB_GET_DEVICE_PROPERTYまたはSRB_GET_STREAM_PROPERTY要求を送信します。 |
KSPROPERTY_TYPE_SET | SetSupported が TRUE の場合、ストリーム クラス ドライバーは、適切なミニドライバー StrMiniReceiveXXXRequest ルーチンにSRB_SET_DEVICE_PROPERTYまたはSRB_SET_STREAM_PROPERTY要求を送信します。 |
KSPROPERTY_TYPE_BASICSUPPORT | ストリーム クラス ドライバーは、KSPROPERTY_ITEMを使用して、この要求を満たすために必要な情報を取得します。 たとえば、プロパティ データのデータ型と許可範囲を指定するには、それぞれこの構造体の Values メンバーを使用します。 |
KSPROPERTY_TYPE_SETSUPPORT | ストリーム クラス ドライバーは、ドライバーがそのKSPROPERTY_SET構造内で設定されたプロパティのエントリを提供する場合にのみ、STATUS_SUCCESSとしてプロパティ要求 IRP を 完了します。 |
KSPROPERTY_TYPE_DEFAULTVALUES | ストリーム クラス ドライバーは、この構造体の Values メンバーを使用して、プロパティ データの既定値を決定します。 |
KSPROPERTY_TYPE_RELATIONS | ストリーム クラス ドライバーは 、Relations メンバーを使用して、このプロパティに関連するプロパティを決定します。 |
クライアントがKSPROPERTY_TYPE_DEFAULTVALUESを指定した場合、ドライバーはデータ バッファーを使用して、許容される範囲や既定値など、値の種類の説明を返します。 このフラグは結果としてKSPROPERTY_TYPE_BASICSUPPORTに似ていますが、返される値は構造体KSPROPERTY_MEMBERSHEADERの Flags メンバーでKSPROPERTY_MEMBER_FLAG_DEFAULTでマークされている値です。
詳細については、「 KS のプロパティ」を参照してください。
要件
要件 | 値 |
---|---|
Header | ks.h (Ks.h を含む) |