Управляющий код IOCTL_SERIAL_LSRMST_INSERT


Управляющий код 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
); 

Параметры

hDevice
[in] Дескриптор устройства, на котором должна выполняться операция. Чтобы извлечь дескриптор устройства, вызовите функцию CreateFile.
dwIoControlCode
[in] Управляющий код для операции.  Для этой операции используйте IOCTL_SERIAL_LSRMST_INSERT.
lpInBuffer
[in] Указатель на буфер, который содержит единственный байт (BYTE).

Если  BYTE - ненулевое значение, он является требуемым значением символа начала управляющей последовательности  состоянием линии и модема. Операция переключит режим LSRMST_INSERT помещения данных о состоянии линии и модема во включенное состояние.

Если BYTE равняется нулю, операция переключит режим LSRMST_INSERT размещения данных о состоянии линии и модема в выключенное состояние.

Символ начала управляющей последовательности не может быть символом XON или XOFF.

nInBufferSize
[in] Размер буфера вывода данных, в байтах. Для этой операции это значение должно быть 1.
lpOutBuffer

Не используется с этой операцией; устанавливается в ПУСТО (NULL).

nOutBufferSize

Не используется с этой операцией; устанавливается в нуль.

lpBytesReturned
[out] Указатель на переменную, которая получает размер данных, сохраненных в буфере вывода данных, в байтах.
Если параметр lpOverlapped - ПУСТО (NULL), то параметр lpBytesReturned не может быть ПУСТО (NULL). Даже когда операция не возвращает выводимые данные, а lpOutBuffer - ПУСТО (NULL), функция DeviceIoControl использует параметр lpBytesReturned. После такой операции, значение lpBytesReturned не имеют смысла.

Если lpOverlapped - не ПУСТО (NULL), то lpBytesReturned может быть ПУСТО (NULL). Если этот параметр - не ПУСТО (NULL) и операция возвращает данные, lpBytesReturned не имеет смысла до тех пор, пока не завершиться асинхронная операция. Чтобы извлечь число байтов возвращаемых данных, вызовите функцию GetOverlappedResult. Если hDevice связан с портом завершения ввода-вывода данных (I/O), Вы можете извлечь число возвращаемых данных при помощи вызова GetQueuedCompletionStatus.

lpOverlapped
[in] Указатель на структуру OVERLAPPED.

Если 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

-

 

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
В оглавление справки

Hosted by uCoz