The Microsoft Real-time Compression Interface (MRCI) is a software interface that gives real-mode applications and device drivers success to compression services. The MRCI has been revised and enhanced for Windows 95. This section provides a summary of the revisions and enhancements.
A 32-bit MRCI client uses the sigOLD_EDX and sigNEW_EDX signature values to verify that an MRCI server has responded to the Detect MRCI Server (Interrupt 2Fh Function 04A12h) or Detect ROM BIOS MRCI Service (Interrupt 1Ah Function 0B001h) service. A 16-bit MRCI client uses the sigOLD_CX, sigNEW_CX, sigOLD_DX, and sigNEW_DX values.
Note that 32-bit MRCI clients must be virtual devices (VxDs). The Interrupt 2Fh interface is not directly callable from a Win32 application.
Additional flag values have been added to indicate the new capabilities of an MRCI server. These value are returned in the mi_flCapability field of the MRCINFO structure as a result of calling the Detect MRCI Server or Detect ROM BIOS MRCI Server service. The values also double as operation codes that a client passes to the server entry point specified by the mi_pfnOperate field.
There are the following new flag values:
Value | Meaning |
micapALTCOMP | Alternate compression |
micapALTDECOMP | Alternate decompression |
micapMRCI32 | Server has a 32-bit interface |
micapSPRCOMP | SuperCompress™ compression |
The MRCREQUEST structure has been revised. The mr_Reserved field has changed to mr_offUpdate, which is used for Update compression (micap_UPDCOMP) and Update SuperCompress (micap_SPRCOMP) compression only. When sending a request to a server, the mr_offUpdate field specifies the offset in the source buffer where the changed uncompressed data starts. The server responds to the request by copying, into mr_offUpdate, the offset in the destination buffer where the changed compressed data starts.
The MRCI server operation function, pointed to by the mi_pfnOperate field of the MRCINFO structure, can return the following new error values if the requested operation fails:
Value | Meaning |
MRCI_ERROR_INVALID_SIZE | Invalid buffer size. |
MRCI_ERROR_BUFFER_TOO_SMALL | Work buffer is too small. |
MRCI_ERROR_RESTART | Incremental compression was interrupted and must be restarted from the beginning. |
MRCI_ERROR_CONTINUE | Incremental compression in not finished but can be continued. |