BuildCommDCBAndTimeoutsW 函数 (winbase.h)

将设备定义字符串转换为适当的设备控制块代码,并将其置于设备控制块中。 该函数还可以为设备设置超时值,包括没有超时的可能性;此函数的行为取决于设备定义字符串的内容。

语法

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

参数

[in] lpDef

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

字符串的格式必须与 模式相同, 命令的命令行参数:

COMx[][baud={111101515030300300606001212002424004848009696001919200}][奇偶校验={neom}][data={5678}][stop={11.52}][to={off}][xon={onoff}][odsr={onoff}][octs={onoff}][dtr={onoffhs}][rts={onoffhstg}][idsr={onoff}]

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

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

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

例如,以下字符串指定 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
目标平台 窗户
标头 winbase.h (包括 Windows.h)
Kernel32.lib
DLL Kernel32.dll

另请参阅

BuildCommDCB

COMMTIMEOUTS

Communications Functions

通信资源

DCB

GetCommTimeouts

SetCommTimeouts