All data transmitted on the network during a remote procedure call must resolve to a base type or predefined type.
MIDL supports the following base types: int, boolean, byte, char, double, float, handle_t, hyper, long, short, small, and void *. The keywords signed and unsigned can be used to qualify integer and character types. MIDL also provides the predefined types error_status_t and wchar_t.
Note The boolean base type is not compatible with the oleautomation attribute. Use VARIANT_BOOL in your Automation-compatible interfaces.
Base types can appear as type specifiers in const declarations, typedef declarations, general declarations, and as parameter type specifiers in function declarators.
The base and predefined types have the following default signs and sizes:
Base type | Default sign | Description |
---|---|---|
boolean | unsigned | 8-bit data item |
byte | - (not applicable) | 8-bit data item |
char | unsigned | 8-bit unsigned data item |
double | - | 64-bit floating-point number |
float | - | 32-bit floating-point number |
handle_t | - | Primitive handle type |
hyper | signed | 64-bit signed integer |
int | signed | 32-bit signed integer |
long | signed | 32-bit signed integer |
short | signed | 16-bit signed integer |
small | signed | 8-bit signed integer |
void * | - | 32-bit context handle pointer type |
wchar_t | unsigned | 16-bit unsigned data item |
Any other types in the interface must be derived from these base or predefined types. The following restrictions apply to data types in interfaces:
byte, char, handle_t, long, /osf, short, small, wchar_t