LOG_MESSAGE
(仅适用于 OS/2)LOG_MESSAGE 谓词在错误日志文件中记录一条消息,并选择性地在用户屏幕上显示该消息。 包含此谓词的目的是为了与现有应用程序兼容。
以下结构描述了 LOG_MESSAGE 谓词使用的谓词控制块 (VCB)。
语法
struct log_message {
unsigned short opcode;
unsigned char opext;
unsigned char reserv2;
unsigned short primary_rc;
unsigned long secondary_rc;
unsigned short msg_num;
unsigned char origntr_id[8];
unsigned char msg_file_name[3];
unsigned char msg_act;
unsigned short msg_ins_len;
unsigned char FAR * msg_ins_ptr;
};
成员
opcode
提供的参数。 该谓词标识操作代码 SV_LOG_MESSAGE。
opext
一个保留字段。
reserv2
一个保留字段。
primary_rc
返回的参数。 指定在谓词完成时由 APPC 设置的主要返回代码。 有效的返回代码因发出的 APPC 谓词而异。 有关此谓词的有效错误代码,请参阅“返回代码”。
secondary_rc
返回的参数。 指定在谓词完成时由 APPC 设置的次要返回代码。 有效的返回代码因发出的 APPC 谓词而异。 有关此谓词的有效错误代码,请参阅“返回代码”。
msg_num
提供的参数。 指定由 msg_file_name 指定的消息文件中的消息数。
origntr_id
提供的参数。 指定发出 LOG_MESSAGE 的组件的名称,或用户提供的 8 字节字符串。
msg_file_name
提供的参数。 指定包含要记录的消息的文件名称。
msg_act
提供的参数。 指定在处理消息时要执行的操作:
使用 SV_INTRV 可记录要对严重性级别 12 采取的干预措施,并在用户屏幕上显示消息。 用户必须按下某个键才能删除屏幕中的消息。
使用 SV_NO_INTRV 可记录要对严重性级别 12 采取的干预措施,但不显示消息。
msg_ins_len
提供的参数。 指定要插入到消息中的数据的长度。 如果不插入任何数据,请将此参数设置为零。
msg_ins_ptr
提供的参数。 指定要插入到消息中的数据的地址。
仅当 msg_ins_len 大于零时,才使用此参数。
返回代码
SV_OK
主要返回代码;谓词已成功执行。
SV_PARAMETER_CHECK
主要返回代码;由于参数错误,谓词未执行。
SV_INVALID_DATA_SEGMENT
次要返回代码;要插入到消息中的数据超出了段边界。
SV_INVALID_MESSAGE_ACTION
次要返回代码;msg_act 参数包含无效值。
SV_COMM_SUBSYSTEM_NOT_LOADED
主要返回代码;处理谓词时无法加载或终止某个必需的组件。 因此无法通信。 请联系系统管理员以执行纠正措施。
SV_INVALID_VERB
主要返回代码;opcode 参数与任何谓词的操作代码都不匹配。 未执行任何谓词。
SV_INVALID_VERB_SEGMENT
主要返回代码;VCB 超出了数据段的末尾。
SV_UNEXPECTED_DOS_ERROR
主要返回代码;发生了以下状况之一:
Microsoft Windows 系统在处理谓词时遇到错误。 已通过次要返回代码返回了操作系统返回代码。 如果该问题持续出现,请联系系统管理员执行纠正措施。
从另一个应用程序(其中发出的是 Windows SendMessage 函数调用,而不是更常见的 Windows PostMessage 函数调用)调用的消息循环发出了 CSV 。 无法处理谓词。
当 SendMessage 调用你的应用程序时发出了 CSV。 可以使用 InSendMessage Windows API 函数调用来确定应用程序是否是通过 SendMessage 调用的 。
备注
msg_file_name 值的长度必须为 3 个字符。 如有必要,请填充空格。 .MSG 扩展名是自动添加的。
包括头信息(40 字节)、消息文本和插入的数据在内的 msg_ins_len 总长度不应超过 256 字节。 如果长度大于 256 字节,则通信系统只会尝试记录头信息和插入的文本;将忽略消息文本。
创建日志消息文件时,可以指定要在消息中的哪个位置插入附加数据。 下面提供了更多信息。
msg_ins_ptr 的数据包含一系列以 null 终止的字符串(最多 9 个)。 (由于 IBM OS/2 ES 版本 1.0 仅支持三个数据字符串,因此你可能需要将插入的文本限制为三个字符串,以确保兼容性。)
创建消息文件
如果你要创建自己的消息文件,必须使用实用工具 MKMSGF。
消息编号的前三个字符必须与日志消息文件的三字符名称匹配。 这三个字符也在文件顶部声明。
系统按如下所述查找消息文件:
如果你使用自己的消息文件,则系统会假设该文件与程序可执行文件位于同一目录中。
如果你使用默认消息文件 COM.MSG,则只要加载了 SnaBase for Microsoft Host Integration Server,系统就会自动查找该文件。
如果你使用默认消息文件但未加载上述软件,则系统要求 DPATH 指明消息文件的路径。 这只适用于 Windows 版本 3.x 和 OS/2 操作系统。