次の方法で共有


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 では、すべての予約済みパラメーターと、発行される動詞で不要なすべてのパラメーターを 0 に設定する必要があります。 これを行う最も簡単な方法は、この特定の動詞に必要なパラメーターを設定する前に VCB 全体を 0 に設定することです。

  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 */  
            .  
            .  
    }