HYBRID_INFORMATION 结构 (ntddscsi.h)
HYBRID_INFORMATION 结构包含混合磁盘功能信息。 在发送到 HBA 微型端口驱动程序的IOCTL_SCSI_MINIPORT_HYBRID请求中选择 HYBRID_FUNCTION_GET_INFO 函数时,将返回 结构。
语法
typedef struct _HYBRID_INFORMATION {
ULONG Version;
ULONG Size;
BOOLEAN HybridSupported;
NVCACHE_STATUS Status;
NVCACHE_TYPE CacheTypeEffective;
NVCACHE_TYPE CacheTypeDefault;
ULONG FractionBase;
ULONGLONG CacheSize;
struct {
ULONG WriteCacheChangeable : 1;
ULONG WriteThroughIoSupported : 1;
ULONG FlushCacheSupported : 1;
ULONG Removable : 1;
ULONG ReservedBits : 28;
} Attributes;
struct {
UCHAR PriorityLevelCount;
BOOLEAN MaxPriorityBehavior;
UCHAR OptimalWriteGranularity;
UCHAR Reserved;
ULONG DirtyThresholdLow;
ULONG DirtyThresholdHigh;
struct {
ULONG CacheDisable : 1;
ULONG SetDirtyThreshold : 1;
ULONG PriorityDemoteBySize : 1;
ULONG PriorityChangeByLbaRange : 1;
ULONG Evict : 1;
ULONG ReservedBits : 27;
ULONG MaxEvictCommands;
ULONG MaxLbaRangeCountForEvict;
ULONG MaxLbaRangeCountForChangeLba;
} SupportedCommands;
NVCACHE_PRIORITY_LEVEL_DESCRIPTOR Priority[0];
} Priorities;
} HYBRID_INFORMATION, *PHYBRID_INFORMATION;
成员
Version
此结构的版本。 设置为 HYBRID_REQUEST_INFO_STRUCTURE_VERSION。
Size
此结构的大小。 将 设置为 sizeof (HYBRID_INFORMATION) 。
HybridSupported
微型端口支持混合磁盘。 如果支持混合磁盘,则设置为 TRUE 。 否则为 FALSE。
Status
混合磁盘缓存的状态。 这包含以下值之一。
值 | 含义 |
---|---|
|
微型端口驱动程序无法报告缓存状态。 |
|
缓存当前正在更改为 NvCacheStatusDisabled 状态。 |
|
混合磁盘上的缓存处于禁用状态。 |
|
混合磁盘上的缓存已启用。 |
CacheTypeEffective
当前为混合磁盘设置的非易失性缓存类型。 有效缓存类型是以下值之一。
值 | 含义 |
---|---|
|
微型端口驱动程序无法报告缓存类型 |
|
磁盘不支持非易失性缓存。 |
|
混合磁盘支持写回缓存。 |
|
混合磁盘支持写通缓存。 |
CacheTypeDefault
混合磁盘使用的默认缓存类型。 可能的值与 CacheTypeEffective 的值相同。
FractionBase
此结构中的小数部分字段的基值。 此值设置为 255。
CacheSize
混合磁盘上非易失性的大小(以 LBA 为单位)。
Attributes
混合磁盘属性。
Attributes.WriteCacheChangeable
支持写入缓存策略中的更改。 值为 1 允许更改策略。 否则,将忽略更改。
Attributes.WriteThroughIoSupported
使用写通缓存时,支持单个写入操作。 如果支持单个写入,则值为 1。 否则,值为 0。
Attributes.FlushCacheSupported
支持非易失性缓存刷新。 如果支持刷新,则值为 1。 否则,此值为 0。
Attributes.Removable
支持从磁盘中删除非易失性缓存。 如果缓存是可移动的,则值为 1。 否则,此值为 0。
Attributes.ReservedBits
保留。
Priorities
混合磁盘的优先级设置。
Priorities.PriorityLevelCount
缓存支持的优先级数。 目前,非零值表示支持所有优先级。
Priorities.MaxPriorityBehavior
如果 为 TRUE,则如果缓存已满,磁盘 I/O 可能会以最大优先级失败。 否则,如果 为 FALSE,则操作将完成到磁盘。
Priorities.OptimalWriteGranularity
Priorities.Reserved
Priorities.DirtyThresholdLow
缓存刷新的低阈值。 此值是 FractionBase 范围内的比率。
Priorities.DirtyThresholdHigh
缓存刷新的低阈值。 此值是 FractionBase 范围内的比率。
Priorities.SupportedCommands
支持对混合磁盘的非易失性缓存特定命令。
Priorities.SupportedCommands.CacheDisable
支持写入缓存策略中的更改。 值为 1 允许更改策略。 否则,将忽略更改。
Priorities.SupportedCommands.SetDirtyThreshold
使用写通缓存时,支持单个写入操作。 如果支持单个写入,则值为 1。 否则,值为 0。
Priorities.SupportedCommands.PriorityDemoteBySize
支持非易失性缓存刷新。 如果支持刷新,则值为 1。 否则,此值为 0。
Priorities.SupportedCommands.PriorityChangeByLbaRange
支持 LBA 范围优先级更改。 如果支持优先级更改,则值为 1。 否则,此值为 0。
Priorities.SupportedCommands.Evict
支持从磁盘中删除非易失性缓存。 如果缓存是可移动的,则值为 1。 否则,此值为 0。
Priorities.SupportedCommands.ReservedBits
保留。
Priorities.SupportedCommands.MaxEvictCommands
允许的最大并发 Evict 命令数是未完成的。 当 Evict 设置为 1 时,此值有效。
Priorities.SupportedCommands.MaxLbaRangeCountForEvict
可与逐出命令关联的 LBA 范围的最大数目。 当 Evict 设置为 1 时,此值有效。
Priorities.SupportedCommands.MaxLbaRangeCountForChangeLba
可以与 Priority Change 命令关联的 LBA 范围的最大数目。 当 PriorityChangeByLbaRange 设置为 1 时,此值有效。
Priorities.Priority[0]
优先级描述符的数组。 数组中存在的描述符的数目在 PriorityLevelCount 中设置。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从Windows 8.1开始可用。 |
标头 | ntddscsi.h (包括 Ntddscsi.h) |