BuildCommDCBAndTimeoutsW 函数 (winbase.h)

将设备定义字符串转换为相应的设备控制块代码,并将其放入设备控制块中。 函数还可以为设备设置超时值,包括无超时的可能性;函数在这方面的行为取决于设备定义字符串的内容。

语法

BOOL BuildCommDCBAndTimeoutsW(
  [in]  LPCWSTR        lpDef,
  [out] LPDCB          lpDCB,
  [out] LPCOMMTIMEOUTS lpCommTimeouts
);

参数

[in] lpDef

设备控制信息。 函数采用此字符串,对其进行分析,然后在 lpDCB 指向的 DCB 结构中设置适当的值。

字符串必须具有与 mode 命令的命令行参数相同的形式:

COMx[][baud={11|110|15|150|30|300|60 600||12|1200|24|2400|48|4800|96|9600|19|19200}][parity={n |e|o|m|s}][data={5|6|7|8}][stop={1|1.5|2}][to={on|off}][xon={on|off}][odsr={on|off}][octs={on|off}][dtr={on|off|hs}][rts={on|off|hs|tg}][idsr={on|off}]

“baud”子字符串可以是列出的任意值,这些值成对列出。 两位数值是它们所表示的关联值的前两位数字。 例如,11 表示 110 波特,19 表示 19,200 波特。

“parity”子字符串指示如何使用奇偶校验位来检测传输错误。 值表示“none”、“even”、“odd”,
“mark”和“space”。

有关详细信息,请参阅 TechNet 中的 Mode 命令参考。

例如,以下字符串将波特率指定为 1200、无奇偶校验、8 个数据位和 1 个停止位:

baud=1200 parity=N data=8 stop=1

[out] lpDCB

指向 DCB 结构的指针,该结构从 lpDef 指向的设备控制信息字符串接收信息。 此 DCB 结构定义通信设备的控制设置。

[out] lpCommTimeouts

指向接收超时信息的 COMMTIMEOUTS 结构的指针。

返回值

如果该函数成功,则返回值为非零值。

如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

注解

BuildCommDCBAndTimeouts 函数根据 lpDef 中是否存在“to={on|off}”子字符串修改其超时设置行为:

  • 如果该字符串包含子字符串“to=on”,则函数将 COMMTIMEOUTS 结构的 WriteTotalTimeoutConstant 成员设置为 60000,将所有其他成员设置为 0。
  • 如果该字符串包含子字符串“to=off”,则函数会将 COMMTIMEOUTS 的成员设置为 0。
  • 如果该字符串未指定“to={on|off}”子字符串,则函数将忽略 lpCommTimeouts 中的 COMMTIMEOUTS 结构。
有关详细信息,请参阅 BuildCommDCB 函数的备注。

注意

winbase.h 标头将 BuildCommDCBAndTimeouts 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

要求
最低受支持的客户端 Windows XP
最低受支持的服务器 Windows Server 2003
目标平台 Windows
标头 winbase.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

BuildCommDCB

COMMTIMEOUTS

通信函数

通信资源

DCB

GetCommTimeouts

SetCommTimeouts