다음을 통해 공유


LUA 동사 생성

LUA(논리 단위 애플리케이션) 동사를 발급하려면 다음 절차가 필요합니다. 이 예제에서 사용된 동사는 RUI_INIT입니다.

LUA 동사를 발행하려면

  1. VCB(동사 제어 블록) 구조체에 대한 변수를 만듭니다. 다음은 그 예입니다.

    #include <winlua.h>  
            .  
            .  
    struct LUA_VERB_RECORD rui_init;  
    
    
  2. LUA_VERB_RECORD 구조체는 WINLUA.H 헤더 파일에 선언되어 있습니다.

  3. VCB 내의 변수를 지웁니다(0으로 설정).

    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 값은 기호 상수입니다. 이러한 상수는 Host Integration Server SDK의 WINLUA.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 */  
            .  
            .  
    }