const CS_MODE_SINGLE = 0x01
const CS_MODE_DUAL = 0x02
const CS_MODE_QUAD = 0x04
const CS_MODE_OCT = 0x08
const CS_MASKED_MODE = Float32(0x00000000)
const CS_MODE_RESERVED = 0x10
const CS_MODE_STREAMING = 0x20
const CS_MODE_HW_SUPER_RES = 0x40
const CS_MODE_POWER_ON = 0x80
const CS_MODE_PRETRIG_MULREC = 0x0200
const CS_MODE_REFERENCE_CLK = 0x0400
const CS_MODE_CS3200_CLK_INVERT = 0x0800
const TIMESTAMP_GCLK = 0x00
const TIMESTAMP_FREERUN = 0x10
const TIMESTAMP_DEFAULT = TIMESTAMP_GCLK | TIMESTAMP_FREERUN
const TIMESTAMP_MCLK = 0x01
const TIMESTAMP_SEG_RESET = 0x00
const TxMODE_DATA_ANALOGONLY = 0x00
const TxMODE_DEFAULT = TxMODE_DATA_ANALOGONLY
const TxMODE_SLAVE = 0x80000000
const TxMODE_RAWDATA = 0x40000000
const TxMODE_DATA_FLOAT = 0x01
const TxMODE_TIMESTAMP = 0x02
const TxMODE_DATA_16 = 0x04
const TxMODE_DATA_ONLYDIGITAL = 0x08
const TxMODE_DATA_32 = 0x10
const TxMODE_DATA_FFT = 0x30
const TxMODE_DATA_INTERLEAVED = 0x40
const TxMODE_SEGMENT_TAIL = 0x80
const TxFORMAT_OCTAL_INTERLEAVED = 0x12345678
const TxFORMAT_QUAD_INTERLEAVED = 0x11223344
const TxFORMAT_DUAL_INTERLEAVED = 0x11221122
const TxFORMAT_COBRA_DUAL_INTERLEAVED = 0x11112222
const TxFORMAT_NON_INTERLEAVED = 0x11111111
const TxFORMAT_SINGLE = 0x11111111
const TxFORMAT_STACKED = Float32(0x07ffffff)
const CS_CHAN_1 = 1
const CS_CHAN_2 = 2
const CS_FILTER_OFF = 0
const CS_FILTER_ON = 1
const CS_COUPLING_DC = 0x01
const CS_COUPLING_AC = 0x02
const CS_COUPLING_MASK = 0x03
const CS_DIFFERENTIAL_INPUT = 0x04
const CS_DIRECT_ADC_INPUT = 0x08
const CS_REAL_IMP_1M_OHM = 1000000
const CS_REAL_IMP_50_OHM = 50
const CS_GAIN_100_V = 100000
const CS_GAIN_40_V = 40000
const CS_GAIN_20_V = 20000
const CS_GAIN_10_V = 10000
const CS_GAIN_8_V = 8000
const CS_GAIN_5_V = 5000
const CS_GAIN_4_V = 4000
const CS_GAIN_2_V = 2000
const CS_GAIN_1_V = 1000
const CS_GAIN_800_MV = 800
const CS_GAIN_500_MV = 500
const CS_GAIN_400_MV = 400
const CS_GAIN_200_MV = 200
const CS_GAIN_100_MV = 100
const CS_GAIN_50_MV = 50
const CS_GAIN_CMOS = 2500
const CS_GAIN_TTL = 1500
const CS_GAIN_PECL = 3000
const CS_GAIN_LVDS = 0
const CS_GAIN_ECL = -2000
const CS_TRIG_COND_NEG_SLOPE = 0
const CS_TRIG_COND_POS_SLOPE = 1
const CS_TRIG_COND_PULSE_WIDTH = 2
const CS_MAX_TRIG_COND = 3
const CS_RELATION_OR = 0
const CS_RELATION_AND = 1
const CS_EVENT1 = 2
const CS_EVENT2 = 3
const CS_TRIG_ENGINES_DIS = 0
const CS_TRIG_ENGINES_EN = 1
const CS_TRIG_SOURCE_DISABLE = 0
const CS_TRIG_SOURCE_CHAN_1 = 1
const CS_TRIG_SOURCE_CHAN_2 = 2
const CS_TRIG_SOURCE_EXT = -1
const CS_BOARD_INFO = 1
const CS_SYSTEM = 3
const CS_CHANNEL = 4
const CS_TRIGGER = 5
const CS_ACQUISITION = 6
const CS_PARAMS = 7
const CS_FIR_CONFIG = 8
const CS_EXTENDED_BOARD_OPTIONS = 9
const CS_TIMESTAMP_TICKFREQUENCY = 10
const CS_CHANNEL_ARRAY = 11
const CS_TRIGGER_ARRAY = 12
const CS_SMT_ENVELOPE_CONFIG = 13
const CS_SMT_HISTOGRAM_CONFIG = 14
const CS_FFT_CONFIG = 15
const CS_FFTWINDOW_CONFIG = 16
const CS_MULREC_AVG_COUNT = 17
const CS_TRIG_OUT_CFG = 18
const CS_GET_SEGMENT_COUNT = 19
const CS_CURRENT_CONFIGURATION = 1
const CS_ACQUISITION_CONFIGURATION = 2
const CS_ACQUIRED_CONFIGURATION = 3
const ACTION_COMMIT = 1
const ACTION_START = 2
const ACTION_FORCE = 3
const ACTION_ABORT = 4
const ACTION_CALIB = 5
const ACTION_RESET = 6
const ACTION_COMMIT_COERCE = 7
const ACTION_TIMESTAMP_RESET = 8
const ACQ_STATUS_READY = 0
const ACQ_STATUS_WAIT_TRIGGER = 1
const ACQ_STATUS_TRIGGERED = 2
const ACQ_STATUS_BUSY_TX = 3
const ACQ_STATUS_BUSY_CALIB = 4
const CSDEMO8_BOARDTYPE = 0x0801
const CSDEMO12_BOARDTYPE = 0x0802
const CSDEMO14_BOARDTYPE = 0x0803
const CSDEMO16_BOARDTYPE = 0x0804
const CSDEMO32_BOARDTYPE = 0x0805
const CSDEMO_BT_MASK = 0x0800
const CSDEMO_BT_FIRST_BOARD = CSDEMO8_BOARDTYPE
const CSDEMO_BT_LAST_BOARD = CSDEMO32_BOARDTYPE
const CS8500_BOARDTYPE = 0x01
const CS82G_BOARDTYPE = 0x02
const CS12100_BOARDTYPE = 0x03
const CS1250_BOARDTYPE = 0x04
const CS1220_BOARDTYPE = 0x05
const CS1210_BOARDTYPE = 0x06
const CS14100_BOARDTYPE = 0x07
const CS1450_BOARDTYPE = 0x08
const CS1610_BOARDTYPE = 0x09
const CS1602_BOARDTYPE = 0x0a
const CS3200_BOARDTYPE = 0x0b
const CS85G_BOARDTYPE = 0x0c
const CS14200_BOARDTYPE = 0x0d
const CS14105_BOARDTYPE = 0x0e
const CS12400_BOARDTYPE = 15
const CS14200v2_BOARDTYPE = 16
const SNA142_BOARDTYPE = 17
const CS_COMBINE_FIRST_BOARD = CS14200_BOARDTYPE
const CS_COMBINE_LAST_BOARD = SNA142_BOARDTYPE
const CS16x1_BOARDTYPE = 0x20
const CS16x2_BOARDTYPE = 0x21
const CS14x1_BOARDTYPE = 0x22
const CS14x2_BOARDTYPE = 0x23
const CS12x1_BOARDTYPE = 0x24
const CS12x2_BOARDTYPE = 0x25
const CS16xyy_BT_FIRST_BOARD = CS16x1_BOARDTYPE
const CS16xyy_LAST_BOARD = CS12x2_BOARDTYPE
const CS16xyy_BASEBOARD = CS16x1_BOARDTYPE
const CS8220_BOARDTYPE = 0x40
const CS8221_BOARDTYPE = 0x41
const CS8222_BOARDTYPE = 0x42
const CS8223_BOARDTYPE = 0x43
const CS8224_BOARDTYPE = 0x44
const CS8225_BOARDTYPE = 0x45
const CS8226_BOARDTYPE = 0x46
const CS8227_BOARDTYPE = 0x47
const CS8228_BOARDTYPE = 0x48
const CS8229_BOARDTYPE = 0x49
const CS822x_BOARDTYPE_MASK = 0x40
const CS8240_BOARDTYPE = 0x50
const CS8241_BOARDTYPE = 0x51
const CS8242_BOARDTYPE = 0x52
const CS8243_BOARDTYPE = 0x53
const CS8244_BOARDTYPE = 0x54
const CS8245_BOARDTYPE = 0x55
const CS8246_BOARDTYPE = 0x56
const CS8247_BOARDTYPE = 0x57
const CS8248_BOARDTYPE = 0x58
const CS8249_BOARDTYPE = 0x59
const CS824x_BOARDTYPE_MASK = 0x50
const CS8280_BOARDTYPE = 0x60
const CS8281_BOARDTYPE = 0x61
const CS8282_BOARDTYPE = 0x62
const CS8283_BOARDTYPE = 0x63
const CS8284_BOARDTYPE = 0x64
const CS8285_BOARDTYPE = 0x65
const CS8286_BOARDTYPE = 0x66
const CS8287_BOARDTYPE = 0x67
const CS8288_BOARDTYPE = 0x68
const CS8289_BOARDTYPE = 0x69
const CS828x_BOARDTYPE_MASK = 0x60
const CS8320_BOARDTYPE = 0x80
const CS8321_BOARDTYPE = 0x81
const CS8322_BOARDTYPE = 0x82
const CS8323_BOARDTYPE = 0x83
const CS8324_BOARDTYPE = 0x84
const CS8325_BOARDTYPE = 0x85
const CS8326_BOARDTYPE = 0x86
const CS8327_BOARDTYPE = 0x87
const CS8328_BOARDTYPE = 0x88
const CS8329_BOARDTYPE = 0x89
const CS832x_BOARDTYPE_MASK = 0x80
const CS8340_BOARDTYPE = 0x90
const CS8341_BOARDTYPE = 0x91
const CS8342_BOARDTYPE = 0x92
const CS8343_BOARDTYPE = 0x93
const CS8344_BOARDTYPE = 0x94
const CS8345_BOARDTYPE = 0x95
const CS8346_BOARDTYPE = 0x96
const CS8347_BOARDTYPE = 0x97
const CS8348_BOARDTYPE = 0x98
const CS8349_BOARDTYPE = 0x99
const CS834x_BOARDTYPE_MASK = 0x90
const CS8380_BOARDTYPE = 0xa0
const CS8381_BOARDTYPE = 0xa1
const CS8382_BOARDTYPE = 0xa2
const CS8383_BOARDTYPE = 0xa3
const CS8384_BOARDTYPE = 0xa4
const CS8385_BOARDTYPE = 0xa5
const CS8386_BOARDTYPE = 0xa6
const CS8387_BOARDTYPE = 0xa7
const CS8388_BOARDTYPE = 0xa8
const CS8389_BOARDTYPE = 0xa9
const CS838x_BOARDTYPE_MASK = 0xa0
const CS8210_BOARDTYPE = 0xb0
const CS8211_BOARDTYPE = 0xb1
const CS8212_BOARDTYPE = 0xb2
const CS8213_BOARDTYPE = 0xb3
const CS8214_BOARDTYPE = 0xb4
const CS8215_BOARDTYPE = 0xb5
const CS8216_BOARDTYPE = 0xb6
const CS8217_BOARDTYPE = 0xb7
const CS8218_BOARDTYPE = 0xb8
const CS8219_BOARDTYPE = 0xb9
const CS821x_BOARDTYPE_MASK = 0xb0
const CS8310_BOARDTYPE = 0xc0
const CS8311_BOARDTYPE = 0xc1
const CS8312_BOARDTYPE = 0xc2
const CS8313_BOARDTYPE = 0xc3
const CS8314_BOARDTYPE = 0xc4
const CS8315_BOARDTYPE = 0xc5
const CS8316_BOARDTYPE = 0xc6
const CS8317_BOARDTYPE = 0xc7
const CS8318_BOARDTYPE = 0xc8
const CS8319_BOARDTYPE = 0xc9
const CS831x_BOARDTYPE_MASK = 0xc0
const CS8410_BOARDTYPE = 0xd0
const CS8412_BOARDTYPE = 0xd2
const CS8420_BOARDTYPE = 0xd4
const CS8422_BOARDTYPE = 0xd6
const CS8440_BOARDTYPE = 0xd8
const CS8442_BOARDTYPE = 0xda
const CS8480_BOARDTYPE = 0xdc
const CS8482_BOARDTYPE = 0xde
const CS84xx_BOARDTYPE_MASK = 0xd0
const CS8_BT_MASK = 0xd0
const CS8_BT_FIRST_BOARD = CS8220_BOARDTYPE
const CS8_BT_LAST_BOARD = CS8482_BOARDTYPE
const CS8xxx_BASEBOARD = CS8_BT_FIRST_BOARD
const CS_ZAP_FIRST_BOARD = CS8410_BOARDTYPE
const CS_ZAP_LAST_BOARD = CS8482_BOARDTYPE
const CS_ZAP_BASEBOARD = CS_ZAP_FIRST_BOARD
const CSxyG8_BOARDTYPE_MASK = 0x0100
const CS22G8_BOARDTYPE = 0x0100
const CS21G8_BOARDTYPE = 0x0101
const CS11G8_BOARDTYPE = 0x0102
const LAB11G_BOARDTYPE = 0x0103
const CSxyG8_FIRST_BOARD = CS22G8_BOARDTYPE
const CSxyG8_LAST_BOARD = LAB11G_BOARDTYPE
const CS_BASE8_BOARDTYPE = 0x0400
const CS_COBRAX_BOARDTYPE_MASK = 0x0480
const CSX11G8_BOARDTYPE = 0x0481
const CSX21G8_BOARDTYPE = 0x0482
const CSX22G8_BOARDTYPE = 0x0483
const CSX13G8_BOARDTYPE = 0x0484
const CSX23G8_BOARDTYPE = 0x0485
const CSX14G8_BOARDTYPE = 0x0486
const CSX_NTS_BOARDTYPE = 0x0487
const CS12500_BOARDTYPE = 0x0500
const CS121G_BOARDTYPE = 0x0501
const CS122G_BOARDTYPE = 0x0502
const CS14250_BOARDTYPE = 0x0510
const CS14500_BOARDTYPE = 0x0511
const CS141G_BOARDTYPE = 0x0512
const CSJD_FIRST_BOARD = CS12500_BOARDTYPE
const CSJD_LAST_BOARD = CS141G_BOARDTYPE
const CSUSB_BOARDTYPE = 0x1001
const CSUSB_BT_FIRST_BOARD = CSUSB_BOARDTYPE
const CSUSB_BT_LAST_BOARD = CSUSB_BOARDTYPE
const PLX_BASED_BOARDTYPE = 0x4000
const CPCI_BOARDTYPE = 0x8000
const CS1610C_BOARDTYPE = CPCI_BOARDTYPE | CS1610_BOARDTYPE
const CS14100C_BOARDTYPE = CPCI_BOARDTYPE | CS14100_BOARDTYPE
const CS82GC_BOARDTYPE = CPCI_BOARDTYPE | CS82G_BOARDTYPE
const CS85GC_BOARDTYPE = CPCI_BOARDTYPE | CS85G_BOARDTYPE
const CS3200C_BOARDTYPE = CPCI_BOARDTYPE | CS3200_BOARDTYPE
const CS_TIMEOUT_DISABLE = -1
const ACQ_EVENT_TRIGGERED = 0
const ACQ_EVENT_END_BUSY = 1
const ACQ_EVENT_END_TXFER = 2
const NUMBER_ACQ_EVENTS = 3
const CAPS_SAMPLE_RATES = 0x00010000
const CAPS_INPUT_RANGES = 0x00020000
const CAPS_IMPEDANCES = 0x00030000
const CAPS_COUPLINGS = 0x00040000
const CAPS_ACQ_MODES = 0x00050000
const CAPS_TERMINATIONS = 0x00060000
const CAPS_FLEXIBLE_TRIGGER = 0x00070000
const CAPS_BOARD_TRIGGER_ENGINES = 0x00080000
const CAPS_TRIGGER_SOURCES = 0x00090000
const CAPS_FILTERS = 0x000a0000
const CAPS_MAX_SEGMENT_PADDING = 0x000b0000
const CAPS_DC_OFFSET_ADJUST = 0x000c0000
const CAPS_CLK_IN = 0x000d0000
const CAPS_TRIG_ENGINES_PER_CHAN = 0x00200000
const CAPS_MULREC = 0x00400000
const CAPS_TRIGGER_RES = 0x00410000
const CAPS_MIN_EXT_RATE = 0x00420000
const CAPS_SKIP_COUNT = 0x00430000
const CAPS_MAX_EXT_RATE = 0x00440000
const CAPS_TRANSFER_EX = 0x00450000
const CS_NO_FILTER = Float32(0x0fffffff)
const CS_NO_EXTTRIG = Float32(0x0fffffff)

# Skipping MacroDefinition: CS_FAILED ( x ) ( ( x ) < 0 ? TRUE : FALSE )
# Skipping MacroDefinition: CS_SUCCEEDED ( x ) ( ( x ) < 0 ? FALSE : TRUE )


const CS_USING_DEFAULT_ACQ_DATA = 2
const CS_USING_DEFAULT_CHANNEL_DATA = 4
const CS_USING_DEFAULT_TRIGGER_DATA = 8
const CS_USING_DEFAULT_APP_DATA = 16
const CS_USING_DEFAULTS = 32
const ACQUISITION_DATA = 1
const CHANNEL_DATA = 2
const TRIGGER_DATA = 3
const APPLICATION_DATA = 4
const DEFAULT_TRANSFER_START_POSITION = 0
const DEFAULT_TRANSFER_LENGTH = 4096
const DEFAULT_TRANSFER_SEGMENT_START = 1
const DEFAULT_TRANSFER_SEGMENT_COUNT = 1
const DEFAULT_PAGE_SIZE = 32768

const uInt8 = Cuchar
const uInt16 = UInt16
const uInt32 = Culong
const int8 = UInt8
const int16 = Int16
const int32 = Clong
const bool = UInt8
const int64 = Clonglong
const real32 = Cfloat
const real64 = Cdouble
const cschar = UInt8
const CSHANDLE = uInt32
const PCSHANDLE = Ptr{CSHANDLE}
const RMHANDLE = uInt32
const PRMHANDLE = Ptr{RMHANDLE}
const DRVHANDLE = uInt32
const PDRVHANDLE = Ptr{DRVHANDLE}

# begin enum _CSFILETYPES
const _CSFILETYPES = Cint
const cftNone = 0 |> Int32
const cftBinaryData = 1 |> Int32
const cftSigFile = 2 |> Int32
const cftAscii = 3 |> Int32
# end enum _CSFILETYPES

const CsFileType = Cvoid

# begin enum _CSFILEMODES
const _CSFILEMODES = Cint
const cfmRead = 1 |> Int32
const cfmWrite = 2 |> Int32
const cfmReadWrite = 3 |> Int32
# end enum _CSFILEMODES

const CsFileMode = Cvoid

# begin enum _CSFILEATTACH
const _CSFILEATTACH = Cint
const fmNew = 0 |> Int32
# end enum _CSFILEATTACH

const CsFileAttach = Cvoid

mutable struct CSBOARDINFO
    u32Size::uInt32
    u32BoardIndex::uInt32
    u32BoardType::uInt32
    strSerialNumber::NTuple{32, cschar}
    u32BaseBoardVersion::uInt32
    u32BaseBoardFirmwareVersion::uInt32
    u32AddonBoardVersion::uInt32
    u32AddonBoardFirmwareVersion::uInt32
    u32AddonFwOptions::uInt32
    u32BaseBoardFwOptions::uInt32
    u32AddonHwOptions::uInt32
    u32BaseBoardHwOptions::uInt32
end

const PCSBOARDINFO = Ptr{CSBOARDINFO}

mutable struct ARRAY_BOARDINFO
    u32BoardCount::uInt32
    aBoardInfo::NTuple{1, CSBOARDINFO}
end

const PARRAY_BOARDINFO = Ptr{ARRAY_BOARDINFO}

mutable struct CSSYSTEMINFO
    u32Size::uInt32
    i64MaxMemory::int64
    u32SampleBits::uInt32
    i32SampleResolution::int32
    u32SampleSize::uInt32
    i32SampleOffset::int32
    u32BoardType::uInt32
    strBoardName::NTuple{32, cschar}
    u32AddonOptions::uInt32
    u32BaseBoardOptions::uInt32
    u32TriggerMachineCount::uInt32
    u32ChannelCount::uInt32
    u32BoardCount::uInt32
    CSSYSTEMINFO() = (new(sizeof(CSSYSTEMINFO),0,0,0,0,0,0,NTuple{32, cschar}(),0,0,0,0,0))
end

const PCSSYSTEMINFO = Ptr{CSSYSTEMINFO}

mutable struct CSACQUISITIONCONFIG
    u32Size::uInt32
    i64SampleRate::int64
    u32ExtClk::uInt32
    u32ExtClkSampleSkip::uInt32
    u32Mode::uInt32
    u32SampleBits::uInt32
    i32SampleRes::int32
    u32SampleSize::uInt32
    u32SegmentCount::uInt32
    i64Depth::int64
    i64SegmentSize::int64
    i64TriggerTimeout::int64
    u32TrigEnginesEn::uInt32
    i64TriggerDelay::int64
    i64TriggerHoldoff::int64
    i32SampleOffset::int32
    u32TimeStampConfig::uInt32
    CSACQUISITIONCONFIG() = (new(sizeof(CSACQUISITIONCONFIG),0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0))
end

const PCSACQUISITIONCONFIG = Ptr{CSACQUISITIONCONFIG}

mutable struct CSCHANNELCONFIG
    u32Size::uInt32
    u32ChannelIndex::uInt32
    u32Term::uInt32
    u32InputRange::uInt32
    u32Impedance::uInt32
    u32Filter::uInt32
    i32DcOffset::int32
    i32Calib::int32
    CSCHANNELCONFIG() = (new(sizeof(CSCHANNELCONFIG),1,0,0,0,0,0,0))
end

const PCSCHANNELCONFIG = Ptr{CSCHANNELCONFIG}

mutable struct ARRAY_CHANNELCONFIG
    u32ChannelCount::uInt32
    aChannel::NTuple{1, CSCHANNELCONFIG}
end

const PARRAY_CHANNELCONFIG = Ptr{ARRAY_CHANNELCONFIG}

mutable struct CSTRIGGERCONFIG
    u32Size::uInt32
    u32TriggerIndex::uInt32
    u32Condition::uInt32
    i32Level::int32
    i32Source::int32
    u32ExtCoupling::uInt32
    u32ExtTriggerRange::uInt32
    u32ExtImpedance::uInt32
    i32Value1::int32
    i32Value2::int32
    u32Filter::uInt32
    u32Relation::uInt32
    CSTRIGGERCONFIG() = (new(sizeof(CSTRIGGERCONFIG),1,0,0,0,0,0,0,0,0,0,0))
end

const PCSTRIGGERCONFIG = Ptr{CSTRIGGERCONFIG}

mutable struct ARRAY_TRIGGERCONFIG
    u32TriggerCount::uInt32
    aTrigger::NTuple{1, CSTRIGGERCONFIG}
end

const PARRAY_TRIGGERCONFIG = Ptr{ARRAY_TRIGGERCONFIG}

mutable struct CSSYSTEMCONFIG
    u32Size::uInt32
    pAcqCfg::PCSACQUISITIONCONFIG
    pAChannels::PARRAY_CHANNELCONFIG
    pATriggers::PARRAY_TRIGGERCONFIG
end

const PCSSYSTEMCONFIG = Ptr{CSSYSTEMCONFIG}

mutable struct CSSAMPLERATETABLE
    i64SampleRate::int64
    strText::NTuple{32, cschar}
end

const PCSSAMPLERATETABLE = Ptr{CSSAMPLERATETABLE}

mutable struct CSRANGETABLE
    u32InputRange::uInt32
    strText::NTuple{32, cschar}
    u32Reserved::uInt32
end

const PCSRANGETABLE = Ptr{Cvoid}

mutable struct CSIMPEDANCETABLE
    u32Imdepdance::uInt32
    strText::NTuple{32, cschar}
    u32Reserved::uInt32
end

const PCSIMPEDANCETABLE = Ptr{Cvoid}

mutable struct CSCOUPLINGTABLE
    u32Coupling::uInt32
    strText::NTuple{32, cschar}
    u32Reserved::uInt32
end

const PCSCOUPLINGTABLE = Ptr{Cvoid}

mutable struct CSFILTERTABLE
    u32LowCutoff::uInt32
    u32HighCutoff::uInt32
end

const PCSFILTERTABLE = Ptr{CSFILTERTABLE}

mutable struct IN_PARAMS_TRANSFERDATA
    u16Channel::uInt16
    u32Mode::uInt32
    u32Segment::uInt32
    i64StartAddress::int64
    i64Length::int64
    pDataBuffer::Ptr{Cvoid}
    hNotifyEvent::Ptr{Cint}
end
IN_PARAMS_TRANSFERDATA() = new(zeros())

const PIN_PARAMS_TRANSFERDATA = Ptr{IN_PARAMS_TRANSFERDATA}

mutable struct OUT_PARAMS_TRANSFERDATA
    i64ActualStart::int64
    i64ActualLength::int64
    i32LowPart::int32
    i32HighPart::int32
end

const POUT_PARAMS_TRANSFERDATA = Ptr{OUT_PARAMS_TRANSFERDATA}

mutable struct IN_PARAMS_TRANSFERDATA_EX
    u16Channel::uInt16
    u32Mode::uInt32
    u32StartSegment::uInt32
    u32SegmentCount::uInt32
    i64StartAddress::int64
    i64Length::int64
    pDataBuffer::Ptr{Cvoid}
    i64BufferLength::int64
    hNotifyEvent::Ptr{Cint}
end

const PIN_PARAMS_TRANSFERDATA_EX = Ptr{Cvoid}

mutable struct OUT_PARAMS_TRANSFERDATA_EX
    u32DataFormat0::uInt32
    u32DataFormat1::uInt32
end

const POUT_PARAMS_TRANSFERDATA_EX = Ptr{OUT_PARAMS_TRANSFERDATA_EX}

mutable struct CALLBACK_DATA
    u32Size::uInt32
    hSystem::CSHANDLE
    u32ChannelIndex::uInt32
    i32Token::int32
end

const PCALLBACK_DATA = Ptr{CALLBACK_DATA}

mutable struct CSTIMESTAMP
    u16Hour::uInt16
    u16Minute::uInt16
    u16Second::uInt16
    u16Point1Second::uInt16
end

const PCSTIMESTAMP = Ptr{CSTIMESTAMP}

mutable struct CSSIGSTRUCT
    u32Size::uInt32
    i64SampleRate::int64
    i64RecordStart::int64
    i64RecordLength::int64
    u32RecordCount::uInt32
    u32SampleBits::uInt32
    u32SampleSize::uInt32
    i32SampleOffset::int32
    i32SampleRes::int32
    u32Channel::uInt32
    u32InputRange::uInt32
    i32DcOffset::int32
    TimeStamp::CSTIMESTAMP
end

const PCSSIGSTRUCT = Ptr{CSSIGSTRUCT}

mutable struct CSDISKFILEHEADER
    cData::NTuple{512, UInt8}
end

const PCSDISKFILEHEADER = Ptr{CSDISKFILEHEADER}

mutable struct CSSEGMENTTAIL
    i64TimeStamp::int64
    i64Reserved0::int64
    i64Reserved1::int64
    i64Reserved2::int64
end

const PCSSEGMENTTAIL = Ptr{CSSEGMENTTAIL}

mutable struct _FILEHEADERSTRUCT
    i64Start::int64
    i64Length::int64
    i64SampleRate::int64
    dTimeStamp::Cdouble
    u32SegmentNumber::uInt32
    u32SampleSize::uInt32
    i32SampleRes::int32
    i32SampleOffset::int32
    u32InputRange::uInt32
    i32DcOffset::int32
    u32SegmentCount::uInt32
    u32AverageCount::uInt32
end

const FileHeaderStruct = Cvoid
const CSAPPLICATIONDATA = Cvoid
const PCSAPPLICATIONDATA = Ptr{Cvoid}
