use ctypes::c_char;
use shared::minwindef::{BOOL, DWORD, LPDWORD};
use um::minwinbase::LPOVERLAPPED;
use um::winbase::{LPCOMMCONFIG, LPCOMMPROP, LPCOMMTIMEOUTS, LPCOMSTAT, LPDCB};
use um::winnt::{HANDLE};
extern "system" {
pub fn ClearCommBreak(
hFile: HANDLE
) -> BOOL;
pub fn ClearCommError(
hFile: HANDLE,
lpErrors: LPDWORD,
lpStat: LPCOMSTAT
) -> BOOL;
pub fn SetupComm(
hFile: HANDLE,
dwInQueue: DWORD,
dwOutQueue: DWORD
) -> BOOL;
pub fn EscapeCommFunction(
hFile: HANDLE,
dwFunc: DWORD
) -> BOOL;
pub fn GetCommConfig(
hCommDev: HANDLE,
lpCC: LPCOMMCONFIG,
lpdwSize: LPDWORD
) -> BOOL;
pub fn GetCommMask(
hFile: HANDLE,
lpEvtMask: LPDWORD
) -> BOOL;
pub fn GetCommModemStatus(
hFile: HANDLE,
lpModemStat: LPDWORD
) -> BOOL;
pub fn GetCommProperties(
hFile: HANDLE,
lpCommProp: LPCOMMPROP
) -> BOOL;
pub fn GetCommState(
hFile: HANDLE,
lpDCB: LPDCB
) -> BOOL;
pub fn GetCommTimeouts(
hFile: HANDLE,
lpCommTimeouts: LPCOMMTIMEOUTS
) -> BOOL;
pub fn PurgeComm(
hFile: HANDLE,
dwFlags: DWORD
) -> BOOL;
pub fn SetCommBreak(
hFile: HANDLE
) -> BOOL;
pub fn SetCommConfig(
hCommDev: HANDLE,
lpCC: LPCOMMCONFIG,
dwSize: DWORD
) -> BOOL;
pub fn SetCommMask(
hFile: HANDLE,
dwEvtMask: DWORD
) -> BOOL;
pub fn SetCommState(
hFile: HANDLE,
lpDCB: LPDCB
) -> BOOL;
pub fn SetCommTimeouts(
hFile: HANDLE,
lpCommTimeouts: LPCOMMTIMEOUTS
) -> BOOL;
pub fn TransmitCommChar(
hFile: HANDLE,
cChar: c_char
) -> BOOL;
pub fn WaitCommEvent(
hFile: HANDLE,
lpEvtMask: LPDWORD,
lpOverlapped: LPOVERLAPPED
) -> BOOL;
}