// ntddser.h
// CTL_CODE(0x001b, 0x01f, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_LSRMST_INSERT 0x001B007C
View the official Windows Driver Kit DDI reference// winioctl.h
// CTL_CODE(0x001b, 0x01f, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_LSRMST_INSERT 0x001B007C
View the official Win32 API referenceNo description available.
The IOCTL_SERIAL_LSRMST_INSERT request enables or disables the insertion of information about line status and modem status in the receive data stream. If LSRMST insertion is enabled, the driver inserts event information for the supported event types. The event information includes an event header followed by event-specific data.
The event header contains a client-specified escape character and a SERIAL_LSRMST_XXX constant that indicates the event type. The driver supports the following event types:
SERIAL_LSRMST_LSR_DATA
A change occurred in the line status. The serial controller driver inserts an event header followed by the event-specific data, which is the value of the line status register followed by the character present in the receive hardware when the line-status change was processed.
SERIAL_LSRMST_LSR_NODATA
A line status change occurred, but no data was available in the receive buffer. The serial controller driver inserts an event header followed by the event-specific data, which is the value of the line status register when the line status change was processed.
SERIAL_LSRMST_MST
A change occurred in the modem status. The serial controller driver inserts an event header followed by the event-specific data, which is the value of the modem status register when the modem-status change was processed.
SERIAL_LSRMST_ESCAPE
Indicates that the next character in the receive data stream, which was received from the device, is identical to the client-specified escape character. The serial controller driver inserts an event header. There is no event-specific data.
The AssociatedIrp.SystemBuffer member points to a client-allocated UCHAR input value to use as the escape character. If the escape character is nonzero, insertion is enabled, and the serial driver uses the specified escape character. Otherwise, insertion is disabled.
The Parameters.DeviceIoControl.InputBufferLength member is set to the size, in bytes, of a UCHAR.
None.
None.
If the request is successful, the Information member is set to the size, in bytes, of a UCHAR. Otherwise, Information is set to zero.
The Status member is set to one of the Generic Status Values for Serial Device Control Requests. A status of STATUS_INVALID_PARAMETER indicates that the specified escape character is the same as the XON (transmit on) or the XOFF (transmit off) character, or that error replacement is enabled with handshake flow control.
Enables or disables the placement of line status and modem status values into the regular data stream that an application acquires through the ReadFile function.
When this line-status and modem-status data placement mode is enabled, status values are preceded in the data stream by an escape character. The user-definable escape character is set by the IOCTL_SERIAL_LSRMST_INSERT control code. See the Remarks section for status value details.
To perform this operation, call the DeviceIoControl function with the following parameters.
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to device
IOCTL_SERIAL_LSRMST_INSERT, // dwIoControlCode
(LPVOID) lpInBuffer, // input buffer
(DWORD) nInBufferSize, // size of input buffer
NULL, // lpOutBuffer
0, // nOutBufferSize
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
);
Irp->IoStatus.Status is set to STATUS_SUCCESS if the request is successful.
Otherwise, Status to the appropriate error condition as a NTSTATUS code.
For more information, see NTSTATUS Values.
[!NOTE] An application that uses this scheme must examine each character in the data stream to determine the presence of modem-status or line-status data.
The following values follow the designated escape character in the data stream if the LSRMST_INSERT mode has been turned on.
| Value | Meaning |
|---|---|
| SERIAL_LSRMST_ESCAPE | Indicates the reception of the escape character itself into the data stream. |
| SERIAL_LSRMST_LSR_DATA | Indicates that a line status change occurred, and data was available in the receive hardware buffer. Following this BYTE is a BYTE value of the line status register is the BYTE present in the receive hardware buffer when the line status change was processed. |
| SERIAL_LSRMST_LSR_NODATA | Indicates that a line status change occurred, but no data was available in the receive hardware buffer. |
| SERIAL_LSRMST_MST | Indicates that a modem status change occurred. Following this BYTE is a BYTE that is the value of the modem status register when the modem status change was processed. |