encode

[ encode [ , interface-attribute-list] ] interface interface-name
[ encode [ , op-attribute-list] ] proc-name
typedef [encode [ , type-attribute-list] ] type-name

interface-attribute-list

Specifies other attributes that apply to the interface as a whole.

interface-name

Specifies the name of the interface.

op-attribute-list

Specifies other operational attributes that apply to the procedure such as decode.

proc-name

Specifies the name of the procedure.

type-attribute-list

Specifies other attributes that apply to the type such as decode and allocate.

typename

Specifies a type defined in the IDL file.

 

Examples

/*

    ACF file example;

    Assumes MyType1, MyType2, MyType3, MyProc1, MyProc2, MyProc3 defined

    in IDL file  

    MyType1, MyType2, MyProc1, MyProc2 have encode and decode

    serialization support

    MyType3 and MyProc3 have encode serialization support only

*/

[ encode, implicit_handle(handle_t bh) ]    interface regress

    typedef [ decode ] MyType1;

    typedef [ encode, decode ] MyType2;

    [ decode ] MyProcc1();

    [ encode ] MyProc2();

}

 

Remarks

The encode attribute specifies that a procedure or a data type needs serialization support. This attribute causes the MIDL compiler to generate code that an application can use to serialize data into a buffer. The decode attribute provides deserialization support, generating the code for retrieving data from a buffer.

Use the encode and decode attributes in an ACF to generate serialization code for procedures or types defined in the IDL file of an interface. When used as an interface attribute, encode applies to all the types and procedures defined in the IDL file. When used as an operational attribute, encode applies only to the specified procedure. When used as a type attribute, encode applies only to the specified type.

When the encode or decode attribute is applied to a procedure, the MIDL compiler generates a serialization stub in a similar fashion as remote stubs are generated for remote routines. A procedure can be either a remotable or a serializing procedure, but it cannot be both. The prototype of the generated routine is sent to the STUB.H file while the stub itself goes into the STUB_C.C file.

The MIDL compiler generates two functions for each type the encode attribute applies to, and one additional function for each type the decode attribute applies to. For example, for a user-defined type named MyType, the compiler generates code for the MyType_Encode, MyType_Decode, and MyType_AlignSize functions. For these functions, the compiler writes prototypes to STUB.H and source code to STUB_C.C.

For additional information about serialization handles and encoding or decoding data, see Using Encoding ServicesE6C496.

See Also

decode