/error
midl
/error { allocation | stub_data | ref | bounds_check | none | all }
allocation
Checks
whether midl_user_allocate returns a null value, indicating an
out-of-memory error.
stub_data
Generates a
stub that catches unmarshalling exceptions on the server side and propogates
them back to the client.
ref
Generates
code that checks at run time to ensure that no NULL [ref] pointers are being
passed to the client stubs and raises an RPC_X_NULL_REF_POINTER exception if it
finds any.
bounds_check
Checks size
of conformant-varying and varying arrays against transmission length
specification.
none
Performs no
error checking.
all
Performs all
error checking.
Examples
midl /error allocation filename.idl
midl /error none filename.idl
Remarks
The /error
switch selects the amount of error checking to be performed by the generated
stub files.
By default,
the MIDL compiler generates code that checks for enum and certain memory-access
errors. The enum errors that are checked are truncation errors caused by
conversion between long enum types (32-bit integers) and short enum
types (the network-data representation of enum) and the number of
identifiers in an enumeration exceeding 32,767. The memory-access error
checking is for pointers that exceed the end of the buffer in marshalling code
and for conformant arrrays whose size is less than zero. Use the /error
bounds_check flag to check for other invalid array bounds.
When you
specify /error allocate, the stubs include code that raises an exception
when midl_user_allocate returns 0.
The /error
stub_data option prevents client data from crashing the server during
unmarshalling; in effect providing a more robust method of handling the
unmarshalling operation.
See Also