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

指定所描述屬性的識別碼。

GetPropertyHandler

Minidriver 提供的 KStrGetPropertyHandler 指標。 如果 為 NULL,則無法讀取 屬性。 此成員僅供使用 AVStream 或 Stream 類別介面的驅動程式使用。

GetSupported

如果這個屬性支援取得要求,則設定為 TRUE ;如果沒有, 則為 FALSE 。 (類別驅動程式會透過 SRB_GET_DEVICE_PROPERTY 或 SRB_GET_STREAM_PROPERTY requests 來完成要求。) 此成員只能由在數據流類別下執行的 minidrivers 使用。

MinProperty

指定要保存屬性識別碼的緩衝區長度下限。 這至少必須是 (KSPROPERTY) 的大小

MinData

指定要保存讀取或寫入此屬性之數據的最小緩衝區長度。

SetPropertyHandler

Minidriver 提供的 KStrSetPropertyHandler 指標。 如果 為 NULL,則無法設定 屬性。 此成員僅供使用 AVStream 或 Stream 類別介面的驅動程式使用。

SetSupported

如果此屬性支援設定要求,則設定為 TRUE ;如果不支援 ,則為 FALSE 。 (類別驅動程式會透過 SRB_SET_DEVICE_PROPERTY 或 SRB_SET_STREAM_PROPERTY requests 來完成要求。)

Values

類型 KSPROPERTY_VALUES結構的指標。 指定屬性可接受的和/或預設值。 這些與驅動程式報告的值相同,以響應已設定KSPROPERTY_TYPE_BASICSUPPORT和KSPROPERTY_TYPE_DEFAULTVALUES旗標的IOCTL_KS_PROPERTY要求。

RelationsCount

指定 Relations 成員所指向之陣列中的項目數。

Relations

指向 KSPROPERTY 結構的數位,代表與這個結構相關的屬性。 如果變更一個屬性可能會影響另一個屬性的值,則會將兩個屬性視為相關。 未使用每個專案的 Flags 成員。

SupportHandler

只有在實作原始串行化或未經串行化的原始格式時,才提供這個成員。 AVStream 會自動處理基本支持查詢、範圍查詢和關聯查詢,這會從這個KSPROPERTY_ITEM結構的其他成員傳回相關值。

SerializedSize

指定在KSPROPERTY_TYPE_SERIALIZESET要求中串行化時的屬性大小。 如果屬性無法串行化,則這應該是零。 如需詳細資訊,請參閱 KSPROPERTY

備註

Stream 類別 minidrivers 會使用 KSPROPERTY_ITEM 來描述用戶端如何在集合內的每個屬性上滿足屬性要求。 在 KSPROPERTY_SET 結構中指定屬性集的處理方式,其中包含KSPROPERTY_ITEM結構的陣列指標。

數據流類別驅動程式會代表minidriver處理屬性要求。 當數據流類別驅動程式需要來自minidriver的詳細資訊時,它會將SRB_XXX要求傳遞給其中一個minidriver的 StrMiniReceiveXXXRequest 例程。 數據流類別驅動程式會處理下表所列的不同要求類型。

屬性要求旗標值 回應
KSPROPERTY_TYPE_GET 如果 GetSupportedTRUE,數據流類別驅動程式會將 SRB_GET_DEVICE_PROPERTYSRB_GET_STREAM_PROPERTY 要求提交至適當的 minidriver StrMiniReceiveXXXRequest 例程。
KSPROPERTY_TYPE_SET 如果 SetSupportedTRUE,數據流類別驅動程式會將 SRB_SET_DEVICE_PROPERTYSRB_SET_STREAM_PROPERTY 要求提交至適當的 minidriver StrMiniReceiveXXXRequest 例程。
KSPROPERTY_TYPE_BASICSUPPORT 數據流類別驅動程式會使用KSPROPERTY_ITEM來取得滿足此要求所需的資訊。 例如,若要指定屬性數據的數據類型和允許的範圍,它們各使用這個結構的 Values 成員。
KSPROPERTY_TYPE_SETSUPPORT 只有當驅動程式在其KSPROPERTY_SET結構內提供屬性設定的專案時,數據流類別驅動程式才會將屬性要求 IRP 完成為 STATUS_SUCCESS
KSPROPERTY_TYPE_DEFAULTVALUES 數據流類別驅動程式會使用此結構的 Values 成員來判斷屬性資料的預設值。
KSPROPERTY_TYPE_RELATIONS 數據流類別驅動程式會使用 Relations 成員來判斷與此屬性相關的屬性。

如果用戶端指定KSPROPERTY_TYPE_DEFAULTVALUES,驅動程式會使用數據緩衝區傳回其實值類型的描述,包括可能允許的範圍和預設值。 此旗標與KSPROPERTY_TYPE_BASICSUPPORT類似,不同之處在於,傳回的任何值都是已在 結構 之 Flags 成員中標示KSPROPERTY_MEMBER_FLAG_DEFAULT的值 KSPROPERTY_MEMBERSHEADER

如需詳細資訊,請參閱 KS 屬性

規格需求

需求
標頭 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