IOCTL_SERIAL_LSRMST_INSERT DeviceIoControl操作启用或禁用将线路状态和调制解调器状态值放置在应用程序通过ReadFile功能获取的常规数据流中。
当启用此线路状态和调制解调器状态数据放置模式时,转义字符将在数据流中的状态值前面。用户可定义的转义字符由IOCTL_SERIAL_LSRMST_INSERT操作设置。状态值由1到3 BYTE s组成。有关状态值详细信息,请参阅下面的备注部分。
dwIoControlCode = IOCTL_SERIAL_LSRMST_INSERT; //操作代码
lpInBuffer; //输入缓冲区的地址
nInBufferSize; //输入缓冲区的大小
lpOutBuffer = NULL; //输出缓冲区的地址不曾用过;必须为NULL
nOutBufferSize = 0; //输出缓冲区的大小不曾用过;必须为零
lpBytesReturned; //输出的实际字节的地址
参数
【lpInBuffer】
指向包含单个BYTE的缓冲区。
如果BYTE是非零值,则它是所需的线路状态和调制解调器状态值转义字符。操作将打开LSRMST_INSERT线路状态和调制解调器状态数据放置模式。
如果BYTE为零,则操作将关闭LSRMST_INSERT线路状态和调制解调器状态数据放置模式。
转义字符不能是XON或XOFF字符。
【nInBufferSize】
指定【lpInBuffer】指向的缓冲区的大小(以字节为单位)。对于此操作,此值应为1。
【lpOutBuffer】
指向输出缓冲区。不用于此操作。设置为NULL。
【nOutBufferSize】
指定【lpOutBuffer】指向的缓冲区的大小(以字节为单位)。不用于此操作。设置为零。
【lpBytesReturned】
指向DWORD,它接收存储在【lpOutBuffer】中的数据的实际大小(以字节为单位)。
返回值
如果操作成功,DeviceIoControl返回TRUE。
如果操作失败,DeviceIoControl返回FALSE。要获取扩展错误信息,请调用GetLastError.
备注
请注意,使用此方案的应用程序必须检查数据流中的每个字符,以确定是否存在调制解调器状态或线路状态数据。
如果LSRMST_INSERT模式已打开,以下值将遵循数据流中的指定转义字符:
值 | 含义 |
SERIAL_LSRMST_ESCAPE | 表示将转义字符本身接收到数据流中。 |
SERIAL_LSRMST_LSR_DATA | 表示发生线路状态更改,数据在接收硬件缓冲区中可用。在BYTE之后,行状态寄存器的BYTE值是处理线路状态更改时接收硬件缓冲区中的BYTE. |
SERIAL_LSRMST_LSR_NODATA | 表示发生线路状态更改,但接收硬件缓冲区中没有数据可用。 |
SERIAL_LSRMST_MST | 表示发生调制解调器状态更改。此后BYTE是一个BYTE,即处理调制解调器状态更改时调制解调器状态寄存器的值。 |
也可以看看