Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Операции управления кэшем 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_BLOCKDataBufSize .
Выходной буфер
Обновленные структуры SRB_IO_CONTROLSRB_IO_CONTROL**() и NVCACHE_REQUEST_BLOCK, а также необязательный буфер данных для конкретной функции возвращаются в буфер по Irp->AssociatedIrp.SystemBuffer.
Длина выходного буфера
Длина буфера.
Блок состояния
Поле сведений содержит количество байтов, возвращаемых в выходном буфере. Поле состояния указывает результаты операции.
Требования
| Требование | Ценность |
|---|---|
| заголовка | ntddscsi.h (include Ntddscsi.h) |