#include "..\include_spec_header.h"

// 调用格式: SDT_BOOL 调用子程序, 命令说明: "以stdcall方式(即WINAPI或Pascal)调用指定的子程序（子程序指针，或子程序地址）并取回被调用子程序的返回值，支持任意多个参数，参数支持除字节集之外的其它所有基本数据类型。调用子程序之前，您需要明确地知道它的参数类型和参数个数，以及返回值类型。本命令返回“真”仅表示调用过程中没有出异常情况，并不表示被调用的子程序执行成功。"
// 参数<1>: 子程序指针或子程序地址 _SDT_ALL, 参数说明: "提示：在子程序名称前加“&”即可得到该子程序的“子程序指针”，如“&子程序1”就是“子程序1”的子程序指针；子程序地址可通过本库中的“取子程序地址()”命令获取，“到整数(&子程序1)”返回的也是子程序1的执行地址，也可通过Windows系统API函数“GetProcAddress()”获取，或由外部程序传入。"
// 参数<2>: [保留参数 _SDT_ALL], 参数说明: NULL
// 参数<3>: [&返回值 _SDT_ALL], 参数说明: "本参数用于接收子程序被调用后的返回值；如果该子程序没有返回值或不需要接收返回值，请省略本参数。提供本参数时，请务必提供准确的数据类型，否则所得结果可能不正确。"
// 参数<4>: [参数 _SDT_ALL], 参数说明: "本参数值将作为参数传入被调用子程序。如果相应子程序没有参数，请省略本参数；如果相应子程序有多个参数，请重复提供本参数。请务必提供准确的参数类型和参数个数，否则后果不可预知。"
// 变长参数, 命令参数表中最后一个参数可以被重复添加
SPEC_EXTERN_C void spec_CallFunction_6_spec(PMDATA_INF pRetData, INT nArgCount, PMDATA_INF pArgInf)
{
    PVOID    arg1 = pArgInf[0].m_pByte;
    PVOID    arg2 = pArgInf[1].m_pByte;
    PVOID    arg3 = pArgInf[2].m_pByte;
    PVOID    arg4 = pArgInf[3].m_pByte;

}

