MMIOM_SET
Appearance
The MMIOM_SET message is sent to a Multimedia I/O (MMIO) procedure to configure or query extended file headers, specific track layouts, or advanced codec-specific properties within an active media container.
Syntax
rc = mmioSendMessage(hmmio, MMIOM_SET, (LONG)pMmExtendInfo, flags);
Parameters
- pmmioinfo (PMMIOINFO)
- A pointer to an MMIOINFO data structure maintaining the current state of the open file channel.
- usMsg (USHORT)
- The message identifier, set to `MMIOM_SET`.
- lParam1 (LONG)
- A pointer to an MMEXTENDINFO data structure. When writing configurations, this contains the target fields to apply; when querying, the I/O procedure populates this structure with runtime metrics.
- lParam2 (LONG)
- Action control flags defining the transactional behavior of the message:
- MMIO_SET_EXTENDEDINFO: Instructs the I/O procedure to write or apply the settings specified in the MMEXTENDINFO structure directly to the media stream configuration.
- MMIO_QUERY_EXTENDEDINFO_BASE: Requests that the procedure query and populate only the high-level base fields within the provided MMEXTENDINFO buffer block.
- MMIO_QUERY_EXTENDEDINFO_ALL: Requests a comprehensive extraction of all extended parameters, including any deeper, underlying CODEC-specific metadata blocks associated with the stream handler.
Return Value
- rc (ULONG)
- Return codes indicating success or failure:
- MMIO_SUCCESS: The configuration set or metadata query operation completed successfully.
- MMIO_ERROR: An error occurred, the provided flags are incompatible, or the extended format structures are invalid.
Remarks
- **Dual-Purpose Mechanics**: Despite its name, MMIOM_SET serves as an asymmetric, bidirectional entry point. The operations behavior completely pivots between acting as a configuration mutator or a structural query interface depending on whether an `MMIO_SET` or an `MMIO_QUERY` flag is passed via lParam2.
- **Codec Sub-routing**: When executing under the `MMIO_QUERY_EXTENDEDINFO_ALL` directive, the top-level I/O procedure passes the operational context further down into the active codec translation layer. This lets hardware filters or specialized decompression routines fill out custom, proprietary trailer headers that aren't natively mapped by standard MMIO container structures.