发出 LUA 谓词

若要 (LUA) 谓词发出逻辑单元应用程序,需要执行以下过程。 在此示例中,发出的谓词 RUI_INIT

发出 LUA 谓词

  1. 为谓词控制块 (VCB) 结构创建变量。 例如:

    #include <winlua.h>  
            .  
            .  
    struct LUA_VERB_RECORD rui_init;  
    
    
  2. LUA_VERB_RECORD 结构在 WINLUA 中声明。H 头文件。

  3. ) VCB 中的变量清除 (设置为零:

    memset( &rui_init, 0, sizeof( rui_init) );  
    

    LUA 要求所有保留参数以及所发出的谓词不需要的所有参数都必须设置为零。 执行此操作的最简单方法是,在设置此特定谓词所需的参数之前,将整个 VCB 设置为零。

  4. 将值分配给向 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的值是符号常量。 这些常量在 WINLUA 中定义。Host Integration Server SDK 中的 H 头文件。 若要确保不同系统之间的可移植性,请使用符号常量而不是整数值。

  5. 调用 LUA。 唯一的参数是指向包含所需谓词 VCB 的结构地址的指针。

    RUI( &rui_init );  
    
  6. 检查 (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。

  7. 检查 LUA 返回的变量。

    if( rui_init.common.lua_prim_rc == LUA_OK )  
    {  
    /* Init OK */  
            .  
            .  
    }   
    else  
    {  
    /* Do error routine */  
            .  
            .  
    }