SRB_GET_STREAM_INFO

The class driver sends this request to obtain a description of the device and the streams it supports.

Return Value

The minidriver should set one of the following as the status in the SRB:

STATUS_SUCCESS
Indicates successful completion of the command.

STATUS_IO_DEVICE_ERROR
Indicates that a hardware failure occurred.

Comments

The class driver passes a buffer in pSrb->CommandData.StreamBuffer of the size specified by the minidriver in response to the class driver's SRB_INITIALIZE_DEVICE request. The pSrb pointer points to a HW_STREAM_REQUEST_BLOCK structure. Also see PORT_CONFIGURATION_INFORMATION.

The minidriver fills CommandData.StreamBuffer with an HW_STREAM_DESCRIPTOR that describes the device and the streams it supports. The size of this buffer is indicated by the minidriver in the StreamDescriptorSize field in the PORT_CONFIGURATION_INFORMATION structure.

The class driver normally issues this request only once. The minidriver may force the class driver to reissue this request, to update its description of the supported streams, by calling StreamClassReenumerateStreams.

When the SRB_GET_STREAM_INFO command is received by the minidriver, the minidriver should:

  1. Retrieve the pointers for the stream header and the stream information data structures. For example:

     PHW_STREAM_HEADER pstrhdr =
      (PHW_STREAM_HEADER)&(pSrb->CommandData.StreamBuffer->StreamHeader);
     PHW_STREAM_INFORMATION pstrinfo =
      (PHW_STREAM_INFORMATION)&(pSrb->CommandData.StreamBuffer->StreamInfo);
    
    
  2. Verify that the buffer is large enough to hold the returned data.

  3. Write the information to the buffer.