in inc/com_wrapper/com_wrapper.h [295:314]
ULONG MU_C5(internal_, wrapped_handle_type, _, implementing_interface, _Release)(implementing_interface* This) \
{ \
ULONG result; \
if (This == NULL) \
{ \
LogError("Invalid arguments: This=%p", This); \
result = ULONG_MAX; \
} \
else \
{ \
MU_C2(wrapped_handle_type, _COM_WRAPPER)* com_wrapper = (MU_C2(wrapped_handle_type, _COM_WRAPPER)*)((unsigned char*)This - offsetof(MU_C2(wrapped_handle_type, _COM_WRAPPER), MU_C2(implementing_interface, _if))); \
result = (ULONG)interlocked_decrement(&com_wrapper->ref_count); \
if (result == 0) \
{ \
com_wrapper->destroy_func(com_wrapper->object_data); \
free(com_wrapper); \
} \
} \
return result; \
} \