private static extern ErrorCode gp_port_close(_Port *port);
private static extern ErrorCode gp_port_write(_Port *port, [MarshalAs(UnmanagedType.LPTStr)] byte[] data, int size);
private static extern ErrorCode gp_port_get_info(_Port *port, out _PortInfo info);
private static extern ErrorCode gp_port_open(_Port *port);
private static extern ErrorCode gp_port_new(out _Port *port);
internal static extern ErrorCode gp_port_read(_Port *port, [MarshalAs(UnmanagedType.LPTStr)] byte[] data, int size);
internal static extern ErrorCode gp_port_free(_Port *port);
private static extern ErrorCode gp_port_set_pin(_Port *port, Pin pin, Level level);
internal static extern char *gp_port_get_error(_Port *port);
internal static extern ErrorCode gp_port_new(out _Port *port);
internal static extern ErrorCode gp_port_get_pin(_Port *port, Pin pin, Level *level);
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);
private static extern ErrorCode gp_port_set_settings(_Port *port, PortSettings settings);
internal static extern ErrorCode gp_port_open(_Port *port);
private static extern ErrorCode gp_port_set_timeout(_Port *port, int timeout);
private static extern ErrorCode gp_port_free(_Port *port);
private static extern char *gp_port_get_error(_Port *port);
private static extern ErrorCode gp_port_set_info(_Port *port, ref _PortInfo info);
static void Main() { _Port *port = null; }
internal static extern ErrorCode gp_port_close(_Port *port);