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


SRB_CLOSE_STREAM

Драйвер класса отправляет этот запрос, чтобы закрыть поток.

Возвращаемое значение

Мини-диск должен задать одно из следующих состояний в SRB:

STATUS_SUCCESS
Указывает на успешное выполнение команды.

STATUS_NOT_IMPLEMENTED
Указывает, что функция не поддерживается мини-накопителем.

STATUS_IO_DEVICE_ERROR
Указывает, что произошел сбой оборудования.

Комментарии

Драйвер класса предоставляет буфер HW_STREAM_OBJECT в pSrb-StreamObject>, при этомpSrb-StreamObject-StreamNumber>> устанавливается номер закрываемого потока. Указатель pSrb указывает на HW_STREAM_REQUEST_BLOCK структуру. StreamNumber соответствует смещению потока в структуре HW_STREAM_DESCRIPTOR , которая предоставляется мини-накопителем в ответ на запрос SRB_GET_STREAM_INFO .

Если мини-диск успешно закрывает поток, он возвращает STATUS_SUCCESS. В противном случае возвращается соответствующее состояние ошибки.

Когда мини-driver получает команду SRB_CLOSE_STREAM, подпрограмма мини-драйвера должна:

  1. Освободите все ресурсы, выделенные мини-накопителем при открытии потока.

  2. Прекратите ссылаться на часы, если для потока использовались часы.

  3. Сбросьте состояние потока на Stop.

Обратите внимание, что поток может быть закрыт произвольно во время потоковой передачи в случае сбоя связанного приложения в пользовательском режиме. Поэтому необходимо освободить все незавершенные ресурсы для потока, завершить все ожидающие SSP для потока и вернуть поток в состояние ожидания.