要发出逻辑单元应用程序(LUA)的动词,需要遵循以下步骤。 在此示例中,动词是RUI_INIT。
发出 LUA 动词命令
为谓词控制块 (VCB) 结构创建变量。 例如:
#include <winlua.h> . . struct LUA_VERB_RECORD rui_init;
LUA_VERB_RECORD结构在 WINLUA.H 头文件中声明。
清除(设置为零)VCB 中的变量:
memset( &rui_init, 0, sizeof( rui_init) );
LUA 要求将所有保留参数以及指令中不需要的所有参数都设置为零。 执行此作的最简单方法是在设置此特定谓词所需的参数之前将整个 VCB 设置为零。
将值分配给向 LUA 提供信息的 VCB 参数:
rui_init.common.lua_verb = LUA_VERB_RUI; rui_init.common.lua_verb_length = sizeof(struct LUA_COMMON); rui_init.common.lua_opcode = LUA_OPCODE_RUI_INIT; memcpy (rui_init.common.lua_luname, "THISLU ", 8);
LUA_VERB_RUI和LUA_OPCODE_RUI_INIT的值是符号常量。 这些常量在 Host Integration Server SDK 中的 WINLUA.H 头文件中定义。 若要确保不同系统之间的可移植性,请使用符号常量而不是整数值。
调用 LUA。 唯一参数是指向包含所需谓词 VCB 的结构地址的指针。
RUI( &rui_init );
检查异步标志(rui_init.common.lua_flag2.async),以确定操作是否异步完成。 如果正在使用事件并且动词以异步方式完成,请等待事件完成。
if (rui_init.common.lua_flag2.async) { /* verb will complete asynchronously so continue with other processing */ /* then wait */ WaitForSingleObject (...) }
不检查返回代码。 检查时,它可能已从LUA_IN_PROGRESS更改为LUA_OK。
检查 LUA 返回的变量。
if( rui_init.common.lua_prim_rc == LUA_OK ) { /* Init OK */ . . } else { /* Do error routine */ . . }