Обработка запросов управления ленточным устройством
Все драйверы мини-класса ленты должны сообщать о состоянии, используя значения, перечисленные в перечислителье TAPE_STATUS . Однако когда драйвер класса ленты завершает запрос элемента управления вводом-выводом, он сообщает о состоянии с использованием эквивалентных значений состояния NT. В следующей таблице представлено сопоставление TAPE_STATUS значений и их эквивалентных значений состояния NT.
Значение состояния NT | Значение состояния ленты |
---|---|
STATUS_INSUFFICIENT_RESOURCES |
TAPE_STATUS_INSUFFICIENT_RESOURCES |
STATUS_NOT_IMPLEMENTED |
TAPE_STATUS_NOT_IMPLEMENTED |
STATUS_INVALID_DEVICE_REQUEST |
TAPE_STATUS_INVALID_DEVICE_REQUEST |
STATUS_INVALID_PARAMETER |
TAPE_STATUS_INVALID_PARAMETER |
STATUS_VERIFY_REQUIRED |
TAPE_STATUS_MEDIA_CHANGED |
STATUS_BUS_RESET |
TAPE_STATUS_BUS_RESET |
STATUS_SETMARK_DETECTED |
TAPE_STATUS_SETMARK_DETECTED |
STATUS_FILEMARK_DETECTED |
TAPE_STATUS_FILEMARK_DETECTED |
STATUS_BEGINNING_OF_MEDIA |
TAPE_STATUS_BEGINNING_OF_MEDIA |
STATUS_END_OF_MEDIA |
TAPE_STATUS_END_OF_MEDIA |
STATUS_BUFFER_OVERFLOW |
TAPE_STATUS_BUFFER_OVERFLOW |
STATUS_NO_DATA_DETECTED |
TAPE_STATUS_NO_DATA_DETECTED |
STATUS_EOM_OVERFLOW |
TAPE_STATUS_EOM_OVERFLOW |
STATUS_NO_MEDIA |
TAPE_STATUS_NO_MEDIA |
STATUS_IO_DEVICE_ERROR |
TAPE_STATUS_IO_DEVICE_ERROR |
STATUS_UNRECOGNIZED_MEDIA |
TAPE_STATUS_UNRECOGNIZED_MEDIA |
STATUS_DEVICE_NOT_READY |
TAPE_STATUS_DEVICE_NOT_READY |
STATUS_MEDIA_WRITE_PROTECTED |
TAPE_STATUS_MEDIA_WRITE_PROTECTED |
STATUS_DEVICE_DATA_ERROR |
TAPE_STATUS_DEVICE_DATA_ERROR |
STATUS_NO_SUCH_DEVICE |
TAPE_STATUS_NO_SUCH_DEVICE |
STATUS_INVALID_BLOCK_LENGTH |
TAPE_STATUS_INVALID_BLOCK_LENGTH |
STATUS_IO_TIMEOUT |
TAPE_STATUS_IO_TIMEOUT |
STATUS_DEVICE_NOT_CONNECTED |
TAPE_STATUS_DEVICE_NOT_CONNECTED |
STATUS_DATA_OVERRUN |
TAPE_STATUS_DATA_OVERRUN |
STATUS_DEVICE_BUSY |
TAPE_STATUS_DEVICE_BUSY |
STATUS_DEVICE_REQUIRES_CLEANING |
TAPE_STATUS_REQUIRES_CLEANING |
STATUS_CLEANER_CARTRIDGE_INSTALLED |
TAPE_STATUS_CLEANER_CARTRIDGE_INSTALLED |
Всякий раз, когда драйвер класса должен вызывать подпрограмму мини-класса более одного раза для выполнения запроса, драйвер мини-класса использует состояние возврата, чтобы указать, завершен ли запрос или следует ли повторно вызывать подпрограмму. Драйвер класса ленты поддерживает отсчитываемый от нуля подсчет количества вызовов подпрограммы мини-класса для заданного запроса и передает его в подпрограмму в качестве параметра CallNumber .
Подпрограмма мини-класса возвращает одно из следующих значений состояния, чтобы указать, что драйвер класса должен снова вызвать подпрограмму:
TAPE_STATUS_SEND_SRB_AND_CALLBACK
Это возвращаемое значение направляет драйвер класса ленты на отправку SRB на устройство. Подпрограмма мини-класса ленты обычно возвращает это состояние после заполнения SRB, переданного драйвером класса ленты. Если операция выполнена успешно, драйвер класса увеличивает callNumber и снова вызывает подпрограмму мини-класса. В случае сбоя SRB драйвер класса снова вызывает подпрограмму miniclass в зависимости от значения RetryFlags.
TAPE_STATUS_CHECK_TEST_UNIT_READY
Это возвращаемое значение указывает драйверу класса ленты создать SRB для команды готовности модуля тестирования и отправить SRB на устройство.
TAPE_STATUS_CALLBACK
Это возвращаемое значение направляет драйвер класса ленты на увеличение CallNumber без отправки SRB на устройство. Это упрощает инструкции case, которые поддерживают несколько устройств. Например, предположим, что для большинства ленточных устройств, поддерживаемых определенным драйвером мини-класса, требуется три SRB для обработки определенного запроса. Однако для одного устройства требуется только первый и третий srb. Для уникального устройства драйвер ленточного мини-класса может возвращать TAPE_STATUS_CALLBACK пропускать второй SRB, что позволяет драйверу использовать тот же код для обработки запроса для всех поддерживаемых устройств.
TAPE_STATUS_REQUIRES_CLEANING
Если ленточное устройство поддерживает уведомление о очистке в смысле данных, а не как ошибку, подпрограмма TapeMiniGetStatus драйвера ленточного мини-класса возвращает это состояние, чтобы указать драйверу класса ленты, что диск требует очистки.
Когда подпрограмма мини-класса завершает обработку запроса (успешно или с ошибкой после исчерпания повторных попыток), она возвращается в драйвер класса ленты с TAPE_STATUS_XXX, который указывает на успешность или сбой запроса.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделе:Отправить и просмотреть отзыв по