PASSSTRUCT 结构

PASSSTRUCT 结构定义如下:

语法

  
typedef struct tagPassParm {  
    WORD    parm_length;  
    WORD    exit_code;  
    WORD    in_length;  
    LPBYTE  in_addr;  
    WORD    out_length;  
    LPBYTE  out_addr;  
    WORD    trns_id;  
    WORD    in_page;  
    WORD    out_page;  
    WORD    option;  
} PASSSTRUCT;  

成员

parm_length
提供的参数。 传递的结构的长度,通常设置为 24。 如果不需要或使用 选项 成员,则可以将此参数设置为 22。

exit_code
提供并返回的参数。 在条目中,此成员必须设置为零。 返回时,此成员指示退出状态。 返回 exit_code 值的法律值如下所示:

0

指示函数成功完成的正常退出代码。

1

不支持请求的转换。

12

exit_code字段未正确初始化为零。

128

源输入字符串中的最后一个字符是 DBCS 前导字节。

256

由于生成的转换目标字符串的长度超过 65535 字节,因此无法成功完成转换。

257

尝试加载一个文件并初始化其中一个 TrnsDTx.dll 文件时出错。

in_length
提供的参数。 指定输入源字符串的长度(以字节为单位)。

in_addr
提供的参数。 指向包含要转换的源字符串的缓冲区的指针。

out_length
提供并返回的参数。 指定输出转换后的字符串可用的最大长度(以字节为单位)。 返回时,此成员设置为成功时转换的输出字符串的长度,或者如果缓冲区太小,则设置为所需的输出缓冲区长度。

out_addr
提供的参数。 指向转换后将包含输出目标字符串的缓冲区的指针。

trns_id
提供的参数。 转换标识符,始终为零。

in_page
提供的参数。 指定传入源字符串的代码页。

out_page
提供的参数。 指定输出转换字符串的代码页。

option
如果 parm_length 设置为 24,则提供并返回参数。 作为提供的参数,它指定了一组可应用于翻译过程的选项。 这些选项的可能值如下所示:

位 15-9

保留。

位 8

将 (SO) /shift (SI) 字节添加到转换后的输出字符串。

位 3-7

保留。

位 2

如果设置了此位,则使用 IBM 指定的 1 字节代码表转换输入字符串。 仅当从代码页 932 转换为以下代码页之一时,此选项才有效:037、290、930 或 931。

如果此位为零,则使用使用 SYSCTBL 实用工具创建的转换表转换输入源字符串。

对于双字节字符,请始终使用 SYSCTBL 实用工具创建的转换表。

SYSCTBL.EXE 文件是 Host Integration Server 附带的实用工具程序,它提供了一个工具,可用于创建自定义转换表以与 TrnsDT 函数一起使用。

位 1

如果设置了此位,则表示输入源字符串以 2 字节字符开头。 通常,主机数据始终成对包含 SO/SI 控制字符,但在转换部分混合数据字符串时,必须从没有 SO 控制字符的双字节字符开始转换。 在这种情况下,数据本身没有足够的信息来确定它是否为双字节,因此必须设置第 1 位。

位 0

如果设置了此位,则表示输入源字符串包含 SO/SI 控制字符。 应按如下所示设置位 8 和位 0:

从电脑转换到主机位 8=1,位 0 =0 从主机转换为电脑位 8=0,位 0=1

返回时,如果最后一个字符是双字节字符, 则选项 设置为 4。