Управляющий код IOCTL_SERIAL_LSRMST_INSERT разрешает или запрещает помещение значений состояния линии и состояния модема в обычный поток данных, который прикладная программа получает через посредство функции ReadFile.
Когда для этих данных о состоянии линии и состоянии модема включается режим их помещения, значениям статуса в потоке данных предшествует символ начала управляющей последовательности. Определяемый пользователем символ начала управляющей последовательности устанавливается управляющим кодом IOCTL_SERIAL_LSRMST_INSERT. Значения состояния состоят из 1 - 3 байтов (BYTE). Смотри раздел Замечания, в котором следует подробное описание значений статуса.
Чтобы выполнять эту операцию, вызовите функцию DeviceIoControl с ниже перечисленными параметрами.
Синтаксис
BOOL DeviceIoControl( (HANDLE) hDevice, // дескриптор устройства IOCTL_SERIAL_LSRMST_INSERT, // dwIoControlCode (LPVOID) lpInBuffer, // буфер ввода (DWORD) nInBufferSize, // размер буфера ввода NULL, // lpOutBuffer 0, // nOutBufferSize (LPDWORD) lpBytesReturned, // число возвращаемых байтов (LPOVERLAPPED) lpOverlapped // структура OVERLAPPED ); |
Если BYTE - ненулевое значение, он является требуемым значением символа начала управляющей последовательности состоянием линии и модема. Операция переключит режим LSRMST_INSERT помещения данных о состоянии линии и модема во включенное состояние.
Если BYTE равняется нулю, операция переключит режим LSRMST_INSERT размещения данных о состоянии линии и модема в выключенное состояние.
Символ начала управляющей последовательности не может быть символом XON или XOFF.
Не используется с этой операцией; устанавливается в ПУСТО (NULL).
Не используется с этой операцией; устанавливается в нуль.
Если lpOverlapped - не ПУСТО (NULL), то lpBytesReturned может быть ПУСТО (NULL). Если этот параметр - не ПУСТО (NULL) и операция возвращает данные, lpBytesReturned не имеет смысла до тех пор, пока не завершиться асинхронная операция. Чтобы извлечь число байтов возвращаемых данных, вызовите функцию GetOverlappedResult. Если hDevice связан с портом завершения ввода-вывода данных (I/O), Вы можете извлечь число возвращаемых данных при помощи вызова GetQueuedCompletionStatus.
Если hDevice открывался без определения флажка FILE_FLAG_OVERLAPPED, то параметр lpOverlapped игнорируется.
Если hDevice открывался с флажком FILE_FLAG_OVERLAPPED, то операция выполняется как асинхронная операция. В этой ситуации, параметр lpOverlapped должен указать на допустимую структуру OVERLAPPED, которая содержит дескриптор объекта события. В противном случае, функция завершается ошибкой непредсказуемыми способами.
Для асинхронных операций, DeviceIoControl возвращает значение немедленно, и объект события подает сигнал, когда операция завершилась. В противном случае, функция не возвращает значение до тех пор, пока операция не завершиться или не произойдет ошибка.
Возвращаемые значения
Если операция завершается успешно, DeviceIoControl возвращает ненулевое значение.
Если операция завершается ошибкой, DeviceIoControl возвращает нуль. Чтобы получить дополнительную информацию об ошибке, вызовите GetLastError.
Обратите внимание! на то, что приложение, которое использует эту схему, должно проверить каждый символ в потоке данных, чтобы выявить присутствие данных состояния линии или состояния модема. |
Нижеследующие значения следуют за символом начала управляющей последовательности в потоке данных, если был включен режим LSRMST_INSERT.
Значение | Предназначение |
---|---|
SERIAL_LSRMST_ESCAPE | Обозначает прием символа начала управляющей последовательности непосредственно в поток данных. |
SERIAL_LSRMST_LSR_DATA | Указывает, что изменение состояния линии произошло и данные были доступны в аппаратном буфере приемника. Следующий байт (BYTE) - это значение BYTE зарегистрированного состояния линии, которое представлено в приемном аппаратном буфере, когда обрабатывалось изменение состояния линии. |
SERIAL_LSRMST_LSR_NODATA | Указывает, что изменение состояния линии произошло, но данные не были доступны в приемном аппаратном буфере. |
SERIAL_LSRMST_MST | Указывает, что изменение состояния модема произошло. Следующий байт (BYTE) - это BYTE, который является значением зарегистрированного состояния модема, когда обрабатывалось изменение состояния модема. |
Смотри также
Обзор Коммуникационные ресурсы, Управляющие коды, используемые коммуникационными ресурсами, DeviceIoControl, ReadFile
Размещение и совместимость IOCTL_SERIAL_LSRMST_INSERT |
||
К |
Windows XP |
Да |
л |
Windows 2000 Professional |
Да - |
и |
Windows NT Workstation |
Да - |
е |
Windows Me |
Нет |
н |
Windows 98 |
Нет |
т |
Windows 95 |
Нет |
С |
Windows 2003 Server |
Да |
е |
Windows 2000 Server |
Да |
р |
Windows NT Server |
Да |
в | ||
е | ||
р | ||
Заголовочный файл |
||
- объявлено в |
Winioctl.h |
|
- включено в |
- |
|
Unicode |
- |
|
Замечания по платформе |
Не имеется |