EHLLAPI 调用格式
EHLLAPI 入口点 (hllapi) 始终使用以下四个参数调用:
- EHLLAPI 函数编号(输入)
- 数据缓冲区(输入/输出)
- 缓冲区长度(输入/输出)
- 位置(输入);返回码(输出)
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 函数的描述均描述了在这些参数中返回的信息(如有)。