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 | 如果 GetSupported 為 TRUE,數據流類別驅動程式會將 SRB_GET_DEVICE_PROPERTY 或 SRB_GET_STREAM_PROPERTY 要求提交至適當的 minidriver StrMiniReceiveXXXRequest 例程。 |
KSPROPERTY_TYPE_SET | 如果 SetSupported 為 TRUE,數據流類別驅動程式會將 SRB_SET_DEVICE_PROPERTY 或 SRB_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) |