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

混合磁盘缓存的状态。 这包含以下值之一。

价值 意义
NvCacheStatusUnknown
微型端口驱动程序无法报告缓存状态。
NvCacheStatusDisabling
缓存当前更改为 NvCacheStatusDisabled 状态。
NvCacheStatusDisabled
已禁用混合磁盘上的缓存。
NvCacheStatusEnabled
已启用混合磁盘上的缓存。

CacheTypeEffective

当前为混合磁盘设置的非易失性缓存类型。 有效的缓存类型是以下值之一。

价值 意义
NvCacheTypeUnknown
微型端口驱动程序无法报告缓存类型
NvCacheNone
磁盘不支持非易失性缓存。
NvCacheTypeWriteBack
混合磁盘支持写回缓存。
NvCacheTypeWriteThrough
混合磁盘支持写入缓存。

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)

另请参阅

IOCTL_SCSI_MINIPORT_HYBRID