Мы разрабатываем приложение для управления устройствами NVME
в Windows 10. Мы не должны использовать наш собственный драйвер для связи с дисками, поэтому для отправки большинства команд мы должны полагаться на все доступные с ОС Windows 10.Перевод с SCSI на NVME
для команд, как Security Receive
и Security Send
, мы используем их поддержку SCSI-NVME
перевода, в котором команда SCSI посылается от хоста и транслируется в NVME
команды в стеке ядра SCSI, а затем отправляется в привод.
Мы можем видеть, что команды достигают диска, но перевод не может отправить правильный идентификатор пространства имен на диск в случае команды Security Receive
, и поэтому SCSI возвращает ошибку в данных о смысле как Access denied, Invalid LU Identifier
.
Перевод SCSI-NVME не позволяет устанавливать поле идентификатора пространства имен в своем CDB. Есть ли другой способ для установки этого идентификатора пространства имен в команде SCSI, которую мы отправляем со стороны хоста? Или это ошибка драйвера, что отправка неверных данных на диск?
Другие API-интерфейсы Microsoft (например, свойство Query Query) устанавливают этот идентификатор пространства имен сами по себе, и нам не нужно устанавливать его со стороны пользователя.
Если кто-то, кто работал в подобной среде, может помочь нам, это будет очень полезно.
Чтобы снова перефразировать вопрос, я хочу знать, как идентификатор пространства имен устанавливается с помощью команды SCSI всякий раз, когда мы используем подход SCSI-NVME Translation для отправки команд на NVME Drive. Спецификация перевода SCSI-NVME, которую я использую, не говорит о том, как Идентификатор NameSpace установлен в CDB. Идентификатор пространства имен является важным полем в структуре команд NVME. – Ravi
Улучшено форматирование и формулировка. – CodeMouse92
Хорошо! В следующий раз я позабочусь. – Ravi