HYBRID_INFORMATION structure (ntddscsi.h)

The HYBRID_INFORMATION structure contains hybrid disk capability information. The structure is returned when the HYBRID_FUNCTION_GET_INFO function is selected in a IOCTL_SCSI_MINIPORT_HYBRID request sent to an HBA miniport driver.

Syntax

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;

Members

Version

The version of this structure. Set to HYBRID_REQUEST_INFO_STRUCTURE_VERSION.

Size

The size of this structure. Set to sizeof(HYBRID_INFORMATION).

HybridSupported

Miniport supports for hybrid disks. Set to TRUE if hybrid disks are supported. Otherwise, FALSE.

Status

The status of the hybrid disk cache. This contains one of the following values.

Value Meaning
NvCacheStatusUnknown
The miniport driver is not able to report the cache status.
NvCacheStatusDisabling
The cache is currently changing to NvCacheStatusDisabled status.
NvCacheStatusDisabled
The cache on the hybrid disk is disabled.
NvCacheStatusEnabled
The cache on the hybrid disk is enabled.

CacheTypeEffective

The non-volatile caching type currently set for hybrid disk. The effective cache type is one of the following values.

Value Meaning
NvCacheTypeUnknown
The miniport driver is not able to report the cache type
NvCacheNone
The disk does not support a non-volatile cache.
NvCacheTypeWriteBack
Write-back caching is supported by hybrid disk.
NvCacheTypeWriteThrough
Write-through caching is supported by hybrid disk.

CacheTypeDefault

The default caching type used by the hybrid disk. The possible values are the same as for CacheTypeEffective.

FractionBase

The base value for fractional fields in this structure. This value is set to 255.

CacheSize

The size, in LBAs, of the non-volatile on the hybrid disk.

Attributes

The hybrid disk attributes.

Attributes.WriteCacheChangeable

Support for changes in write caching policy. The value is 1 policy changes are allowed. Otherwise, changes are ignored.

Attributes.WriteThroughIoSupported

Support for individual write operations when write-through caching is used. The value is 1 if individual writes are supported. Otherwise, the values is 0.

Attributes.FlushCacheSupported

Support for non-volatile cache flush. The value is 1 if flushes are supported. Otherwise, the value is 0.

Attributes.Removable

Support of removal of the non-volatile cache from the disk. The value is 1 if the cache is removable. Otherwise, the value is 0.

Attributes.ReservedBits

Reserved.

Priorities

Priority settings for the hybrid disk.

Priorities.PriorityLevelCount

The number of priority levels supported by the cache. Currently, a non-zero value indicates support for all priorities.

Priorities.MaxPriorityBehavior

If TRUE, the disk I/O can fail at maximum priority if the cache is full. Otherwise, if FALSE, the operation will complete to disk.

Priorities.OptimalWriteGranularity

Priorities.Reserved

Priorities.DirtyThresholdLow

The low threshold for a cache flush. This value is ratio in the range of FractionBase.

Priorities.DirtyThresholdHigh

The low threshold for a cache flush. This value is ratio in the range of FractionBase.

Priorities.SupportedCommands

Support for non-volatile cache specific commands to the hybrid disk.

Priorities.SupportedCommands.CacheDisable

Support for changes in write caching policy. The value is 1 policy changes are allowed. Otherwise, changes are ignored.

Priorities.SupportedCommands.SetDirtyThreshold

Support for individual write operations when write-through caching is used. The value is 1 if individual writes are supported. Otherwise, the values is 0.

Priorities.SupportedCommands.PriorityDemoteBySize

Support for non-volatile cache flush. The value is 1 if flushes are supported. Otherwise, the value is 0.

Priorities.SupportedCommands.PriorityChangeByLbaRange

Support for LBA range priority changes. The value is 1 if priority changes are supported. Otherwise, the value is 0.

Priorities.SupportedCommands.Evict

Support of removal of the non-volatile cache from the disk. The value is 1 if the cache is removable. Otherwise, the value is 0.

Priorities.SupportedCommands.ReservedBits

Reserved.

Priorities.SupportedCommands.MaxEvictCommands

The maximum concurrent Evict commands allowed that are outstanding. This value is valid when Evict is set to 1.

Priorities.SupportedCommands.MaxLbaRangeCountForEvict

The maximum number of LBA ranges possible to associate with an Evict command. This value is valid when Evict is set to 1.

Priorities.SupportedCommands.MaxLbaRangeCountForChangeLba

The maximum number of LBA ranges possible to associate with a Priority Change command. This value is valid when PriorityChangeByLbaRange is set to 1.

Priorities.Priority[0]

An array of priority level descriptors. The number of descriptors present in the array is set in PriorityLevelCount.

Requirements

Requirement Value
Minimum supported client Available starting with Windows 8.1.
Header ntddscsi.h (include Ntddscsi.h)

See also

IOCTL_SCSI_MINIPORT_HYBRID