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
允许的最大并发逐出命令未完成。 当 逐出 设置为 1 时,此值有效。
Priorities.SupportedCommands.MaxLbaRangeCountForEvict
可以与 Evict 命令关联的 LBA 范围的最大数目。 当 逐出 设置为 1 时,此值有效。
Priorities.SupportedCommands.MaxLbaRangeCountForChangeLba
可以与 Priority Change 命令关联的 LBA 范围的最大数目。 PriorityChangeByLbaRange 设置为 1 时,此值有效。
Priorities.Priority[0]
优先级描述符的数组。 数组中存在的描述符数在 priorityLevelCount 中设置。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 从 Windows 8.1 开始可用。 |
标头 | ntddscsi.h (包括 Ntddscsi.h) |