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


функция обратного вызова PHW_RECEIVE_DEVICE_SRB (strmini.h)

Подпрограмма, предоставляемая мини-накопителем, обрабатывает запросы драйвера класса, которые применяются к драйверу в целом, например инициализацию устройства или открытие потока на устройстве.

Синтаксис

PHW_RECEIVE_DEVICE_SRB PhwReceiveDeviceSrb;

void PhwReceiveDeviceSrb(
  [in] IN PHW_STREAM_REQUEST_BLOCK SRB
)
{...}

Параметры

[in] SRB

Указатель на блок запроса потока.

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

None

Remarks

Minidriver указывает эту подпрограмму в элементе HwReceivePacket своей структуры HW_INITIALIZATION_DATA . Мини-диск передает эту структуру драйверу класса, когда он регистрирует себя путем вызова StreamClassRegisterMinidriver.

StrMiniReceiveDevicePacket должен обрабатывать запросы драйвера класса, которые применяются к драйверу в целом, например инициализацию устройства или открытие потока на устройстве. Драйвер класса передает свои сведения в виде указателя на блок запросов потока. Драйвер класса заполняет некоторые записи в блоке запросов потока. По завершении процедуры мини-диск должен заполнить дополнительные сведения, которые драйвер класса будет использовать для продолжения обработки.

После завершения обработки запроса мини-драйвер передает структуру обратно драйверу класса, вызвав StreamClassDeviceNotification(DeviceRequestComplete, pSRB-HwDeviceExtension>, pSRB).

Сведения о соответствующих кодах SRB см. в справочнике по классу SRB Stream.

Когда мини-диск завершает обработку запроса, он вводит состояние возврата операции в pSrb-Status>. Мини-диск должен ввести STATUS_SUCCESS для нормальной успешной обработки. Если мини-диск не поддерживает это значение Command, необходимо задать для параметра pSrb-Status> значение STATUS_NOT_IMPLEMENTED. Если возникла ошибка оборудования устройства, которая не позволяет мини-driver выполнить запрос, необходимо задать для pSrb-Status> значение STATUS_IO_DEVICE_ERROR. Другие коды ошибок, которые подпрограмма использует в определенных обстоятельствах, перечислены выше с конкретным кодом command.

Обратите внимание, что драйвер класса передает запросы на чтение и запись в подпрограмму StrMiniReceiveStreamDataPacket .

Minidriver регистрирует свою подпрограмму StrMiniReceiveStreamControlPacket следующим образом: когда драйвер класса открывает поток, он передает блок запроса SRB_OPEN_STREAM в подпрограмму StrMiniReceiveDevicePacket мини-диска. Элемент StreamObject пакета запроса указывает на HW_STREAM_OBJECT. Мини-диск задает элемент ReceiveControlPacket структуры, на которую указывает StreamObject , в подпрограмму StrMiniReceiveControlPacket мини-драйвера.

После завершения обработки запроса мини-драйвер передает структуру обратно в драйвер класса, вызвав StreamClassStreamNotification(StreamRequestComplete, pSRB-StreamObject>, pSRB, pSRB).

Сведения о соответствующих кодах SRB см. в справочнике по классу SRB Stream.

Когда мини-диск завершает обработку запроса, он вводит состояние возврата операции в pSrb-Status>. Мини-диск должен ввести STATUS_SUCCESS для нормальной успешной обработки. Если мини-диск не поддерживает это значение Command, необходимо задать для параметра pSrb-Status> значение STATUS_NOT_IMPLEMENTED. Если возникла ошибка оборудования устройства, которая не позволяет мини-driver выполнить запрос, необходимо задать для pSrb-Status> значение STATUS_IO_DEVICE_ERROR. Другие коды ошибок, которые подпрограмма использует в определенных обстоятельствах, перечислены выше с конкретным кодом command.

Драйвер класса потока вызывает подпрограмму StrMiniReceiveStreamDataPacket мини-драйвера для обработки запросов на чтение и запись для определенного потока.

Minidriver регистрирует свою подпрограмму StrMiniReceiveStreamDataPacket следующим образом: Когда драйвер класса открывает поток, он передает блок запроса SRB_OPEN_STREAM в подпрограмму StrMiniReceiveDevicePacket мини-драйвера. Объект StreamObject пакета запроса указывает на HW_STREAM_OBJECT. Мини-диск устанавливает элемент ReceiveDataPacket структуры, на который указывает pSrb-StreamObject>, в подпрограмму StrMiniReceiveDataPacket мини-драйвера.

После завершения обработки запроса мини-драйвер передает структуру обратно в драйвер класса, вызвав StreamClassStreamNotification(StreamRequestComplete, pSRB-StreamObject>, pSRB, pSRB).

Сведения о соответствующих кодах SRB см. в справочнике по классу SRB Stream.

Когда мини-диск завершает обработку запроса, он вводит состояние возврата операции в pSrb-Status>. Мини-диск должен ввести STATUS_SUCCESS для нормальной успешной обработки. Если мини-диск не поддерживает это значение Command, необходимо задать для параметра pSrb-Status> значение STATUS_NOT_IMPLEMENTED. Если возникла ошибка оборудования устройства, которая не позволяет мини-driver выполнить запрос, необходимо задать для pSrb-Status> значение STATUS_IO_DEVICE_ERROR. Другие коды ошибок, которые подпрограмма использует в определенных обстоятельствах, перечислены выше с конкретным кодом command.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть strmini.h (включая Strmini.h)