SRB_OPEN_STREAM
Драйвер класса отправляет этот запрос на открытие потока.
Возвращаемое значение
Мини-диск должен задать одно из следующих состояний в SRB:
STATUS_SUCCESS
Указывает на успешное выполнение команды.
STATUS_NOT_IMPLEMENTED
Указывает, что функция не поддерживается мини-накопителем.
STATUS_TOO_MANY_NODES
Указывает, что для открытия этого потока недостаточно ресурсов.
STATUS_IO_DEVICE_ERROR
Указывает, что произошел сбой оборудования.
Комментарии
Драйвер класса предоставляет буфер HW_STREAM_OBJECT в pSrb-StreamObject>, при этомpSrb-StreamObject-StreamNumber>> устанавливается номер открываемого потока. Указатель pSrb указывает на структуру HW_STREAM_REQUEST_BLOCK . StreamNumber соответствует смещению потока в HW_STREAM_DESCRIPTOR структуре, которая предоставляется мини-driver в ответ на запрос SRB_GET_STREAM_INFO . Драйвер класса задает формат данных, который должен предоставить открытый поток в pSrb-CommandData-OpenFormat.>>
Когда мини-диск получает этот запрос, он должен определить, можно ли открыть указанный поток в данный момент. Мини-driver также должен проверить переданный формат KSDATAFORMAT . поле OpenFormat SRB. Если поток можно открыть, мини-диск обновляет структуру HW_STREAM_OBJECT и возвращает STATUS_SUCCESS. Если уже открыто максимальное число экземпляров потока или аппаратные ресурсы, необходимые для открытия этого потока, недоступны, мини-driver возвращает соответствующее состояние ошибки.
Когда мини-диск получает команду SRB_OPEN_STREAM, она должна:
Убедитесь, что максимальное число экземпляров потока не превышено и что значение индекса потока является допустимым.
Убедитесь, что запрошенный формат данных является допустимым для этого потока.
Задайте формат потока.
Поддерживайте массив всех структур расширений потока в расширении устройства, чтобы irP можно было отменить из любого потока.
Укажите указатели в объекте потока на обработчики данных потока и обработчики элементов управления.
Установите флаг DMA в объекте потока, если устройство будет выполнять DMA непосредственно с адресами буфера данных, передаваемыми в подпрограммы ReceiveDataPacket . Если драйвер обращается к буферам данных, переданным с помощью логической адресации, также установите флаг PIO в объекте потока.
Если поддержка часов доступна в потоке, укажите это с помощью элемента HwClockObject в объекте потока.