pointers
MIDL supports
three kinds of pointers: reference pointers, unique pointers, and full
pointers. These pointers are specified by the pointer attributes ref, unique,
and ptr.
A pointer
attribute can be applied as a type attribute; as a field attribute that applies
to a structure member, union member, or parameter; or as a function attribute
that applies to the function return type. The pointer attribute can also appear
with the pointer_default keyword.
To allow a
pointer parameter to change in value during a remote function, you must provide
another level of indirection by supplying multiple pointer declarators. The
explicit pointer attribute applied to the parameter affects only the rightmost
pointer declarator for the parameter. When there are multiple pointer
declarators in a parameter declaration, the other declarators default to the
pointer attribute specified by the pointer_default attribute. To apply
different pointer attributes to multiple pointer declarators, you must define
intermediate types that specify the explicit pointer attributes.