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

允许的最大并发 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)

另请参阅

IOCTL_SCSI_MINIPORT_HYBRID