extern "C" DLL_EXPORT BOOL WINAPI MarshalStructAsParam_AsExpByRefInU(U* str1)
{
	if(!IsCorrectU(str1))
	{
		printf("\tMarshalStructAsParam_AsExpByRefIn6:U param not as expected\n");
		PrintU(str1, "str1");
		return FALSE;
	}
	ChangeU(str1);
	return TRUE;
}
extern "C" DLL_EXPORT BOOL __stdcall MarshalStructAsParam_AsExpByRefU_Stdcall(U* str1)
{
    if(!IsCorrectU(str1))
    {
        PRINT_ERR_INFO();
        PrintU(str1, "str1");
        return FALSE;
    }
    ChangeU(str1);
    return TRUE;
}
extern "C" DLL_EXPORT BOOL __stdcall DoCallBack_MarshalByRefStruct_Stdcall_U(ByRefStdcallCaller_U caller)
{
    U u;
    u.d = 1.23;

    if(!caller(&u))
    {
        PRINT_ERR_INFO();
        return FALSE;
    }

    if( !IsCorrectU( &u ) )
    {
        PRINT_ERR_INFO();
        return FALSE;
    }

    return TRUE;
}
extern "C" DLL_EXPORT BOOL _cdecl DoCallBack_MarshalByValStruct_Cdecl_U(ByValCdeclCaller_U caller)
{
    U u;
    u.d = 3.2;

    if(!caller(u))
    {
        PRINT_ERR_INFO();
        return FALSE;
    }

    if( !IsCorrectU( &u ) )
    {
        PRINT_ERR_INFO();
        return FALSE;
    }

    return TRUE;
}