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-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) |