структура NVCACHE_REQUEST_BLOCK (ntddscsi.h)
Структура NVCACHE_REQUEST_BLOCK используется вместе с запросом IOCTL_SCSI_MINIPORT для управления устройствами с гибридным жестким диском (H-HDD) (например, технологией Microsoft ReadyDrive). В этом разделе определяется общая структура входных данных и выходных данных для вызова диспетчера кэша NV. Вызывающий объект должен заполнить все обязательные поля перед вызовом DeviceIoControl или IoBuildDeviceIoControlRequest. Минипорт-драйвер должен сделать то же самое после завершения запрошенной функции и перед возвратом.
Синтаксис
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;
Члены
NRBSize
Размер (NVCACHE_REQUEST_BLOCK).
Function
Указывает выполняемую операцию, которая может быть одним из следующих значений:
Ценность | Значение |
---|---|
NRB_FUNCTION_NVCACHE_INFO | Получение сведений о поддержке функций диспетчера кэша NV с устройства. После успешного завершения этой функции необходимые поля данных возвращаются вызывающей объекту. Структура возвращаемых данных NV_FEATURE_PARAMETER. |
NRB_FUNCTION_SPINDLE_STATUS | Определите, в настоящее время устройство вращается вверх или откручивается вниз. Для устройства ATA требуется команда Check Power Mode для получения состояния спинделя устройства. Для устройства SCSI можно использовать команду Mode Sense для запроса текущего режима питания устройства. |
NRB_FUNCTION_NVCACHE_POWER_MODE_SET | Включите режим питания диспетчера кэша NV. |
NRB_FUNCTION_NVCACHE_POWER_MODE_RESET | Отключите режим питания диспетчера кэша NV. |
NRB_FUNCTION_FLUSH_NVCACHE | Удалите данные, которые в настоящее время закреплены в памяти кэша NV, чтобы сделать требуемое пространство памяти кэша NV доступным. |
NRB_FUNCTION_QUERY_PINNED_SET | Получение диапазонов адресов логического блока (LBA) в закрепленном наборе NV Cache Manager. |
NRB_FUNCTION_QUERY_CACHE_MISS | Запросите сообщение об отсутствии кэша NV устройства в диапазонах LBA в одном блоке 512-байтов. |
NRB_FUNCTION_ADD_LBAS_PINNED_SET | Добавьте сетевые подсистемы балансировки нагрузки, указанные в наборе данных диспетчера кэша NV, если они еще не установлены. |
NRB_FUNCTION_REMOVE_LBAS_PINNED_SET | Удалите сетевые нагрузки, указанные в наборе данных набора наборов кэша NV, из закрепленного набора кэша NV. |
NRB_FUNCTION_QUERY_HYBRID_DISK_STATUS | Зарезервировано для дальнейшего использования. |
NRB_FUNCTION_PASS_HINT_PAYLOAD | Передайте подсказки ввода-вывода на устройство SATA. |
NRBFlags
Зарезервировано для дальнейшего использования.
NRBStatus
Указывает состояние запроса функции диспетчера кэша NV от драйвера. Это может быть одно из следующих значений:
Ценность | Значение |
---|---|
NRB_SUCCESS | Нет ошибки. |
NRB_ILLEGAL_REQUEST | Недопустимый запрос, обнаруженный драйвером порта. |
NRB_INVALID_PARAMETER | Недопустимый параметр, переданный драйверу порта. |
NRB_INPUT_DATA_OVERRUN | Слишком много данных, предоставленных драйверу порта. |
NRB_INPUT_DATA_UNDERRUN | Недостаточно данных, предоставленных драйверу порта. |
NRB_OUTPUT_DATA_OVERRUN | Слишком много данных, возвращаемых драйвером порта. |
NRB_OUTPUT_DATA_UNDERRUN | Недостаточно данных, возвращаемых драйвером портов. |
Count
Число 512-байтовых блоков для передачи с указанной функцией.
LBA
Запуск LBA устройства для указанной функции.
DataBufSize
Размер буфера данных в байтах.
NVCacheStatus
Состояние, возвращенное устройством. Для устройства ATA это значение является содержимым регистра состояния в файле задачи. Для устройства SCSI это значение — код sense, возвращаемый с устройства.
NVCacheSubStatus
Код ошибки, возвращенный устройством. Для устройства ATA это значение является содержимым реестра ошибок в файле задачи. Для устройства SCSI это значение является ключом Sense, возвращаемым из устройства.
Замечания
Дополнительные сведения о поведении функций см. в разделе 7.20 спецификации ATA8-ACS.
Требования
Требование | Ценность |
---|---|
заголовка | ntddscsi.h (include Ntddscsi.h) |