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 系统处理谓词时遇到错误。 作系统返回代码是通过辅助返回代码返回的。 如果问题仍然存在,请联系系统管理员以采取纠正措施。

  • 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作系统。