private static extern ErrorCode gp_port_set_info(_Port *port, ref _PortInfo info);
private static extern ErrorCode gp_port_new(out _Port *port);
private static extern ErrorCode gp_port_open(_Port *port);
private static extern char* gp_port_get_error(_Port *port);
private static extern ErrorCode gp_port_get_info(_Port *port, out _PortInfo info);
private static extern ErrorCode gp_port_set_timeout(_Port *port, int timeout);
internal static extern ErrorCode gp_port_close (_Port *port);
internal static extern ErrorCode gp_port_new (out _Port *port);
internal static extern ErrorCode gp_port_free (_Port *port);
internal static extern ErrorCode gp_port_get_pin (_Port *port, Pin pin, Level *level);
internal static extern char* gp_port_get_error (_Port *port);
internal static extern ErrorCode gp_port_get_timeout (_Port *port, int *timeout);
internal static extern ErrorCode gp_port_get_settings (_Port *port, out PortSettings settings);
internal static extern ErrorCode gp_port_read (_Port *port, [MarshalAs(UnmanagedType.LPTStr)] byte[] data, int size);
private static extern ErrorCode gp_port_set_pin(_Port *port, Pin pin, Level level);
private static extern ErrorCode gp_port_close(_Port *port);
private static extern ErrorCode gp_port_set_settings(_Port *port, PortSettings settings);
private static extern ErrorCode gp_port_free(_Port *port);
private static extern ErrorCode gp_port_write(_Port *port, [MarshalAs(UnmanagedType.LPTStr)] byte[] data, int size);
internal static extern ErrorCode gp_port_open (_Port *port);