Condividi tramite


Emissione di un verbo LUA

La procedura seguente è necessaria per emettere un verbo LUA (Logical Unit Application). In questo esempio il verbo emesso viene RUI_INIT.

Per rilasciare un comando LUA

  1. Creare una variabile per la struttura del blocco di controllo verbo (VCB). Per esempio:

    #include <winlua.h>  
            .  
            .  
    struct LUA_VERB_RECORD rui_init;  
    
    
  2. La struttura LUA_VERB_RECORD viene dichiarata nel file di intestazione WINLUA.H.

  3. Cancella (impostato su zero) le variabili all'interno di VCB:

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

    LUA richiede che tutti i parametri riservati e tutti i parametri non richiesti dal verbo rilasciato siano impostati su zero. Il modo più semplice per eseguire questa operazione consiste nell'impostare l'intero vcb su zero prima di impostare i parametri necessari per questo verbo specifico.

  4. Assegnare valori ai parametri VCB che forniscono informazioni a LUA:

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

    I valori LUA_VERB_RUI e LUA_OPCODE_RUI_INIT sono costanti simboliche. Queste costanti sono definite nel file di intestazione WINLUA.H nel SDK di Host Integration Server. Per garantire la portabilità tra sistemi diversi, usare costanti simboliche e non valori interi.

  5. Invocare LUA. L'unico parametro è un puntatore all'indirizzo della struttura contenente il vcb per il verbo desiderato.

    RUI( &rui_init );  
    
  6. Controllare il flag asincrono (rui_init.common.lua_flag2.async) per determinare se il verbo è stato completato in modo asincrono. Se vengono usati eventi e il verbo è stato completato in modo asincrono, attendere il completamento dell'evento.

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

    Non controllare il codice restituito. Potrebbe essere passato da LUA_IN_PROGRESS a LUA_OK al momento in cui lo verifichi.

  7. Controllare le variabili restituite da Lua.

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