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 GetSupportedTRUE の場合、ストリーム クラス ドライバーは、適切なミニドライバー StrMiniReceiveXXXRequest ルーチンにSRB_GET_DEVICE_PROPERTYまたはSRB_GET_STREAM_PROPERTY要求を送信します。
KSPROPERTY_TYPE_SET SetSupportedTRUE の場合、ストリーム クラス ドライバーは、適切なミニドライバー 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_MEMBERSHEADERFlags メンバーでKSPROPERTY_MEMBER_FLAG_DEFAULTでマークされている値です。

詳細については、「 KS のプロパティ」を参照してください。

要件

要件
Header ks.h (Ks.h を含む)

こちらもご覧ください

KSPROPERTY

KSPROPERTY_SET

KSPROPERTY_VALUES

SRB_GET_DEVICE_PROPERTY

SRB_GET_STREAM_PROPERTY

SRB_SET_DEVICE_PROPERTY

SRB_SET_STREAM_PROPERTY