Freigeben über


Ausgeben eines LUA-Verbs

Das folgende Verfahren ist erforderlich, um ein LUA-Verb (Logical Unit Application) ausstellen zu können. In diesem Beispiel wird das Verb RUI_INIT verwendet.

So stellen Sie ein LUA-Verb aus

  1. Erstellen Sie eine Variable für die Verbsteuerelementblockstruktur (VCB). Beispiel:

    #include <winlua.h>  
            .  
            .  
    struct LUA_VERB_RECORD rui_init;  
    
    
  2. Die LUA_VERB_RECORD-Struktur wird in der WINLUA.H-Headerdatei deklariert.

  3. Setzen Sie die Variablen innerhalb der VCB auf Null zurück.

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

    LUA erfordert, dass alle reservierten Parameter und alle Parameter, die nicht für das ausgegebene Verb erforderlich sind, auf Null festgelegt werden müssen. Am einfachsten können Sie dies tun, indem Sie die gesamte VCB auf Nullen festlegen, bevor Sie die für dieses bestimmte Verb erforderlichen Parameter festlegen.

  4. Weisen Sie den VCB-Parametern Werte zu, die Informationen zu LUA bereitstellen:

    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);  
    

    Die Werte LUA_VERB_RUI und LUA_OPCODE_RUI_INIT sind symbolische Konstanten. Diese Konstanten werden in der Headerdatei WINLUA.H im Host Integration Server SDK definiert. Um die Portabilität zwischen verschiedenen Systemen sicherzustellen, verwenden Sie symbolische Konstanten und keine ganzzahligen Werte.

  5. Rufen Sie LUA auf. Der einzige Parameter ist ein Zeiger auf die Adresse der Struktur, die den VCB für das gewünschte Verb enthält.

    RUI( &rui_init );  
    
  6. Überprüfen Sie das asynchrone Kennzeichen (rui_init.common.lua_flag2.async), um festzustellen, ob das Verb asynchron abgeschlossen wurde. Wenn Ereignisse verwendet werden und das Verb asynchron abgeschlossen wurde, warten Sie, bis das Ereignis abgeschlossen ist.

    if (rui_init.common.lua_flag2.async)  
    {  
    /* verb will complete asynchronously so continue  
    with other processing */  
    /* then wait */  
    WaitForSingleObject (...)  
    }  
    

    Überprüfen Sie den Rückgabecode nicht. Es kann sich von LUA_IN_PROGRESS zu LUA_OK geändert haben, wenn Sie es überprüfen.

  7. Überprüfen Sie die von LUA zurückgegebenen Variablen.

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