NVCACHE_REQUEST_BLOCK structure (ntddscsi.h)
The NVCACHE_REQUEST_BLOCK structure is used in conjunction with the IOCTL_SCSI_MINIPORT request to manage hybrid-hard disk drive (H-HDD) devices (for example, Microsoft ReadyDrive technology). This topic defines the general structure for both input data and output data for a call made to the NV Cache Manager. A caller should fill all required fields before calling DeviceIoControl or IoBuildDeviceIoControlRequest. The miniport driver must do the same after the requested function is completed, and before it returns.
Syntax
typedef struct _NVCACHE_REQUEST_BLOCK {
ULONG NRBSize;
USHORT Function;
ULONG NRBFlags;
ULONG NRBStatus;
ULONG Count;
ULONGLONG LBA;
ULONG DataBufSize;
ULONG NVCacheStatus;
ULONG NVCacheSubStatus;
} NVCACHE_REQUEST_BLOCK, *PNVCACHE_REQUEST_BLOCK;
Members
NRBSize
The sizeof(NVCACHE_REQUEST_BLOCK).
Function
Specifies the operation to be performed, which can be one of the following values:
Value | Meaning |
---|---|
NRB_FUNCTION_NVCACHE_INFO | Get NV Cache Manager feature support information from the device. Upon the successful completion of this function, the required data fields are returned to the caller. The return data structure is NV_FEATURE_PARAMETER. |
NRB_FUNCTION_SPINDLE_STATUS | Determine if the device is currently spinning up or spinning down. For an ATA device, a Check Power Mode command is required to obtain the device's spindle status. For a SCSI device, a Mode Sense command can be used to query the device's current power mode. |
NRB_FUNCTION_NVCACHE_POWER_MODE_SET | Turn on the NV Cache Manager power mode. |
NRB_FUNCTION_NVCACHE_POWER_MODE_RESET | Turn off the NV Cache Manager power mode. |
NRB_FUNCTION_FLUSH_NVCACHE | Flush the data that is currently pinned in NV cache memory to make the required NV cache memory space available. |
NRB_FUNCTION_QUERY_PINNED_SET | Get the Logical Block Address (LBA) ranges currently in the NV Cache Manager pinned set. |
NRB_FUNCTION_QUERY_CACHE_MISS | Request that the device report NV Cache Misses in LBA ranges in a single 512-byte block. |
NRB_FUNCTION_ADD_LBAS_PINNED_SET | Add the LBAs that are specified in the NV Cache Manager Set Data to the NV Cache Manager Pinned Set if they are not already. |
NRB_FUNCTION_REMOVE_LBAS_PINNED_SET | Remove the LBAs that are specified in the NV Cache Set Data from the NV Cache pinned set. |
NRB_FUNCTION_QUERY_HYBRID_DISK_STATUS | Reserved for future use. |
NRB_FUNCTION_PASS_HINT_PAYLOAD | Pass IO hints to a SATA device. |
NRBFlags
Reserved for future use.
NRBStatus
Indicates the NV Cache Manager function request status from the driver. This can be one of the following values:
Value | Meaning |
---|---|
NRB_SUCCESS | No error. |
NRB_ILLEGAL_REQUEST | Illegal request detected by the port driver. |
NRB_INVALID_PARAMETER | Invalid parameter passed to the port driver. |
NRB_INPUT_DATA_OVERRUN | Too much data provided to the port driver. |
NRB_INPUT_DATA_UNDERRUN | Not enough data provided to the port driver. |
NRB_OUTPUT_DATA_OVERRUN | Too much data returned from the port driver. |
NRB_OUTPUT_DATA_UNDERRUN | Not enough data returned from the port driver. |
Count
Number of 512-byte blocks to be transferred with the specified function.
LBA
Starting LBA of the device for the specified function.
DataBufSize
Size of the data buffer, in bytes.
NVCacheStatus
Status returned from the device. For an ATA device, this value is the contents of the Status Register in its Task File. For a SCSI device, this value is the Sense Code returned from the device.
NVCacheSubStatus
The error code returned from the device. For an ATA device, this value is the contents of the Error Register in its Task File. For a SCSI device, this value is the Sense key returned from the device.
Remarks
For more information on function behavior, see section 7.20 of the ATA8-ACS specification.
Requirements
Requirement | Value |
---|---|
Header | ntddscsi.h (include Ntddscsi.h) |