comm/datamodem
comm/datamodem 设备类由 datamodem 设备组成。 可以使用 文件 和 通信功能访问这些设备。 此类中的设备与支持LINEMEDIAMODE_DATAMODEM媒体类型的行设备相关联,该类型在 LINEDEVCAPS 结构的 dwMediaModes 成员中指定。
lineGetID 函数填充 VARSTRING 结构,将 dwStringFormat 设置为STRINGFORMAT_BINARY值并追加这些附加成员:
HANDLE hComm; // file handle to data modem
CHAR szDeviceName[1]; // name of data modem
hComm 成员是开放通信端口的句柄。 如果端口尚未打开,或者 lineGetID 的 dwSelect 参数不是LINECALLSELECT_CALL值,则此成员 NULL。 如果调用处于活动状态,服务提供商通常会打开端口本身来直接控制通信硬件,但只有在连接线路时才需要返回有效的句柄。 服务提供商使用 FILE_FLAG_OVERLAPPED 值打开端口,然后使用 lineSetDevConfig 函数指定的设置配置端口。 可以通过将通信函数与返回的句柄配合使用,为设备设置其他配置选项。
szDeviceName 成员是一个 null-terminated 字符串,指定与行、地址或调用关联的通信端口的名称。
如果 hComm 是有效的句柄,则可以在对文件函数的后续调用(如 ReadFile 和 WriteFile)中使用它来发送和接收调用中的数据。 使用完通信端口后,最好在使用 lineDeallocateCall 函数解除分配调用之前,必须使用 CloseHandle 函数关闭端口。
使用 lineGetDevConfig 和 lineSetDevConfig 函数时,某些服务提供商要求此设备类的配置数据采用以下格式:
typedef struct tagDEVCFG {
DEVCFGHDR dfgHdr;
COMMCONFIG commconfig;
} DEVCFG, *PDEVCFG, FAR* LPDEVCFG;
// Device setting information
typedef struct tagDEVCFGDR {
DWORD dwSize;
DWORD dwVersion;
WORD fwOptions;
WORD wWaitBong;
} DEVCFGHDR;
下面是用于 lineGetDevConfig 和 lineSetDevConfig 函数的设备配置信息。
-
dwSize
-
DEVCFGHDR 结构和 COMMCONFIG 结构的实际大小之和。
-
dwVersion
-
Unimodem DevConfig 结构的版本号。 此成员可以MDMCFG_VERSION(0x00010003)。
-
fwOptions
-
Unimodem 选项页上显示的选项标志。 此成员可以是这些值的组合:
-
TERMINAL_PRE (1)
-
显示终端前屏幕。
-
TERMINAL_POST (2)
-
显示终端后屏幕。
-
MANUAL_DIAL (4)
-
如果能够拨打电话,请手动拨打电话。
-
LAUNCH_LIGHTS (8)
-
在任务栏的状态区域中显示调制解调器图标。
默认情况下仅设置LAUNCH_LIGHTS值
-
-
wWaitBong
-
秒数(以两秒粒度为单位)以替换信用音调的等待($)。
-
Commconfig
-
COMMCONFIG 结构,可用于通信和调制解调器配置功能。