EHLLAPI 调用格式

EHLLAPI 入口点 (hllapi) 始终使用以下四个参数调用:
  1. EHLLAPI 函数编号(输入)
  2. 数据缓冲区(输入/输出)
  3. 缓冲区长度(输入/输出)
  4. 位置(输入);返回码(输出)
IBM® 标准 EHLLAPI 的原型是:
[long hllapi (LPWORD, LPSTR, LPWORD, LPWORD);
IBM® 增强 EHLLAPI 的原型是:
[long hllapi (LPINT, LPSTR, LPINT, LPINT);
每个参数都是通过引用而不是通过值传递的。因此,函数调用的每个参数都必须是指向值的指针,而不是值本身。例如,以下是调用 EHLLAPI 查询会话状态功能的正确示例:
    #include "hapi_c.h"
    struct HLDQuerySessionStatus QueryData;
    int    Func, Len, Rc;
    long   Rc;
 
    memset(QueryData, 0, sizeof(QueryData)); // Init buffer
    QueryData.qsst_shortname = 'A';          // Session to query
    Func = HA_QUERY_SESSION_STATUS;          // Function number
    Len  = sizeof(QueryData);                // Len of buffer
    Rc   = 0;                                // Unused on input
 
    hllapi(&Func, (char *)&QueryData, &Len, &Rc);  // Call EHLLAPI
    if (Rc != 0) {                            // Check return code
      // ...Error handling
    }
hllapi 调用中的所有参数都是指针,并且 EHLLAPI 函数的返回码以第 4 个参数的值返回,而不是作为函数的值返回。例如,以下项正确:
    if (hllapi(&Func, (char *)&QueryData, &Len, &Rc) != 0) { // WRONG!
      // ...Error handling
    }

虽然 hllapi 函数被定义为针对 IBM® 标准和增强 EHLLAPI 返回 long 数据类型,而针对 WinHLLAPI 返回 void 数据类型,但其值未定义,不应使用。

hllapi 调用的第二到第四个参数可以将信息返回到应用程序。每个 EHLLAPI 函数的描述均描述了在这些参数中返回的信息(如有)。