}; static LWMsgTypeSpec gStringListSpec[] = { LWMSG_POINTER_BEGIN, LWMSG_PWSTR, LWMSG_ATTR_NOT_NULL, LWMSG_POINTER_END, LWMSG_ATTR_ZERO_TERMINATED, LWMSG_ATTR_NOT_NULL, LWMSG_TYPE_END }; static LWMsgTypeSpec gExistingHandleSpec[] = { LWMSG_HANDLE(LW_SERVICE_HANDLE), LWMSG_ATTR_HANDLE_LOCAL_FOR_RECEIVER, LWMSG_ATTR_NOT_NULL, LWMSG_TYPE_END }; static LWMsgTypeSpec gOptionalHandleSpec[] = { LWMSG_HANDLE(LW_SERVICE_HANDLE), LWMSG_ATTR_HANDLE_LOCAL_FOR_RECEIVER, LWMSG_TYPE_END }; static LWMsgTypeSpec gNewHandleSpec[] = { LWMSG_HANDLE(LW_SERVICE_HANDLE),
} CounterRequest; typedef struct CounterReply { int counter; } CounterReply; typedef struct CounterAdd { CounterHandle* handle; int delta; } CounterAdd; LWMsgTypeSpec counterhandle_spec[] = { LWMSG_HANDLE(CounterHandle), LWMSG_ATTR_NOT_NULL, LWMSG_TYPE_END }; LWMsgTypeSpec counterrequest_spec[] = { LWMSG_STRUCT_BEGIN(CounterRequest), LWMSG_MEMBER_INT16(CounterRequest, counter), LWMSG_STRUCT_END, LWMSG_TYPE_END }; LWMsgTypeSpec counteradd_spec[] = { LWMSG_STRUCT_BEGIN(CounterAdd),