对于 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 系统处理谓词时遇到错误。 作系统返回代码是通过辅助返回代码返回的。 如果问题仍然存在,请联系系统管理员以采取纠正措施。
CSV 是从发出 Windows SendMessage 函数调用的另一个应用程序调用的消息循环发出的,而不是较常见的 Windows PostMessage 函数调用。 无法进行谓词处理。
SendMessage 调用应用程序时发出了 CSV。 可以使用 InSendMessage Windows API 函数调用来确定应用程序是否已使用 SendMessage 调用。
注解
msg_file_name的值必须长三个字符。 如有必要,请用空格填充。 这。会自动添加 MSG 扩展。
msg_ins_len的总长度(包括标头信息(40 字节)、消息文本和插入的数据,不应超过 256 字节。 如果长度大于 256 字节,通信系统将尝试仅记录标头信息和插入的文本;消息文本将被排除。
创建日志文件时,可以指定要在消息中插入其他数据的位置。 下面提供了更多信息。
msg_ins_ptr的数据包含一系列最多 9 个以 null 结尾的字符串。 (由于 IBM OS/2 ES 版本 1.0 仅支持三个数据字符串,因此您可能希望将插入的文本限制为三个字符串以确保兼容性。
创建消息文件
如果要创建自己的消息文件,必须使用实用工具 MKMSGF。
消息编号的前三个字符必须与日志文件的三个字符名称匹配。 这三个字符也在文件顶部声明。
系统按如下所示查找消息文件:
如果使用自己的消息文件,系统会假定该文件与程序可执行文件位于同一目录中。
如果使用默认消息文件,则 COM。MSG 会自动查找文件,前提是加载了用于 Microsoft Host Integration Server 的 SnaBase。
如果使用默认消息文件而不加载前面提到的软件,则系统需要 DPATH 来指示消息文件的路径。 这仅适用于 Windows 版本 3。x 和 OS/2作系统。