Поделиться через


IOCTL_SCSI_MINIPORT_NVCACHE IOCTL (ntddscsi.h)

Операции управления кэшем NV, определенные здесь, могут вызываться кодом приложения в пользовательском режиме, выполняемым с правами администратора, с помощью DeviceIoControl и кода управления IOCTL_SCSI_MINIPORT . Кроме того, вызывающим объектом может быть код драйвера в режиме ядра с помощью IoBuildDeviceIoControlRequest и IOCTL_SCSI_MINIPORT управляющего кода.

Запрос функции управления кэшем NV указывается в поле в структуре NVCACHE_REQUEST_BLOCK . Входные данные для IOCTL_SCSI_MINIPORT — это определяемая пользователем структура данных, содержащая SRB_IO_CONTROL структуру, за которой следует структура NVCACHE_REQUEST_BLOCK . Дополнительные данные, относящиеся к функциям, могут при необходимости соответствовать NVCACHE_REQUEST_BLOCK структуре.

Интерфейс, используемый для функции управления кэшем NV, состоит из двух уровней. Первый уровень — это интерфейс между вызывающим и драйвером порта, который определяется IOCTL_SCSI_MINIPORT. Второй уровень — это интерфейс между вызывающим и устройством, который определяется спецификацией ATA8-ACS и IOCTL_SCSI_MINIPORT_NVCACHE. API для кода приложения в пользовательском режиме — это интерфейс DeviceIoControl. API для кода драйвера в режиме ядра — это интерфейс IoBuildDeviceIoControlRequest , который использует IOCTL_SCSI_MINIPORT.

Основной код

IRP_MJ_DEVICE_CONTROL

Входной буфер

Буфер в Irp-AssociatedIrp.SystemBuffer> содержит структуру SRB_IO_CONTROL с полем Подпись, равным HYBRDISK, а для поля ControlCode — значение IOCTL_SCSI_MINIPORT_NVCACHE. Структура NVCACHE_REQUEST_BLOCK сразу же следует за структурой SRB_IO_CONTROL . Любой необязательный буфер данных для конкретной функции сразу же следует за NVCACHE_REQUEST_BLOCK структурой.

Длина входного буфера

Parameters.DeviceIoControl.InputBufferLength указывает размер в байтах всех входных данных: SRB_IO_CONTROL, NVCACHE_REQUEST_BLOCK и буфера данных для конкретных функций. На наличие или отсутствие буфера данных указывает поле NVCACHE_REQUEST_BLOCK***DataBufSize .

Выходной буфер

Обновленные SRB_IO_CONTROLSRB_IO_CONTROL**]() и NVCACHE_REQUEST_BLOCK структуры, а также необязательный буфер данных для конкретной функции возвращаются в буфер по адресу Irp-AssociatedIrp.SystemBuffer>.

Длина выходного буфера

Длина буфера.

Блок состояния

Поле Information содержит количество байтов, возвращаемых в выходном буфере. В поле Состояние указываются результаты операции.

Требования

Требование Значение
Заголовок ntddscsi.h (включая Ntddscsi.h)

См. также раздел

IOCTL_SCSI_MINIPORT

IoBuildDeviceIoControlRequest

NVCACHE_REQUEST_BLOCK

SRB_IO_CONTROL