論理ユニット アプリケーション (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 では、すべての予約済みパラメーターと、発行される動詞で不要なすべてのパラメーターを 0 に設定する必要があります。 これを行う最も簡単な方法は、この特定の動詞に必要なパラメーターを設定する前に VCB 全体を 0 に設定することです。
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 ヘッダー ファイル。 異なるシステム間の移植性を確保するには、整数値ではなくシンボリック定数を使用します。
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 */ . . }