Supporting Multiple Streams
The minidriver describes the streams it supports in its StrMiniReceiveDevicePacket routine, in response to a SRB_GET_STREAM_INFO request. The CommandData.StreamBuffer points to the HW_STREAM_DESCRIPTOR structure the minidriver should fill in with a description of the streams it supports.
The HW_STREAM_DESCRIPTOR structure begins with a HW_STREAM_HEADER structure, which describes the number of streams the minidriver supports. It is followed by an array of HW_STREAM_INFORMATION structures, each of which describes an individual stream. The class driver uses each HW_STREAM_INFORMATION to handle the KSPROPSETID_Pin property set − the index within the array serves as the pin type ID.
For most minidrivers, the data in the HW_STREAM_DESCRIPTOR is fixed at compile-time. In that case, the minidriver can allocate the data structure statically.
The minidriver describes the topology of connections between its streams through the Topology member of HW_STREAM_HEADER. The class drivers uses this structure to handle the KSPROPSETID_Topology property set for the minidriver.