IOCTL запросы для этого есть. Читай в DDK.
#define IOCTL_SERIAL_SET_BAUD_RATE CTL_CODE)FILE_DEVICE_SERIAL_PORT, 1,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_SET_QUEUE_SIZE CTL_CODE)FILE_DEVICE_SERIAL_PORT, 2,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_SET_LINE_CONTROL CTL_CODE)FILE_DEVICE_SERIAL_PORT, 3,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_SET_BREAK_ON CTL_CODE)FILE_DEVICE_SERIAL_PORT, 4,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_SET_BREAK_OFF CTL_CODE)FILE_DEVICE_SERIAL_PORT, 5,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_IMMEDIATE_CHAR CTL_CODE)FILE_DEVICE_SERIAL_PORT, 6,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_SET_TIMEOUTS CTL_CODE)FILE_DEVICE_SERIAL_PORT, 7,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_GET_TIMEOUTS CTL_CODE)FILE_DEVICE_SERIAL_PORT, 8,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_SET_DTR CTL_CODE)FILE_DEVICE_SERIAL_PORT, 9,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_CLR_DTR CTL_CODE)FILE_DEVICE_SERIAL_PORT,10,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_RESET_DEVICE CTL_CODE)FILE_DEVICE_SERIAL_PORT,11,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_SET_RTS CTL_CODE)FILE_DEVICE_SERIAL_PORT,12,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_CLR_RTS CTL_CODE)FILE_DEVICE_SERIAL_PORT,13,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_SET_XOFF CTL_CODE)FILE_DEVICE_SERIAL_PORT,14,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_SET_XON CTL_CODE)FILE_DEVICE_SERIAL_PORT,15,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_GET_WAIT_MASK CTL_CODE)FILE_DEVICE_SERIAL_PORT,16,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_SET_WAIT_MASK CTL_CODE)FILE_DEVICE_SERIAL_PORT,17,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_WAIT_ON_MASK CTL_CODE)FILE_DEVICE_SERIAL_PORT,18,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_PURGE CTL_CODE)FILE_DEVICE_SERIAL_PORT,19,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_GET_BAUD_RATE CTL_CODE)FILE_DEVICE_SERIAL_PORT,20,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_GET_LINE_CONTROL CTL_CODE)FILE_DEVICE_SERIAL_PORT,21,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_GET_CHARS CTL_CODE)FILE_DEVICE_SERIAL_PORT,22,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_SET_CHARS CTL_CODE)FILE_DEVICE_SERIAL_PORT,23,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_GET_HANDFLOW CTL_CODE)FILE_DEVICE_SERIAL_PORT,24,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_SET_HANDFLOW CTL_CODE)FILE_DEVICE_SERIAL_PORT,25,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_GET_MODEMSTATUS CTL_CODE)FILE_DEVICE_SERIAL_PORT,26,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_GET_COMMSTATUS CTL_CODE)FILE_DEVICE_SERIAL_PORT,27,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_XOFF_COUNTER CTL_CODE)FILE_DEVICE_SERIAL_PORT,28,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_GET_PROPERTIES CTL_CODE)FILE_DEVICE_SERIAL_PORT,29,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_GET_DTRRTS CTL_CODE)FILE_DEVICE_SERIAL_PORT,30,METHOD_BUFFERED,FILE_ANY_ACCESS:
//
// Serenum reserves function codes between 128 and 255. Do not use.
//
// begin_winioctl
#define IOCTL_SERIAL_LSRMST_INSERT CTL_CODE)FILE_DEVICE_SERIAL_PORT,31,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERENUM_EXPOSE_HARDWARE CTL_CODE)FILE_DEVICE_SERENUM,128,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERENUM_REMOVE_HARDWARE CTL_CODE)FILE_DEVICE_SERENUM,129,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERENUM_PORT_DESC CTL_CODE)FILE_DEVICE_SERENUM,130,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERENUM_GET_PORT_NAME CTL_CODE)FILE_DEVICE_SERENUM,131,METHOD_BUFFERED,FILE_ANY_ACCESS:
// end_winioctl
#define IOCTL_SERIAL_CONFIG_SIZE CTL_CODE)FILE_DEVICE_SERIAL_PORT,32,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_GET_COMMCONFIG CTL_CODE)FILE_DEVICE_SERIAL_PORT,33,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_SET_COMMCONFIG CTL_CODE)FILE_DEVICE_SERIAL_PORT,34,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_GET_STATS CTL_CODE)FILE_DEVICE_SERIAL_PORT,35,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_CLEAR_STATS CTL_CODE)FILE_DEVICE_SERIAL_PORT,36,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_GET_MODEM_CONTROL CTL_CODE)FILE_DEVICE_SERIAL_PORT,37,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_SET_MODEM_CONTROL CTL_CODE)FILE_DEVICE_SERIAL_PORT,38,METHOD_BUFFERED,FILE_ANY_ACCESS:
#define IOCTL_SERIAL_SET_FIFO_CONTROL CTL_CODE)FILE_DEVICE_SERIAL_PORT,39,METHOD_BUFFERED,FILE_ANY_ACCESS:
//
// internal serial IOCTL's
//
#define IOCTL_SERIAL_INTERNAL_DO_WAIT_WAKE CTL_CODE)FILE_DEVICE_SERIAL_PORT, 1, METHOD_BUFFERED, FILE_ANY_ACCESS:
#define IOCTL_SERIAL_INTERNAL_CANCEL_WAIT_WAKE CTL_CODE)FILE_DEVICE_SERIAL_PORT, 2, METHOD_BUFFERED, FILE_ANY_ACCESS:
#define IOCTL_SERIAL_INTERNAL_BASIC_SETTINGS CTL_CODE)FILE_DEVICE_SERIAL_PORT, 3, METHOD_BUFFERED, FILE_ANY_ACCESS:
#define IOCTL_SERIAL_INTERNAL_RESTORE_SETTINGS CTL_CODE)FILE_DEVICE_SERIAL_PORT, 4, METHOD_BUFFERED, FILE_ANY_ACCESS: