MMIOM_BEGINSTREAM
Appearance
The MMIOM_BEGINSTREAM message is sent to a Multimedia I/O (MMIO) procedure before the first streaming `mmioRead` or `mmioWrite` call. This optimizes the data transfer rate for the file or network resource by establishing Quality of Service (QOS) guidelines.
Syntax
rc = mmioSendMessage(hmmio, MMIOM_BEGINSTREAM, lParam1, (LONG)pParam2);
Parameters
- pmmioinfo (PMMIOINFO)
- A pointer to an MMIOINFO data structure maintaining the current state of the open file.
- usMsg (USHORT)
- The message identifier, set to `MMIOM_BEGINSTREAM`.
- lParam1 (LONG)
- Specifies the direction of the stream flow:
- STREAM_READ: Read stream from the server to the client.
- STREAM_WRITE: Write stream from the client to the server.
- pParam2 (PQOSInfo)
- A pointer to a QOSInfo structure. This structure encapsulates a variable-length array of QOS structures defining network or device transfer guarantees.
Return Value
- rc (ULONG)
- Return codes indicating success or the type of failure:
- MMIO_SUCCESS: The I/O procedure successfully placed the channel into streaming mode.
- MMIOERR_UNSUPPORTED_MESSAGE: The I/O procedure does not support network streaming or a required QOS parameter was omitted.
- MMIOERR_QOSUNAVAILABLE: The requested Quality of Service cannot be provisioned by the current network or system constraints.
- MMIO_ERROR: The streaming handshake failed due to a generic or device-specific error.
Remarks
The OS/2 Multimedia subsystem leverages Quality of Service parameters as an extensible list to gracefully adapt to evolving hardware and network bandwidth topologies.
Each QOS element passed via pParam2 contains an identifier (`lQOSParmId`) and an associated descriptor value (`lQOSValue`).
- Supported QOS Identifiers
- SERVICE_REQUEST: Determines the rigidity of the resource reservation. Its value must be one of the following:
- `GUARANTEED`: The required throughput must be fulfilled. If the system cannot guarantee it, the connection fails.
- `DONTCARE`: The application prefers the specified profile but can fall back to standard best-effort allocation.
- `DONTRESERVE`: The system treats the request as a basic connection without special tracking.
- MAX_EE_JITTER: Sets the maximum number of stream buffers assigned to compensate for end-to-end network jitter.
- MAX_DATA_RATE: Specifies the ceiling bandwidth constraint in bytes per second.
- AVG_DATA_RATE: Specifies the target baseline throughput in bytes per second.