///////////////////////////////////////////////////////////////////
// C# code for ASX32.DLL import generated by \apps\asx\asx_headers.py
// Built from ASX.H v 4.18.08
// Please report any issues to support@audioscience.com 
///////////////////////////////////////////////////////////////////
using System;
using System.IO;
using System.Runtime.InteropServices;
namespace Audio.AudioScience
{
  public sealed class Asx
  {

    public const int ASX_SYSTEM_TYPE_HPI=0;
    public const int ASX_SYSTEM_TYPE_WAVE=1;
    public const int ASX_SYSTEM_TYPE_ALSA=2;
    public const int ASX_SYSTEM_TYPE_DIRECTX=3;
    public const int ASX_SYSTEM_TYPE_PORTAUDIO=4;
    public const int ASX_SYSTEM_TYPE_PCXTOOLS=5;
    public const int ASX_SYSTEM_TYPE_SNMP=6;
    public const int ASX_SYSTEM_TYPE_HPIUDP=7;
    public const int ASX_SYSTEM_TYPE_DUMMY=8;
    public const int ASX_SYSTEM_TYPE_ANY=9;
    public const int ASX_SYSTEM_TYPE_ASIO=10;
    public const int ASX_SYSTEM_TYPE_AVB_1722_1=11;
    public const int ASX_SYSTEM_TYPE_COUNT=12;
    public const int ASX_SHORT_STRING=32;
    public const int ASX_LONG_STRING=128;
    public 
    enum asxERROR : int {
    	asxERROR_NO_ERROR=0,			///< The success, or no error code is 0.
    	// leave a gap here so that any 8-bit bit enums will never map to error codes.
    	asxERROR_ASXOBJECT=256,			///< An attempt was made to call an ASX function with an incorrect object handle.
    	asxERROR_INDEX_OUT_OF_RANGE=257,	///< The index passed in to the function is out of range.
    	asxERROR_UNIMPLEMENTED=258,		///< An attempt was made to call an un-implemented function.
    	asxERROR_COMMUNICATING_WITH_DEVICE=259,	///< Device communication error.
    	asxERROR_STARTING_DEVICE=260,		///< Device would not start. Typically this is a driver installation or hardware problem.
    	asxERROR_NOT_OPEN=261,			///< An attempt was made to manipulate and ASX object that requires opening before use.
    	asxERROR_ALREADY_OPEN=262,		///< An attempt was made to open an object that is already open.
    	asxERROR_INVALID_FORMAT=263,		///< The format is illegal on this adapter. It may be the sample rate or the compression format that is illegal.
    	asxERROR_INTERNAL_BUFFERING_ERROR=264,	///< Buffering error internal to the ASX library occurred.
    	asxERROR_AES18=265,			///< AES-18 signalling error.
    	asxERROR_INVALID_OPERATION=266,		///< An attempt was made to perform an invalid operation.
    	asxERROR_ENUMERATE_INDEX_OUT_OF_RANGE=267,///< The index passed in to the enumeration function is too large.
    	asxERROR_BUFFER_TOO_SMALL=268,		///< A buffer was passed to a function that was too small to hold the requested data.
    	asxERROR_OUTOFMEMORY=269,		///< An internal system call to allocate memory failed.
    	asxERROR_DEPRECATED=270,		///< An attempt was made to call a deprecated function.
    	asxERROR_TOO_MANY_CLIENTS=271,		///< Too many network clients communicating with the device.
    
    	asxERROR_COBRANET_NODE_NOT_FOUND=272,	///< AsiCnDisco has not found this node.
    	asxERROR_COBRANET_NODE_FOUND=273,	///< AsiCnDisco has found this node but hasn't assigned an IP address.
    	asxERROR_NO_IP_ADDRESSES_AVAILABLE=274, ///< The entire range specified for IP autoassigment is in use.
    	asxERROR_IP_ASSIGNED=275,		///< AsiCnDisco tried to assign an address to this CobraNet node.
    	asxERROR_IP_CHANGED=276,		///< The IP address for this CobraNet node has changed, it should be non-zero.
    	asxERROR_IP_AUTOASSIGN_DISABLED=277,	///< The IP address auto-assign feature is disabled.
    	asxERROR_PCAP_ERROR=278,		///< The pcap driver failed to start.
    	asxERROR_DISCO_DLL_NOT_FOUND=279,	///< The asicndiscoXX.dll failed to load.
    	asxERROR_HOST_NOT_FOUND=280,		///< The specified host IP address is not in the list of available adapters.
    	asxERROR_COBRANET_NODE_UNREACHABLE=281,	///< The node is on another subnet and is unreachable via SNMP.
    	asxERROR_DUPLICATE_ADAPTER_INDEX=282,	///< The HPI adapter has a duplicate index.
    
    	asxERROR_INVALID_CONTROL=304,			///< An attempt was made to use an invalid control.
    	asxERROR_INVALID_CONTROL_VALUE=305,		///< An attempt was made to set a control to an invalid value.
    	asxERROR_INVALID_CONTROL_NOT_FOUND=306,		///< The specified control could not be found.
    	asxERROR_INVALID_NUMBER_OF_CHANNELS=307,	///< An invalid number of channels were passed in.
    	asxERROR_INVALID_CONTROL_ATTRIBUTE=308, 	///< An attempt was made to set an attribute (or property) of a control that does not exist.
    	asxERROR_UNSUPPORTED_CONTROL_ATTRIBUTE=309, 	///< Control attribute or function is not supported by this hardware.
    	asxERROR_INVALID_CONTROL_OPERATION=310,		///< Control does not support the requested operation.
    	asxERROR_CONTROL_NOT_READY=311,			///< Control is not ready for the requested operation.
    
    	asxERROR_FILE_OPEN_FAILED=336,			///< File open failed.
    
    	asxERROR_PLAYER_INTERNAL_STATE_FAILURE=384,	///< Player control had an internal state error - contact AudioScience.
    	asxERROR_PLAYER_TIME_OUT=385,			///< Player control had an internal timeout error - contact AudioScience.
    	asxERROR_PLAYER_OUT_OF_SEQUENCE_CALL=386,	///< An attempt was made to perform an operation that is illegal in the current player state.
    	asxERROR_PLAYER_TWAV=387,			///< Internal player error.
    	asxERROR_PLAYER_NOFILE=388,			///< Operation requires an open filehandle and no file is open.
    	asxERROR_PLAYER_INVALIDFILEFORMAT=389,		///< File is invalid or corrupt.
    	asxERROR_PLAYER_UNSUPPORTEDFORMAT=390,		///< File is in an unsupported format.
    	asxERROR_PLAYER_FILEREADERROR=391,		///< An error occured when reading the file.
    	asxERROR_PLAYER_FILEOPENERROR=392,		///< Could not open the file.  It may be missing.
    
    	asxERROR_RECORDER_INTERNAL_STATE_FAILURE=448,	///< Recorder control had an internal state error - contact AudioScience.
    	asxERROR_RECORDER_TIME_OUT=449,			///< Recorder control had an internal timeout error - contact AudioScience.
    	asxERROR_RECORDER_OUT_OF_SEQUENCE_CALL=450,	///< An attempt was made to perform an operation that is illegal in the current recorder state.
    	asxERROR_RECORDER_TWAV=451,			///< Internal recorder error.
    	asxERROR_RECORDER_FILECREATEERROR=452,		///< Couldn't create file, could be write protected.
    	asxERROR_RECORDER_FILEWRITEERROR=453,		///< An error occured when writing the file.
    	asxERROR_RECORDER_FORMATMISMATCH=454,		///< Tried to append to a file with a different format.
    	asxERROR_RECORDER_INVALIDFILENAME=455,		///< Tried to record a WAV file without the .WAV extension or tried to record a RAW file with the .WAV extention.
    
    	asxERROR_MIXER_SAVECONTROLSTATE=460,		///< Mixer command to save controls on device failed.
    
    	asxERROR_UNKNOWN=4095				///< Unknown error.
        };
    public 
    enum asxNODE : int {
    	asxNODE_NONE=0,			///< Node does not exist value.
    	asxNODE_INVALID=400,		///< Node is invalid.
    
    	asxNODE_ADAPTER=401,		///< An adapter node that contains controls like GPIO and NvMem.
    	asxNODE_PLAYER=402,		///< A player source node. This node has the abiility to play audio files.
    	asxNODE_LINE_IN=403,		///< An audio source coming from a line in audio connector.
    	asxNODE_AESEBU_IN=404,		///< An audio source coming from a digital input. Typically this will be an AESEBU/SPDIF connection.
    	asxNODE_TUNER_IN=405,		///< An audio source coming from a tuner.
    	asxNODE_RADIO_FREQ_IN=406,	///< Not implemented.
    	asxNODE_CLOCK_SOURCE_IN=407,	///< A source for of adapter sample clock generation.
    	asxNODE_BITSTREAM_IN=408,	///< A raw, unformated bitstream. To date this has been used to represent an RS422 serial stream fed directly from a satellite receiver.
    	asxNODE_MICROPHONE_IN=409,	///< An audio souce coming from a microphone.
    	asxNODE_COBRANET_IN=410,	///< An audio source coming from a Cobranet audio routing channel.
    	asxNODE_COBRANET_RECEIVER=411,	///< An Cobranet receiver.
    	asxNODE_ANALOG_IN=412,		///< An Analog input.
    	asxNODE_SDI_IN=413,		///< An 3G/HD/SD-SDI input.
    	asxNODE_RTP_DESTINATION_IN=414,	///< An RTP stream destination.
    	asxNODE_INTERNAL_IN=416,	///< An audio node internal to the device.
    	asxNODE_AVB_IN_STREAM=417,	///< An AVB input stream.
    	asxNODE_BLULINK_IN=418,	        ///< A BLU link input node
    	asxNODE_AVB_IN_AUDIO = 419,	///< AVB input audio
    
    	asxNODE_LAST_SOURCE_NODE=420,	///< A placekeeper marking the last source node.
    
    	asxNODE_FIRST_DEST_NODE=450,	///< A placekeeper marking the last source node.
    	asxNODE_RECORDER=450,		///< A destination that indicates a path for recording audio to the host.
    	asxNODE_LINE_OUT=451,		///< A destination that outputs to a line out audio connector.
    	asxNODE_AESEBU_OUT=452,		///< A destination that outputs to a digital out audio connector. Typically this will be an AESEBU/SPDIF connection.
    	asxNODE_RADIO_FREQ_OUT=453,	///< Not implemented.
    	asxNODE_SPEAKER_OUT=454,	///< A destination that outputs to a speaker.
    	asxNODE_COBRANET_OUT=455,	///< A destination Cobranet audio routing channel.
    	asxNODE_COBRANET_TRANSMITTER=456,///< A Cobranet transmitter.
    	asxNODE_ANALOG_OUT=457,		///< An Analog output.
    	asxNODE_SDI_OUT=458,		///< An 3G/HD/SD-SDI output.
    	asxNODE_RTP_SOURCE_OUT=459,	///< An RTP stream source.
    	asxNODE_AVB_OUT_STREAM=460,	///< An AVB output stream.
    	asxNODE_INTERNAL_OUT=461,	///< An internal output node
    	asxNODE_BLULINK_OUT=462,        ///< An BLU link output.
    	asxNODE_AVB_OUT_AUDIO = 463,	///< AVB output audio
    
    	asxNODE_LAST_DEST_NODE=464	///< A placekeeper marking the last destination node.
        };
    public 
    enum asxCONTROL : int {
    	asxCONTROL_INVALID=500,			///< Placeholder that indicates an error.
    
    	asxCONTROL_CONNECTION=501,		///< Documents a connection, no functionality.
    	asxCONTROL_VOLUME=502,			///< A volume control. A large number of volume controls are used to control audio routing and mixing.
    	asxCONTROL_METER=503,			///< A meter control. This is used to implement peak meter functionality.
    	asxCONTROL_MUTE=504,			///< A mute control.
    	asxCONTROL_MULTIPLEXER=505,		///< A multiplexer control allows the selection of a single audio source from many possible sources.
    	asxCONTROL_AESEBU_TRANSMITTER=506,	///< An AESEBU transmitter control.
    	asxCONTROL_AESEBU_RECEIVER=507,		///< An AESEBU receiver control.
    	asxCONTROL_LEVEL=508,			///< A level/trim control for adjusting input and output levels.
    	asxCONTROL_TUNER=509,			///< A tuner control.
    	asxCONTROL_RDS=510,			///< An FM RDS/RBDS control
    	asxCONTROL_VOX=511,			///< A Vox control used to set record trigger level.
    	asxCONTROL_AES18_TRANSMITTER=512,	///< An AES18 transmitter control.
    	asxCONTROL_AES18_RECEIVER=513,		///< An AES18 receiver control.
    	asxCONTROL_AES18_BLOCK_GENERATOR=514,	///< An AES18 block generator control.
    	asxCONTROL_CHANNEL_MODE=515,		///< A channel mode control for adjusting audio routing.
    	asxCONTROL_BIT_STREAM=516,		///< A bitstream control for setting raw bitstream clocking parameters.
    	asxCONTROL_SAMPLE_CLOCK=517,		///< A sample clock control.
    	asxCONTROL_MICROPHONE=518,		///< A microphone control.
    	asxCONTROL_PARAMETRIC_EQ=519,		///< A parametric EQ control.
    	asxCONTROL_COMPANDER=520,		///< A compander control.
    	asxCONTROL_COBRANET=521,		///< A cobranet control.
    	asxCONTROL_PLAYER=522,			///< A player control that can play audio files from disk.
    	asxCONTROL_RECORDER=523,		///< A recorder control that can record audio files to disk.
    	asxCONTROL_GPIO=524,			///< A general purpose input/output control that typically would manipulate relays and read opto inputs.
    	asxCONTROL_RESERVED_525=525,		///< Reserved for future use.
    	asxCONTROL_RESERVED_526=526,		///< Reserved for future use.
    	asxCONTROL_RESERVED_527=527,		///< Reserved for future use.
    	asxCONTROL_RESERVED_528=528,		///< Reserved for future use.
    	asxCONTROL_GENERIC=529,			///< A generic control used as a placeholder during development.
    	asxCONTROL_TONEDETECTOR=530,		///< A tone detector control.
    	asxCONTROL_SILENCEDETECTOR=531,		///< A Silence detector control.
    	asxCONTROL_COBRANET_TRANSMITTER=532,	///< A Cobranet transmitter control.
    	asxCONTROL_COBRANET_RECEIVER=533,	///< A Cobranet receiver control.
    	asxCONTROL_PAD=534,			///< A Program Auxilary Data including RBDS control.
    	asxCONTROL_SRC=535,			///< Samplerate converter control.
    	asxCONTROL_BLOCK=536,			///< Block control.
    
    	asxCONTROL_LAST_CONTROL=537
        };
    public 
    enum asxVOLUME_AUTOFADE : int {
    	asxVOLUME_AUTOFADE_LOG,		///< Log fade causes dB level to fade linearly over time.
    	asxVOLUME_AUTOFADE_LINEAR	///< Linear fade causes amplitude to fade linearly over time.
        };
    public 
    enum asxMETER_TYPE : int {
    	asxMETER_PEAK,	///< The peak level of the signal.
    	asxMETER_RMS	///< The RMS level of the signal.
        };
    public 
    enum asxCHANNELMODE : int {
    	asxCHANNELMODE_ILLEGAL=1000,		///< Illegal channel mode.
    	asxCHANNELMODE_NORMAL=1001,		///< Normal mode. Left goes to left and right goes to right.
    	asxCHANNELMODE_SWAP=1002,		///< Channels are swapped. Left goes to right and right goes to left.
    	asxCHANNELMODE_STEREOTOLEFT=1003,	///< Both left and right channels are merged and output on left channel.
    	asxCHANNELMODE_STEREOTORIGHT=1004,	///< Both left and right channels are merged and output on the right channel.
    	asxCHANNELMODE_LEFTTOSTEREO=1005,	///< The left channel is converted to a stereo output. Right input channel is discarded.
    	asxCHANNELMODE_RIGHTTOSTEREO=1006	///< The right channel is converted to a stereo output. Left input channel is discarded.
        };
    public 
    enum asxADAPTERMODE : int {
    	asxADAPTERMODE_ILLEGAL=1100,		///< Illegal adapter mode.
    	asxADAPTERMODE_4_PLAY=1101,		///< Adapter has 4 playback streams.
    	asxADAPTERMODE_6_PLAY=1102,		///< Adapter has 6 playback streams.
    	asxADAPTERMODE_8_PLAY=1103,		///< Adapter has 8 playback streams.
    	asxADAPTERMODE_9_PLAY=1104,		///< Adapter has 9 playback streams.
    	asxADAPTERMODE_12_PLAY=1105,		///< Adapter has 12 playback streams.
    	asxADAPTERMODE_16_PLAY=1106,		///< Adapter has 16 playback streams.
    	asxADAPTERMODE_1_PLAY=1107,		///< Adapter has 1 playback streams.
    	asxADAPTERMODE_MODE_1=1108,		///< Adapter mode 1. Exact meaning depends on the adapter.
    	asxADAPTERMODE_MODE_2=1109,		///< Adapter mode 2. Exact meaning depends on the adapter.
    	asxADAPTERMODE_MODE_3=1110,		///< Adapter mode 3. Exact meaning depends on the adapter.
    	asxADAPTERMODE_MULTICHANNEL=1111,	///< Adapter set to handle streams with more than 2 channels.
    	asxADAPTERMODE_MONO=1112,		///< Adapter set to handle mono streams, including physical I/O.
    	asxADAPTERMODE_LOW_LATENCY=1113, ///< Adapter set to low latency mode.
    	asxADAPTERMODE_24_PLAY=1114,		///< Adapter has 24 plabck streams.
    	asxADAPTERMODE_32_PLAY = 1115		///< Adapter has 32 plabck streams.
        };
    public 
    enum asxTUNERBAND : int {
    	asxTUNERBAND_AM=1200,		///< Tuner band AM.
    	asxTUNERBAND_FM=1201,		///< Tuner band FM.
    	asxTUNERBAND_TV=1202,		///< Tuner band TV (NTSC North America).
    	asxTUNERBAND_FM_STEREO=1203,	///< Tuner band stereo FM.
    	asxTUNERBAND_AUX=1204,		///< Tuner band auxilary - input from the 50 pin header.
    	asxTUNERBAND_TV_PAL_BG=1205,	///< Tuner band TV PAL-BG
    	asxTUNERBAND_TV_PAL_I=1206,	///< Tuner band TV PAL-I
    	asxTUNERBAND_TV_PAL_DK=1207,	///< Tuner band TV PAL-DK
    	asxTUNERBAND_TV_SECAM_L=1208,	///< Tuner band TV SECAM
    	asxTUNERBAND_DAB=1209
        };
    public 
    enum asxTUNERDEEMPHASIS : int {
    	asxTUNERDEEMPHASIS_50=1240,	///< Tuner de-emphasis of 50us (Europe).
    	asxTUNERDEEMPHASIS_75=1241,	///< Tuner de-emphasis of 75us (USA).
    	asxTUNERDEEMPHASIS_NONE=1242,	///< Tuner no de-emphasis setting.
        };
    public 
    enum asxTUNERMODE : int {
    	asxTUNERMODE_RSS=1250,		///< Tuner mode RSS.
    	asxTUNERMODE_RSS_ENABLE=1251,	///< Tuner mode RSS is enabled.
    	asxTUNERMODE_RSS_DISABLE=1252	///< Tuner mode RSS is disabled.
        };
    public 
    enum asxTUNERPROGRAM : int {
    	asxTUNERPROGRAM_NONE=1260,	///< Tuner program 1.
    	asxTUNERPROGRAM_1=1261,		///< Tuner program 1.
    	asxTUNERPROGRAM_2=1262,		///< Tuner program 2.
    	asxTUNERPROGRAM_3=1263,		///< Tuner program 3.
    	asxTUNERPROGRAM_4=1264,		///< Tuner program 4.
    	asxTUNERPROGRAM_5=1265,		///< Tuner program 5.
    	asxTUNERPROGRAM_6=1266,		///< Tuner program 6.
    	asxTUNERPROGRAM_7=1267,		///< Tuner program 7.
    	asxTUNERPROGRAM_8=1268,		///< Tuner program 8.
        };
    public 
    enum asxTUNERHDBLEND : int {
    	asxTUNERHDBLEND_AUTO=1280,	///< Auto blend between analog and digital.
    	asxTUNERHDBLEND_ANALOG=1281,	///< Force analog.
        };
    public 
    enum asxSAMPLE_CLOCK_SOURCE : int {
    	asxSAMPLE_CLOCK_SOURCE_ADAPTER=1400,	///< /deprecated Use asxSAMPLE_CLOCK_SOURCE_LOCAL
    	asxSAMPLE_CLOCK_SOURCE_AESEBUSYNC=1401,	///< Sample clock source is derived from an AESEBU sync input.
    	asxSAMPLE_CLOCK_SOURCE_WORD=1402,	///< Sample clock source is derived from external word clock connector.
    	asxSAMPLE_CLOCK_SOURCE_WORD_HEADER=1403,///< Sample clock source is derived from word clock header on the adapter.
    	asxSAMPLE_CLOCK_SOURCE_SMPTE=1404,	///< Sample clock source is derived from SMPTE.
    	asxSAMPLE_CLOCK_SOURCE_NETWORK=1405,	///< Sample clock source is derived from the network.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUAUTO=1406,	///< Sample clock source is derived from the first AESEBU input with valid input.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT1=1407,///< Sample clock source is derived from AESEBU input 1.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT2=1408,///< Sample clock source is derived from AESEBU input 2.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT3=1409,///< Sample clock source is derived from AESEBU input 3.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT4=1410,///< Sample clock source is derived from AESEBU input 4.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT5=1411,///< Sample clock source is derived from AESEBU input 5.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT6=1412,///< Sample clock source is derived from AESEBU input 6.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT7=1413,///< Sample clock source is derived from AESEBU input 7.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT8=1414,///< Sample clock source is derived from AESEBU input 8.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT9=1415,///< Sample clock source is derived from AESEBU input 9.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT10=1416,///< Sample clock source is derived from AESEBU input 10.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT11=1417,///< Sample clock source is derived from AESEBU input 11.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT12=1418,///< Sample clock source is derived from AESEBU input 12.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT13=1419,///< Sample clock source is derived from AESEBU input 13.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT14=1420,///< Sample clock source is derived from AESEBU input 14.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT15=1421,///< Sample clock source is derived from AESEBU input 15.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT16=1422,///< Sample clock source is derived from AESEBU input 16.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT17=1423,///< Sample clock source is derived from AESEBU input 17.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT18=1424,///< Sample clock source is derived from AESEBU input 18.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT19=1425,///< Sample clock source is derived from AESEBU input 19.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT20=1426,///< Sample clock source is derived from AESEBU input 20.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT21=1427,///< Sample clock source is derived from AESEBU input 21.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT22=1428,///< Sample clock source is derived from AESEBU input 22.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT23=1429,///< Sample clock source is derived from AESEBU input 23.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT24=1430,///< Sample clock source is derived from AESEBU input 24.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT25=1431,///< Sample clock source is derived from AESEBU input 25.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT26=1432,///< Sample clock source is derived from AESEBU input 26.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT27=1433,///< Sample clock source is derived from AESEBU input 27.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT28=1434,///< Sample clock source is derived from AESEBU input 28.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT29=1435,///< Sample clock source is derived from AESEBU input 29.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT30=1436,///< Sample clock source is derived from AESEBU input 30.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT31=1437,///< Sample clock source is derived from AESEBU input 31.
    	asxSAMPLE_CLOCK_SOURCE_AESEBUINPUT32=1438,///< Sample clock source is derived from AESEBU input 32.
    	asxSAMPLE_CLOCK_SOURCE_LOCAL=1439,        ///< Sample clock source is local PLL.
    	asxSAMPLE_CLOCK_SOURCE_PREV_MODULE=1440,  ///< Sample clock source is previous module daisy-chain
    	asxSAMPLE_CLOCK_SOURCE_UNDEFINED=1441,	///< Sample clock source is undefined
    	asxSAMPLE_CLOCK_SOURCE_LIVEWIRE=1442,	///< /deprecated Use asxSAMPLE_CLOCK_SOURCE_NETWORK.
    	asxSAMPLE_CLOCK_SOURCE_BLULINK=1443	///< Sample clock source is generated by blu link
        };
    public 
    enum asxAESEBU_FORMAT : int {
    	asxAESEBU_FORMAT_AESEBU=1450,		///< AES/EBU format is set to AES/EBU (professional)
    	asxAESEBU_FORMAT_SPDIF=1451,		///< AES/EBU format is set to S/PDIF (consumer)
    	asxAESEBU_FORMAT_UNDEFINED=1452		///< AES/EBU format is undefined
        };
    public 
    enum asxEQBANDTYPE : int {
    	asxEQBANDTYPE_BYPASS=1460,		///< Bypass
    	asxEQBANDTYPE_LOWSHELF=1461,		///< Low Shelf - programmed gain below freq, unity gain above
    	asxEQBANDTYPE_HIGHSHELF=1462,		///< High Shelf - programmed gain above freq, unity gain below
    	asxEQBANDTYPE_EQUALIZER=1463,		///< Equalizer - programmed gain in passband, unity gain outside passband
    	asxEQBANDTYPE_LOWPASS=1464,			///< Low Pass - unity gain below freq, attanuated above
    	asxEQBANDTYPE_HIGHPASS=1465,		///< High Pass - unity gain above freq, attanuated below
    	asxEQBANDTYPE_BANDPASS=1466,		///< Band Pass - unity gain in passband, attanuated outside passband
    	asxEQBANDTYPE_BANDSTOP=1467,		///< Band Stop - attenuated in passband, unity gain outside passband
        };
    public 
    enum asxCOBRANET_MODE : int {
    	asxCOBRANET_MODE_NETWORK=1470,		///< Cobranet mode is set to networked
    	asxCOBRANET_MODE_TETHERED=1471		///< Cobranet mode is set to tethered
        };
    public 
    enum asxADPROPENUM_MODE : int {
    	asxADPROPENUM_MODE_PROPERTIES=1480,	///< Enumerate adapter properties
    	asxADPROPENUM_MODE_SETTINGS=1481	///< Enumerate adapter property settings
        };
    public 
    enum asxADPROPENUM_SSX2 : int {
    	asxADPROPENUM_SSX2_OFF=1488,		///< SSX2 off
    	asxADPROPENUM_SSX2_ON=1489		///< SSX2 on
        };
    public 
    enum asxCOBRANET_LATENCY : int {
    	asxCOBRANET_LATENCY_133ms=1490,		///< Cobranet latency of 1 1/3 ms.
    	asxCOBRANET_LATENCY_266ms=1491,		///< Cobranet latency of 2 2/3 ms.
    	asxCOBRANET_LATENCY_533ms=1492		///< Cobranet latency of 5 1/3 ms.
        };
    public 
    enum asxFILE_FORMAT : int {
    	asxFILE_FORMAT_WAV=10000,	///< Standard Windows .WAV soundfile.
    	asxFILE_FORMAT_RAW=10001	///< Raw binary data (no format header).
        };
    public 
    enum asxFILE_MODE : int {
    	asxFILE_MODE_CREATE=10100,	///< File is created, if it exists it is overwritten.
    	asxFILE_MODE_APPEND=10101	///< File is appended if it exists, created if it doesn't.
        };
    public 
    enum asxAUDIO_FORMAT : int {
    	asxAUDIO_FORMAT_PCM8=10200,		///< 8-bit PCM, unsigned.
    	asxAUDIO_FORMAT_PCM16=10201,		///< 16-bit PCM, signed.
    	asxAUDIO_FORMAT_PCM24=10202,		///< 24-bit PCM, signed.
    	asxAUDIO_FORMAT_PCM32=10203,		///< 32-bit PCM, signed.
    	asxAUDIO_FORMAT_PCM32_FLOAT=10204,	///< 32-bit PCM in IEEE float format.
    	asxAUDIO_FORMAT_MPEG_L2=10205,		///< MPEG-1, Layer-II.
    	asxAUDIO_FORMAT_MPEG_L3=10206,		///< MPEG-1, Layer-III, or "mp3".
    	asxAUDIO_FORMAT_MPEG_AACPLUS=10207,	///< AAC+.
    	asxAUDIO_FORMAT_DOLBY_AC2=10208,	///< Dolby AC-2.
    	asxAUDIO_FORMAT_PCM20=10209,		///< 20-bit PCM, signed.
    	asxAUDIO_FORMAT_NONE=10210		///< Unspecified or invalid audio format.
        };
    public 
    enum asxRECORD_MODE : int {
    	asxRECORD_MODE_STEREO=10300,		///< MPEG-1 Layer-2 mode stereo.
    	asxRECORD_MODE_JOINT_STEREO=10301,	///< MPEG-1 Layer-2 mode joint stereo. This allows channels to be merged at some frequencies.
    	asxRECORD_MODE_DUAL_MONO=10302,		///< MPEG-1 Layer-2 mode dual mono. Maintain left and right channel separation. Requires a higher bitrate.
    	asxRECORD_MODE_MONO=10303,		///< MPEG-1 Layer-2 mode mono.
    	asxRECORD_MODE_DONT_CARE=10304		///< Use this mode for PCM files and formats that don't have a "mode".
        };
    public 
    enum asxPLAYER_STATE: int {
    	asxPLAYER_INIT=10400,			///< Initialized state.
    	asxPLAYER_OPEN=10401,			///< Player is open.
    	asxPLAYER_PREFILL=10402,		///< Buffer prefill state.
    	asxPLAYER_RUNNING=10403,		///< Player is running, i.e. audio is playing.
    	asxPLAYER_PAUSED=10404,			///< Player is paused.
    	asxPLAYER_DONE=10405,			///< Player has completed playing a file.
    	asxPLAYER_DESTROY=10406			///< Player is being destroyed.
        };
    public 
    enum asxRECORDER_STATE: int {
    	asxRECORDER_INIT=10500,			///< Initialized state.
    	asxRECORDER_OPEN=10501,			///< Recorder is open.
    	asxRECORDER_RUNNING=10502,		///< Recorder is recording to a file.
    	asxRECORDER_PAUSED=10503,		///< Recorder is paused.
    	asxRECORDER_DONE=10504,			///< Recorder is halted and is no longer recording.
    	asxRECORDER_DESTROY=10505		///< Recorder is being destroyed.
        };
    public 
    enum asxTIMESCALE : int {
    	asxTIMESCALE_INVALID=10600,			///< Placeholder that indicates an error.
    	asxTIMESCALE_BYTES=10601,			///< Time scale is represented in bytes.
    	asxTIMESCALE_MILLISECONDS=10602,		///< Time scale is represented in milli-seconds.
    	asxTIMESCALE_SAMPLES=10603,			///< Time scale is represented in samples.
    	asxTIMESCALE_BYTES_REMAINING=10604,		///< Time scale is represented in bytes remaining.
    	asxTIMESCALE_MILLISECONDS_REMAINING=10605,	///< Time scale is represented in milli-seconds remaining.
    	asxTIMESCALE_SAMPLES_REMAINING=10606		///< Time scale is represented in samples remaining.
        };
    public 
    enum asxSAMPLE_RATE : int {
    	asxSAMPLE_RATE_8000=10700,
    	asxSAMPLE_RATE_11025=10701,
    	asxSAMPLE_RATE_16000=10702,
    	asxSAMPLE_RATE_22050=10703,
    	asxSAMPLE_RATE_24000=10704,
    	asxSAMPLE_RATE_32000=10705,
    	asxSAMPLE_RATE_44100=10706,
    	asxSAMPLE_RATE_48000=10707,
    	asxSAMPLE_RATE_64000=10708,
    	asxSAMPLE_RATE_88200=10709,
    	asxSAMPLE_RATE_96000=10710,
    	asxSAMPLE_RATE_192000=10711,
    	asxSAMPLE_RATE_12000=10712,
    	asxSAMPLE_RATE_176400=10713,
    	asxSAMPLE_RATE_UNDEFINED=10799
        };
    public 
    enum asxMSG_LOGGING : int {
    	asxMSG_LOGGING_DISABLE=10800,	///< Disable all message logging.
    	asxMSG_LOGGING_ERROR=10801,	///< Enable logging of error messages.
    	asxMSG_LOGGING_WARNING=10802,	///< Enable logging of warning and error messsages.
    	asxMSG_LOGGING_NOTICE=10803,	///< Enable logging of notice (ASX function error returns), warning and error messages.
    	asxMSG_LOGGING_INFO=10804,	///< Enable logging of info (ASX function calls), notice, warning and error messages.
    	asxMSG_LOGGING_DEBUG=10805,	///< Enable logging of debug, info, notice, warning and error messages.
    	asxMSG_LOGGING_VERBOSE=10806	///< Enable logging of all messages.
        };
    public 
    enum asxPLAYER_FLAGS : int {
    	asxPLAYER_FILE_COMPLETE=1,		///< A single playback file has completed.
    	asxPLAYER_FILELIST_COMPLETE=2,		///< A playlist has completed.
    	asxPLAYER_FILE_START=4,			///< A single playback file has started.
        };
    public 
    enum asxTUNER_STATUS : int {
    	asxTUNER_STATUS_VIDEO_VALID=1,				///< Video valid.
    	asxTUNER_STATUS_VIDEO_COLOR_PRESENT=2,			///< Color present.
    	asxTUNER_STATUS_VIDEO_IS_60HZ=4,			///< Video is 60 Hz.
    	asxTUNER_STATUS_VIDEO_HORZ_SYNC_MISSING=8,		///< Horizontal sync is missing.
    	asxTUNER_STATUS_PLL_LOCKED=16,				///< The tuners PLL is locked onto a signal.
    	asxTUNER_STATUS_FM_STEREO=32,				///< An FM stereo signal has been detected.
    	asxTUNER_STATUS_DIGITAL=64,				///< An digital channel has been detected.
    	asxTUNER_STATUS_MULTIPROGRAM=128,			///< An multi-program channel has been detected.
    	asxTUNER_STATUS_FIRMWARE_LOADING=256			///< tuner firmware is loading
        };
    public 
    enum asxTUNER_RDS_TYPE : int {
    	asxTUNER_RDS_TYPE_RDS=0,		///< RDS data.
    	asxTUNER_RDS_TYPE_RBDS=1,		///< RBDS data (USA) and HD Radio PSD.
        };
    public 
    enum asxAESEBU_STATUS : int {
    	asxAESEBU_ERROR=0x01,				///< AESEBU error.
    	asxAESEBU_ERROR_NOT_LOCKED=0x02,		///< AESEBU not locked to input signal.
    	asxAESEBU_ERROR_POOR_QUALITY=0x04,		///< AESEBU signal is poor quality.
    	asxAESEBU_ERROR_PARITY_ERROR=0x08,		///< AESEBU parity error was detected.
    	asxAESEBU_ERROR_BIPHASE_VIOLATION=0x10,		///< AESEBU Biphase violation.
    	asxAESEBU_ERROR_VALIDITY=0x20,			///< AESEBU validity error.
    	asxAESEBU_ERROR_CHANNELSTATUS_CRC=0x40		///< AESEBU channel status error.
        };
    public 
    enum asxCOMPANDER_INDEX : int {
    	asxCOMPANDER_INDEX_NOISEGATE=0,	///< Noise gate index.
    	asxCOMPANDER_INDEX_COMPANDER=1	///< Compander index.
        };
    public 
    enum asxHANDLE_TYPE : int {
    	asxHANDLE_INVALID,	///< Invalid handle.
    	asxHANDLE_SYSTEM,	///< Handle to ASX system.
    	asxHANDLE_ADAPTER,	///< Hanlde to ASX adapter.
    	asxHANDLE_MIXER,	///< Handle to ASX mixer.
    	asxHANDLE_NODE,		///< Handle to ASX node.
    	asxHANDLE_CONTROL,	///< Handle to ASX control.
    	asxHANDLE_LAST		///< Last handle placeholder.
    	    };
    public 
    enum asxUCONTROL_PTYPE : int {
    	asxPARAM_TYPE_NONE       = 0,
    	asxPARAM_TYPE_INTEGER    = 3,
    	asxPARAM_TYPE_FLOAT      = 4,
    	asxPARAM_TYPE_DOUBLE     = 5,
    	asxPARAM_TYPE_STRING     = 6,
    	//asxPARAM_TYPE_ENUMERATED = 7
    	asxPARAM_TYPE_IP4_ADDRESS= 8,
    	asxPARAM_TYPE_IP6_ADDRESS= 9,
    	asxPARAM_TYPE_MAC_ADDRESS= 10,
    	asxPARAM_TYPE_BOOLEAN= 11
        };
    public 
    enum asxUCONTROL_RTYPE : int {
    	asxPARAM_RANGE_NONE			= 0,
    	asxPARAM_RANGE_STEPPED_INTEGER		= 1,
    	asxPARAM_RANGE_STEPPED_FLOAT		= 2,
    	asxPARAM_RANGE_ENUMERATED_INTEGER	= 3,
    	asxPARAM_RANGE_ENUMERATED_FLOAT		= 4,
    	asxPARAM_RANGE_ENUMERATED		= 5,
    	asxPARAM_RANGE_STRING_LENGTH		= 6,
    	asxPARAM_RANGE_NUMBER_OF_BITS		= 7
        };
    public 
    enum asxUCONTROL_PFLAGS : int {
    	asxPARAM_FLAG_WRITEABLE   = 1, 
    	asxPARAM_FLAG_READABLE    = 2, 
    	asxPARAM_FLAG_VOLATILE    = 4 
        };
    public 
    enum asxCOBRANET_IFSTATUS : int {
    	asxCOBRANET_IFSTATUS_LINK_ESTABLISHED=0x01,	///< Ethernet link established.
    	asxCOBRANET_IFSTATUS_FULL_DUPLEX=0x02,		///< Connection is full-duplex.
    	asxCOBRANET_IFSTATUS_ACTIVE_CONNECTION=0x04	///< Packets being received at least every other second.
        };
    public 
    enum asxADAPTER_PROPERTY : int {
            asxADAPTER_PROPERTY_ERRATA_1=1, ///< true if errata_1 workaround for 6100 cards is turned on.
            asxADAPTER_PROPERTY_SSX2_SETTING=2, ///< true when SSX2 is on
            asxADAPTER_PROPERTY_SYNC_HEADER_CONNECTIONS=3, ///< (read-only),  the number of headers connected.
            asxADAPTER_PROPERTY_SUPPORT_SSX2=4, ///< (read-only), returns true or false.
            asxADAPTER_PROPERTY_SUPPORTS_FW_UPDATE=5, ///< (read-only), device supports firmware updating
            asxADAPTER_PROPERTY_FIRMWARE_ID=6, ///<(read-only), firmware ID
    	asxADAPTER_PROPERTY_SUPPORTS_SNMP = 7 ///<(read-only), device supports SNMP
        };
    public 
    enum asxCONTROL_PROPERTY : int {
    	asxCONTROL_PROPERTY_TUNER_HDRADIO_SIGNAL_QUALITY,
    	asxCONTROL_PROPERTY_TUNER_HDRADIO_SDK_VERSION,
    	asxCONTROL_PROPERTY_TUNER_HDRADIO_DSP_VERSION
        };


    ////////////////// C# Structs /////////////////////

    // asxPropertyRangeInfo_NamedEnumerated
    //[StructLayout(LayoutKind.Sequential, Pack=1)]
    //public struct asxPropertyRangeInfo_NamedEnumerated {
    //    public int  value;
    //    public char  name[ASX_SHORT_STRING];
    //};
    // asxPropertyRangeInfo
    // asxPropertyValue

    [UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet=CharSet.Auto)]
    public delegate void PlayerCallback(IntPtr hPlayer, Audio.AudioScience.Asx.asxPLAYER_FLAGS flags, IntPtr u);



    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_System_Create(
        int asxSystemType,
        ref IntPtr phSystem
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_System_CreateSubSystem(
        int asxSystemType,
        ref IntPtr pio_hSystem
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_System_SetHostNetworkInterface(
        System.Text.StringBuilder szInterface
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_System_SetAvdeccInterface(
        System.Text.StringBuilder szInterface
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_System_Delete(
        IntPtr hSystem
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_System_RegisterErrorCallback(
        IntPtr hSystem,
        ref int pCallback,
        IntPtr pUser1,
        IntPtr pUser2
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_System_GetName(
        IntPtr hSystem,
        System.Text.StringBuilder pszName,
        int nStringLength,
        out int pnRequiredLength
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_System_GetVersion(
        IntPtr hSystem,
        System.Text.StringBuilder pszSystemVersion,
        int nSystemVersionLength,
        out int pnRequiredSystemVersionLength,
        System.Text.StringBuilder pszSubSystemVersion,
        int nSubSystemVersionLength,
        out int pnRequiredSubSystemVersionLength
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_System_GetAdapterCount(
        IntPtr hSystem,
        out int pnCount
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_System_GetAdapter(
        IntPtr hSystem,
        int nAdapter,
        ref IntPtr p_hAdapter
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_System_SetMessageLogging(
        IntPtr hSystem,
        [MarshalAs(UnmanagedType.U4)]
        asxMSG_LOGGING eLog
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_System_GetMessageLogging(
        IntPtr hSystem,
        out asxMSG_LOGGING  eLog
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Error_GetLast(
        IntPtr hASXObject,
        ref asxERROR pnAsxErrorCode,
        out int pnAsxSubSystemErrorCode
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Error_GetLastString(
        IntPtr hASXObject,
        System.Text.StringBuilder pszAsxErrorString,
        int nAsxErrorStringLength,
        out int pnRequiredAsxErrorStringLength,
        System.Text.StringBuilder pszAsxSubSystemErrorString,
        int nAsxSubSystemErrorStringLength,
        out int pnRequiredAsxSubSystemErrorStringLength
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Error_Clear(
        IntPtr hASXObject
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Adapter_CheckSubSystems(
        IntPtr hAdapter,
        out uint pnSubSystemMask,
        out uint pnSubSystemOkMask
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Adapter_GetName(
        IntPtr hAdapter,
        System.Text.StringBuilder pszName,
        int nStringLength,
        out int RequiredLength
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Adapter_GetIndex(
        IntPtr hAdapter,
        out int pnIndex
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Adapter_GetAVDECCController(
        IntPtr hAdapter,
        IntPtr * controller_obj
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Adapter_GetAVDECCSystem(
        IntPtr hAdapter,
        IntPtr * sys
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Adapter_GetSerialNumber(
        IntPtr hAdapter,
        out uint pdwSerialNumber
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Adapter_GetHardwareRevision(
        IntPtr hAdapter,
        System.Text.StringBuilder pszRevision
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Adapter_GetFirmwareRevision(
        IntPtr hAdapter,
        System.Text.StringBuilder pszRevision
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Adapter_GetMacAddress(
        IntPtr hAdapter,
        System.Text.StringBuilder pszMAC
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Adapter_GetIpAddress(
        IntPtr hAdapter,
        System.Text.StringBuilder pszIP
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Adapter_GetDspUtilization(
        IntPtr hAdapter,
        int nDspIndex,
        out int pnDspUtilization
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Adapter_GetMixer(
        IntPtr hAdapter,
        ref IntPtr p_hMixer
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Adapter_EnumerateMode(
        IntPtr hAdapter,
        int nIndex,
        out asxADAPTERMODE  peMode,
        out int pnCount
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Adapter_GetMode(
        IntPtr hAdapter,
        out asxADAPTERMODE  peMode
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Adapter_SetMode(
        IntPtr hAdapter,
        [MarshalAs(UnmanagedType.U4)]
        asxADAPTERMODE eMode
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Adapter_EnumerateProperty(
        IntPtr hAdapter,
        int nIndex,
        [MarshalAs(UnmanagedType.U4)]
        asxADPROPENUM_MODE eMode,
        int nSubIndex,
        out uint pdwSetting
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Adapter_ReadProperty(
        IntPtr hAdapter,
        int nIndex,
        out ushort pwParm1,
        out ushort pwParm2
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Adapter_WriteProperty(
        IntPtr hAdapter,
        int nIndex,
        ushort  wParm1,
        ushort  wParm2
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Adapter_WriteNvMem(
        IntPtr hAdapter,
        int nAddress,
        byte cValue
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Adapter_ReadNvMem(
        IntPtr hAdapter,
        int nAddress,
        ref byte pcValue
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Adapter_GetNvMemSizeInBytes(
        IntPtr hAdapter,
        out int pnCount
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Mixer_ResetControls(
        IntPtr hMixer
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Mixer_GetSourceNodeCount(
        IntPtr hMixer,
        out int pnCount
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Mixer_GetSourceNode(
        IntPtr hMixer,
        int nSourceNode,
        ref IntPtr p_hNode
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Mixer_GetDestinationNodeCount(
        IntPtr hMixer,
        out int pnCount
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Mixer_GetDestinationNode(
        IntPtr hMixer,
        int nDestinationNode,
        ref IntPtr p_hNode
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Mixer_GetNodeByType(
        IntPtr hMixer,
        [MarshalAs(UnmanagedType.U4)]
        asxNODE eType,
        int nIndex,
        ref IntPtr p_hNode
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Mixer_GetNodeTypeCount(
        IntPtr hMixer,
        [MarshalAs(UnmanagedType.U4)]
        asxNODE eType,
        out int pnCount
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Mixer_GetControlCount(
        IntPtr hMixer,
        out int pnControls
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Mixer_GetControl(
        IntPtr hMixer,
        int nControl,
        ref IntPtr p_hControlBase
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Mixer_GetControlByNode(
        IntPtr hMixer,
        IntPtr hSourceNode,
        IntPtr hDestinationNode,
        [MarshalAs(UnmanagedType.U4)]
        asxCONTROL eControlType,
        ref IntPtr p_hControlBase
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Mixer_GetControlByNodeTypeAndIndex(
        IntPtr hMixer,
        [MarshalAs(UnmanagedType.U4)]
        asxNODE nSourceNodeType,
        int nSourceIndex,
        [MarshalAs(UnmanagedType.U4)]
        asxNODE nDestinationNodeType,
        int nDestinationIndex,
        [MarshalAs(UnmanagedType.U4)]
        asxCONTROL eControlType,
        ref IntPtr p_hControlBase
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Mixer_GetBlockControlByNodeTypeAndIndex(
        IntPtr hMixer,
        [MarshalAs(UnmanagedType.U4)]
        asxNODE nSourceNodeType,
        int nSourceIndex,
        [MarshalAs(UnmanagedType.U4)]
        asxNODE nDestinationNodeType,
        int nDestinationIndex,
        System.Text.StringBuilder pszBlockName,
        ref IntPtr p_hControlBase
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Node_GetType(
        IntPtr hNode,
        out asxNODE  peType
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Node_GetIndex(
        IntPtr hNode,
        out int pnIndex
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Node_GetLocation(
        IntPtr hNode,
        out int pnModuleSlot,
        out int pnNodeIndexOnSlot,
        System.Text.StringBuilder pszModuleName,
        int nStringLength
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Node_GetSubSystem(
        IntPtr hNode,
        out int p_nSubSystem
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Node_GetName(
        IntPtr hNode,
        System.Text.StringBuilder pszNodeName,
        int nStringLength
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Mixer_GetNodeType(
        IntPtr hNode,
        out asxNODE  peType
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Mixer_GetNodeIndex(
        IntPtr hNode,
        out int pnIndex
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Control_GetType(
        IntPtr hControl,
        out asxCONTROL  peControl
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Control_GetSourceNode(
        IntPtr hControl,
        ref IntPtr p_hNode
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Control_GetDestinationNode(
        IntPtr hControl,
        ref IntPtr p_hNode
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Control_GetHpiControl(
        IntPtr hControl,
        ref IntPtr pphHpiSubSys,
        out uint phHpiControl
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Control_GetSubSystem(
        IntPtr hControl,
        out int p_nSubSystem
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Control_GetProperty(
        IntPtr hControl,
        [MarshalAs(UnmanagedType.U4)]
        asxCONTROL_PROPERTY eProperty,
        uint  dwProperty1,
        uint  dwProperty2
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Player_Open(
        IntPtr hPlayer,
        System.Text.StringBuilder pszFile
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Player_Format_GetString(
        IntPtr hPlayer,
        System.Text.StringBuilder pszFormat
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Player_Format_GetDetails(
        IntPtr hPlayer,
        out asxAUDIO_FORMAT  peFormat,
        out int pnChannnels,
        out int pnSampleRate,
        out int pnBitRate
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Player_PreLoad(
        IntPtr hPlayer,
        [MarshalAs(UnmanagedType.U4)]
        asxTIMESCALE nType,
        uint  lPosition
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Player_Start(
        IntPtr hPlayer
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Player_Pause(
        IntPtr hPlayer
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Player_Stop(
        IntPtr hPlayer
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Player_Wait(
        IntPtr hPlayer
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Player_Close(
        IntPtr hPlayer
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Player_GetPosition(
        IntPtr hPlayer,
        [MarshalAs(UnmanagedType.U4)]
        asxTIMESCALE nType,
        out uint plPosition
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Player_SetPosition(
        IntPtr hPlayer,
        [MarshalAs(UnmanagedType.U4)]
        asxTIMESCALE nType,
        uint  lPosition
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Player_GetState(
        IntPtr hPlayer,
        out asxPLAYER_STATE  pnState
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Player_SetTimeScale(
        IntPtr hPlayer,
        float fTimeScale
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Player_GetTimeScale(
        IntPtr hPlayer,
        out float pfTimeScale
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Player_GetFilename(
        IntPtr hPlayer,
        System.Text.StringBuilder pszFilename,
        int nStringLength,
        out int pnRequiredLength
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Player_SetLoopMode(
        IntPtr hPlayer,
        int nLooping
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Player_GetLoopMode(
        IntPtr hPlayer,
        out int pnLooping
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Player_OpenPlaylist(
        IntPtr hPlayer,
        [MarshalAs(UnmanagedType.LPArray)]
        char[] pszFileList,
        uint nFiles
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Player_PlaylistStatus(
        IntPtr hPlayer,
        out uint nTotalFileCount,
        out int nCurrentFile,
        [MarshalAs(UnmanagedType.LPArray)]
        char[] szCurrentFilename,
        out uint nTotalTime_ms,
        out uint nCurrentTime_ms
        );


    /* ASX_Player_RegisterCallback() comments.

    Callbacks from a C DLL to c# are tricky. In class with callback function use
    private Audio.AudioScience.Asx.PlayerCallback callback;
    ... in the constructor ...
    callback = new Asx.PlayerCallback(onUpdateProgressPtr);
    UInt32 err = Asx.ASX_Player_RegisterCallback(_playerHandle, callback,
			Asx.asxPLAYER_FLAGS.asxPLAYER_FILE_COMPLETE | Asx.asxPLAYER_FLAGS.asxPLAYER_FILELIST_COMPLETE | 					Asx.asxPLAYER_FLAGS.asxPLAYER_FILE_START,
			IntPtr.Zero);
    GC.KeepAlive(callback);  // unmanaged event handler needs to be kept alive
    ... callback method looks like ...
    public void onUpdateProgressPtr(IntPtr hPlayer, Audio.AudioScience.Asx.asxPLAYER_FLAGS flags, IntPtr u)
    {
        // do stuff
    }
    */
    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Player_RegisterCallback(
        IntPtr hPlayer,
        PlayerCallback pCallback,
        [MarshalAs(UnmanagedType.U4)]
        asxPLAYER_FLAGS flags,
        IntPtr pUser1
    );
    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Player_PlaylistWait(
        IntPtr hPlayer
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Recorder_Open(
        IntPtr hRecorder,
        System.Text.StringBuilder pszFile,
        [MarshalAs(UnmanagedType.U4)]
        asxFILE_FORMAT nFileType,
        [MarshalAs(UnmanagedType.U4)]
        asxFILE_MODE nFileMode,
        int nChannels,
        [MarshalAs(UnmanagedType.U4)]
        asxAUDIO_FORMAT nFormat,
        int  lSampleRate,
        int  lBitrate,
        [MarshalAs(UnmanagedType.U4)]
        asxRECORD_MODE nMode
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Recorder_Start(
        IntPtr hRecorder
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Recorder_Stop(
        IntPtr hRecorder
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Recorder_Pause(
        IntPtr hRecorder
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Recorder_Close(
        IntPtr hRecorder
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Recorder_GetPosition(
        IntPtr hRecorder,
        [MarshalAs(UnmanagedType.U4)]
        asxTIMESCALE nType,
        out uint plPosition
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Recorder_GetState(
        IntPtr hRecorder,
        out asxRECORDER_STATE  peState
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Recorder_GetFilename(
        IntPtr hRecorder,
        System.Text.StringBuilder pszFilename,
        int nStringLength,
        out int pnRequiredLength
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Recorder_EnumerateFormat(
        IntPtr hRecorder,
        int nIndex,
        out asxAUDIO_FORMAT  peFormat,
        out int pnCount
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Meter_GetChannels(
        IntPtr hMeter,
        out int pnChannels
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Meter_GetPeak(
        IntPtr hMeter,
        [MarshalAs(UnmanagedType.LPArray)]
        float[] fdB,
        int nChannels
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Meter_GetRMS(
        IntPtr hMeter,
        [MarshalAs(UnmanagedType.LPArray)]
        float[] fdB,
        int nChannels
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Meter_SetBallistics(
        IntPtr hMeter,
        [MarshalAs(UnmanagedType.U4)]
        asxMETER_TYPE nMeterType,
        float fAttackTimeMs,
        float fDecayTimeMs
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Meter_GetBallistics(
        IntPtr hMeter,
        [MarshalAs(UnmanagedType.U4)]
        asxMETER_TYPE nMeterType,
        out float fAttackTimeMs,
        out float fDecayTimeMs
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Volume_GetChannels(
        IntPtr hVolume,
        out int pnChannels
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Volume_SetMute(
        IntPtr hVolume,
        [MarshalAs(UnmanagedType.LPArray)]
        int[] mute,
        int nChannels
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Volume_GetMute(
        IntPtr hVolume,
        [MarshalAs(UnmanagedType.LPArray)]
        int[] mute,
        int nChannels
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Volume_SetGain(
        IntPtr hVolume,
        [MarshalAs(UnmanagedType.LPArray)]
        float[] fdB,
        int nChannels
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Volume_GetGain(
        IntPtr hVolume,
        [MarshalAs(UnmanagedType.LPArray)]
        float[] fdB,
        int nChannels
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Volume_GetRange(
        IntPtr hVolume,
        out float fMinGain,
        out float fMaxGain,
        out float fGainStep
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Volume_SetAutofade(
        IntPtr hVolume,
        [MarshalAs(UnmanagedType.LPArray)]
        float[] fdB,
        int nChannels,
        int nDuration,
        [MarshalAs(UnmanagedType.U4)]
        asxVOLUME_AUTOFADE eProfile
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Level_Set(
        IntPtr hLevel,
        float fGain
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Level_Get(
        IntPtr hLevel,
        out float fGain
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Level_GetRange(
        IntPtr hLevel,
        out float fMinGain,
        out float fMaxGain,
        out float fGainStep
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Multiplexer_Enumerate(
        IntPtr hMux,
        int nIndex,
        out asxNODE  peNode,
        out int pnNodeIndex,
        out int pnCount
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Multiplexer_Get(
        IntPtr hMux,
        out asxNODE  peNode,
        out int pnNodeIndex
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Multiplexer_Set(
        IntPtr hMux,
        [MarshalAs(UnmanagedType.U4)]
        asxNODE eNode,
        int nNodeIndex
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_ChannelMode_Enumerate(
        IntPtr hMode,
        int nIndex,
        out asxCHANNELMODE  peMode,
        out int pnCount
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_ChannelMode_Get(
        IntPtr hMode,
        out asxCHANNELMODE  peMode
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_ChannelMode_Set(
        IntPtr hMode,
        [MarshalAs(UnmanagedType.U4)]
        asxCHANNELMODE eMode
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_EnumerateBand(
        IntPtr hTuner,
        int nIndex,
        out asxTUNERBAND  peBand,
        out int pnCount
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_GetBand(
        IntPtr hTuner,
        out asxTUNERBAND  peBand
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_SetBand(
        IntPtr hTuner,
        [MarshalAs(UnmanagedType.U4)]
        asxTUNERBAND eBand
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_SetFrequency(
        IntPtr hTuner,
        uint  nFreq
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_GetFrequency(
        IntPtr hTuner,
        out uint plFreq
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_GetFrequencyRange(
        IntPtr hTuner,
        [MarshalAs(UnmanagedType.U4)]
        asxTUNERBAND eBand,
        out uint plMin,
        out uint plMax,
        out uint plStep
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_GetGainRange(
        IntPtr hTuner,
        out float fMin,
        out float fMax,
        out float fStep
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_SetGain(
        IntPtr hTuner,
        float fTunerGain
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_GetGain(
        IntPtr hTuner,
        out float pfTunerGain
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_GetRFLevel(
        IntPtr hTuner,
        out float nRFLevel
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_GetRawRFLevel(
        IntPtr hTuner,
        out int nRawRFLevel
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_GetStatus(
        IntPtr hTuner,
        out uint puErrorStatusMask,
        out uint puErrorStatus
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_GetMode(
        IntPtr hTuner,
        [MarshalAs(UnmanagedType.U4)]
        asxTUNERMODE eMode,
        out asxTUNERMODE  peSetting
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_SetMode(
        IntPtr hTuner,
        [MarshalAs(UnmanagedType.U4)]
        asxTUNERMODE eMode,
        [MarshalAs(UnmanagedType.U4)]
        asxTUNERMODE eSetting
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_EnumerateDeemphasis(
        IntPtr hTuner,
        int nIndex,
        out asxTUNERDEEMPHASIS  peDeemphasis,
        out int pnCount
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_SetDeemphasis(
        IntPtr hTuner,
        [MarshalAs(UnmanagedType.U4)]
        asxTUNERDEEMPHASIS eDeemphasis
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_GetDeemphasis(
        IntPtr hTuner,
        out asxTUNERDEEMPHASIS  peDeemphasis
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_EnumerateProgram(
        IntPtr hTuner,
        int nIndex,
        out asxTUNERPROGRAM  peProgram,
        out int pnCount
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_SetProgram(
        IntPtr hTuner,
        [MarshalAs(UnmanagedType.U4)]
        asxTUNERPROGRAM eProgram
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_GetProgram(
        IntPtr hTuner,
        out asxTUNERPROGRAM  peProgram
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_GetHdRadioSignalQuality(
        IntPtr hTuner,
        out int pnSignalQuality
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_GetDigitalSignalQuality(
        IntPtr hTuner,
        out int pnSignalQuality
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_GetHdRadioSdkVersion(
        IntPtr hTuner,
        System.Text.StringBuilder szSdkVersion,
        int nStringLength
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_GetHdRadioDspVersion(
        IntPtr hTuner,
        System.Text.StringBuilder szSdkVersion,
        int nStringLength
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_GetFirmwareVersion(
        IntPtr hTuner,
        System.Text.StringBuilder szFirmwareVersion,
        int nStringLength
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_EnumerateHdBlend(
        IntPtr hTuner,
        int nIndex,
        out asxTUNERHDBLEND  peBlend,
        out int pnCount
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_SetHdBlend(
        IntPtr hTuner,
        [MarshalAs(UnmanagedType.U4)]
        asxTUNERHDBLEND nMode
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_GetHdBlend(
        IntPtr hTuner,
        out asxTUNERHDBLEND  pnMode
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_GetDabMultiplexName(
        IntPtr hTuner,
        System.Text.StringBuilder szMultiplexName,
        int nSize
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_GetDabMultiplexId(
        IntPtr hTuner,
        out uint dwMultiplexId
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_GetDabAudioServiceCount(
        IntPtr hTuner,
        out int pnIndex,
        out int pnCount
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_GetDabAudioServiceName(
        IntPtr hTuner,
        System.Text.StringBuilder szAudioServiceName,
        int nSize,
        int nIndex
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_SetDabAudioService(
        IntPtr hTuner,
        int nIndex
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_GetDabServiceId(
        IntPtr hTuner,
        out uint dwServiceId
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Tuner_GetDabAudioInfo(
        IntPtr hTuner,
        System.Text.StringBuilder szAudioInfo,
        int nSize
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_PAD_GetChannelName(
        IntPtr hPAD,
        System.Text.StringBuilder pszChannelName,
        int nStringLength
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_PAD_GetArtist(
        IntPtr hPAD,
        System.Text.StringBuilder pszArtist,
        int nStringLength
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_PAD_GetTitle(
        IntPtr hPAD,
        System.Text.StringBuilder pszTitle,
        int nStringLength
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_PAD_GetComment(
        IntPtr hPAD,
        System.Text.StringBuilder pszComment,
        int nStringLength
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_PAD_GetProgramType(
        IntPtr hPAD,
        out int pnProgramType
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_PAD_GetProgramTypeString(
        IntPtr hPAD,
        [MarshalAs(UnmanagedType.U4)]
        asxTUNER_RDS_TYPE eType,
        int nPTY,
        System.Text.StringBuilder pszString,
        int nStringLength
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_PAD_GetRdsPI(
        IntPtr hPAD,
        out int uPI
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_SampleClock_EnumerateSampleRate(
        IntPtr hSampleClock,
        int nIndex,
        out asxSAMPLE_RATE  peSampleRate,
        out int pnCount
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_SampleClock_EnumerateLocalRate(
        IntPtr hSampleClock,
        int nIndex,
        out asxSAMPLE_RATE  peSampleRate,
        out int pnCount
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_SampleClock_SetSampleRate(
        IntPtr hSampleClock,
        int nSampleRate
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_SampleClock_SetLocalRate(
        IntPtr hSampleClock,
        int nSampleRate
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_SampleClock_GetSampleRate(
        IntPtr hSampleClock,
        out int pnSampleRate
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_SampleClock_GetLocalRate(
        IntPtr hSampleClock,
        out int pnSampleRate
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_SampleClock_EnumerateClockSource(
        IntPtr hSampleClock,
        int nIndex,
        out asxSAMPLE_CLOCK_SOURCE  peClockSource,
        out int pnCount
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_SampleClock_SetClockSource(
        IntPtr hSampleClock,
        [MarshalAs(UnmanagedType.U4)]
        asxSAMPLE_CLOCK_SOURCE eClockSource
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_SampleClock_GetClockSource(
        IntPtr hSampleClock,
        out asxSAMPLE_CLOCK_SOURCE  peClockSource
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_SampleClock_SetAutoSource(
        IntPtr hSampleClock,
        int nEnable
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_SampleClock_GetAutoSource(
        IntPtr hSampleClock,
        out int pnEnable
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_SampleClock_SetLocalRateLock(
        IntPtr hSampleClock,
        int nLock
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_SampleClock_GetLocalRateLock(
        IntPtr hSampleClock,
        out int pnLock
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_AESEBUReceiver_GetErrorStatus(
        IntPtr hAESEBURx,
        out uint pdwErrorStatusMask,
        out uint pdwErrorStatus
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_AESEBUReceiver_GetSampleRate(
        IntPtr hAESEBURx,
        out uint pdwSampleRate
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_AESEBUReceiver_EnumerateFormat(
        IntPtr hAESEBURx,
        int nIndex,
        out asxAESEBU_FORMAT  peAesebuFormat,
        out int pnCount
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_AESEBUReceiver_SetFormat(
        IntPtr hAESEBURx,
        [MarshalAs(UnmanagedType.U4)]
        asxAESEBU_FORMAT eAesebuFormat
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_AESEBUReceiver_GetFormat(
        IntPtr hAESEBURx,
        out asxAESEBU_FORMAT  peAesebuFormat
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_AESEBUTransmitter_EnumerateFormat(
        IntPtr hAESEBUTx,
        int nIndex,
        out asxAESEBU_FORMAT  peAesebuFormat,
        out int pnCount
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_AESEBUTransmitter_SetFormat(
        IntPtr hAESEBUTx,
        [MarshalAs(UnmanagedType.U4)]
        asxAESEBU_FORMAT eAesebuFormat
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_AESEBUTransmitter_GetFormat(
        IntPtr hAESEBUTx,
        out asxAESEBU_FORMAT  peAesebuFormat
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_GPIO_GetProperties(
        IntPtr hGPIO,
        out int pnNumberOfInputBits,
       out int pnNumberOfOutputBits
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_GPIO_InputGet(
        IntPtr hGPIO,
        out int pnInputBits,
        int nNumberOfBits
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_GPIO_OutputSet(
        IntPtr hGPIO,
        out int pnOutputBits,
        int nNumberOfBits
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_GPIO_OutputGet(
        IntPtr hGPIO,
        out int pnOutputBits,
        int nNumberOfBits
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Vox_SetLevel(
        IntPtr hVox,
        float fSetLevel
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Vox_GetLevel(
        IntPtr hVox,
        out float fGetLevel
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Vox_GetRange(
        IntPtr hVox,
        out float fMinLevel,
        out float fMaxLevel,
        out float fLevelStep
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_GetGenericControlName(
        IntPtr hControl,
        System.Text.StringBuilder pName
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Mic_SetPhantomPower(
        IntPtr hMic,
        int nOnOff
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Mic_GetPhantomPower(
        IntPtr hMic,
        out int pOnOff
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_EQ_GetInfo(
        IntPtr hParmEq,
        out ushort pwNumberOfBands,
        out ushort pwEnabled
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_EQ_SetState(
        IntPtr hParmEq,
        ushort  wOnOff
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_EQ_SetBand(
        IntPtr hParmEq,
        ushort  wIndex,
        [MarshalAs(UnmanagedType.U4)]
        asxEQBANDTYPE eType,
        uint  dwFrequencyHz,
        short nQ100,
        short nGain0_01dB
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_EQ_GetBand(
        IntPtr hParmEq,
        ushort  wIndex,
        out asxEQBANDTYPE  peType,
        out uint pdwFrequencyHz,
        out short pnQ100,
        out short pnGain0_01dB
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Compander_Set(
        IntPtr hCompander,
        ushort  wAttack,
        ushort  wDecay,
        short wRatio100,
        short nThreshold0_01dB,
        short nMakeupGain0_01dB
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Compander_Get(
        IntPtr hCompander,
        out ushort pwAttack,
        out ushort pwDecay,
        out short pwRatio100,
        out short pnThreshold0_01dB,
        out short pnMakeupGain0_01dB
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Compander_SetEnable(
        IntPtr hCompander,
        uint nOn
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Compander_GetEnable(
        IntPtr hCompander,
        out uint nOn
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Compander_SetMakeupGain(
        IntPtr hCompander,
        float fMakeupGain
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Compander_GetMakeupGain(
        IntPtr hCompander,
        out float fMakeupGain
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Compander_SetAttackTimeConstant(
        IntPtr hCompander,
        [MarshalAs(UnmanagedType.U4)]
        asxCOMPANDER_INDEX index,
        uint nAttack
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Compander_GetAttackTimeConstant(
        IntPtr hCompander,
        [MarshalAs(UnmanagedType.U4)]
        asxCOMPANDER_INDEX index,
        out uint pnAttack
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Compander_SetDecayTimeConstant(
        IntPtr hCompander,
        [MarshalAs(UnmanagedType.U4)]
        asxCOMPANDER_INDEX index,
        uint nDecay
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Compander_GetDecayTimeConstant(
        IntPtr hCompander,
        [MarshalAs(UnmanagedType.U4)]
        asxCOMPANDER_INDEX index,
        out uint pnDecay
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Compander_SetThreshold(
        IntPtr hCompander,
        [MarshalAs(UnmanagedType.U4)]
        asxCOMPANDER_INDEX index,
        float nThreshold
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Compander_GetThreshold(
        IntPtr hCompander,
        [MarshalAs(UnmanagedType.U4)]
        asxCOMPANDER_INDEX index,
        out float pnThreshold
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Compander_SetRatio(
        IntPtr hCompander,
        [MarshalAs(UnmanagedType.U4)]
        asxCOMPANDER_INDEX index,
        float fRatio
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Compander_GetRatio(
        IntPtr hCompander,
        [MarshalAs(UnmanagedType.U4)]
        asxCOMPANDER_INDEX index,
        out float fRatio
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Cobranet_EnumerateModes(
        IntPtr hCobranet,
        int nIndex,
        out asxCOBRANET_MODE  peMode,
        out int pnCount
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Cobranet_GetMode(
        IntPtr hCobranet,
        out asxCOBRANET_MODE  peMode
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Cobranet_SetMode(
        IntPtr hCobranet,
        [MarshalAs(UnmanagedType.U4)]
        asxCOBRANET_MODE eMode
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Cobranet_GetIPAddress(
        IntPtr hCobranet,
        out uint pdwIPAddr
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Cobranet_SetIPAddress(
        IntPtr hCobranet,
        uint dwIPAddr
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Cobranet_GetStaticIPAddress(
        IntPtr hCobranet,
        out uint pdwIPAddr
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Cobranet_SetStaticIPAddress(
        IntPtr hCobranet,
        uint dwIPAddr
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Cobranet_GetMACAddress(
        IntPtr hCobranet,
        out uint pdwMAC_MSBs,
        out ushort pwMAC_LSBs
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Cobranet_GetDescription(
        IntPtr hCobranet,
        System.Text.StringBuilder szString,
        int nLength
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Cobranet_GetName(
        IntPtr hCobranet,
        System.Text.StringBuilder szString,
        int nLength
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Cobranet_SetName(
        IntPtr hCobranet,
        System.Text.StringBuilder pszLongInputString
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Cobranet_GetLocation(
        IntPtr hCobranet,
        System.Text.StringBuilder szString,
        int nLength
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Cobranet_SetLocation(
        IntPtr hCobranet,
        System.Text.StringBuilder pszLongInputString
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Cobranet_GetFirmwareRevision(
        IntPtr hCobranet,
        System.Text.StringBuilder pszRevision
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Cobranet_GetErrorInfo(
        IntPtr hCobranet,
        out uint pnCode,
        out uint pnCount,
        out uint pnDisplay
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Cobranet_GetLatencyAndSampleRate(
        IntPtr hCobranet,
        out asxCOBRANET_LATENCY  peLatency,
        out asxSAMPLE_RATE  peRate
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Cobranet_SetLatencyAndSampleRate(
        IntPtr hCobranet,
        [MarshalAs(UnmanagedType.U4)]
        asxCOBRANET_LATENCY eLatency,
        [MarshalAs(UnmanagedType.U4)]
        asxSAMPLE_RATE eRate
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Cobranet_GetPersistence(
        IntPtr hCobranet,
        out uint pnSetting
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Cobranet_SetPersistence(
        IntPtr hCobranet,
        uint nSetting
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Cobranet_GetConductorPriority(
        IntPtr hCobranet,
        out uint pnPriority
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Cobranet_SetConductorPriority(
        IntPtr hCobranet,
        uint nPriority
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Cobranet_GetConductorStatus(
        IntPtr hCobranet,
        out uint pnState
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Cobranet_SetSerialEnable(
        IntPtr hCobranet,
        int nOnOff
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Cobranet_GetSerialEnable(
        IntPtr hCobranet,
        out int pOnOff
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Cobranet_SetSerialConfig(
        IntPtr hCobranet,
        uint nBaud,
        uint nPPeriod,
        [MarshalAs(UnmanagedType.LPArray)]
        char[] pRxMAC,
        int nAcceptUnicast,
        [MarshalAs(UnmanagedType.LPArray)]
        char[] pTxMAC
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Cobranet_GetSerialConfig(
        IntPtr hCobranet,
        out uint pnBaud,
        out uint pnPPeriod,
        [MarshalAs(UnmanagedType.LPArray)]
        char[] pRxMAC,
        out int pnAcceptUnicast,
        [MarshalAs(UnmanagedType.LPArray)]
        char[] pTxMAC
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Cobranet_GetIfStatus(
        IntPtr hCobranet,
        out uint pnCurrentIf,
        out uint pnPrimaryLinkStatus,
        out uint pnSecondaryLinkStatus
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_CobranetTx_GetStatus(
        IntPtr hCobranetTx,
        out uint pnDropouts,
        out uint pnPosition,
       out uint pnReceivers
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_CobranetTx_GetBundle(
        IntPtr hCobranetTx,
        out uint pnBundle
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_CobranetTx_SetBundle(
        IntPtr hCobranetTx,
        uint nBundle
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_CobranetTx_GetChannelCount(
        IntPtr hCobranetTx,
        out uint pnCount
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_CobranetTx_SetChannelCount(
        IntPtr hCobranetTx,
        uint nCount
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_CobranetTx_GetChannelMap(
        IntPtr hCobranetTx,
        [MarshalAs(UnmanagedType.LPArray)]
        uint[] nMap
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_CobranetTx_SetChannelMap(
        IntPtr hCobranetTx,
        [MarshalAs(UnmanagedType.LPArray)]
        uint[] nMap
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_CobranetTx_GetFormat(
        IntPtr hCobranetTx,
        out asxAUDIO_FORMAT  peFormat
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_CobranetTx_SetFormat(
        IntPtr hCobranetTx,
        [MarshalAs(UnmanagedType.U4)]
        asxAUDIO_FORMAT eFormat
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_CobranetTx_GetUnicastMode(
        IntPtr hCobranetTx,
        out uint pnUnicastMode,
        out uint pnMaxUnicast
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_CobranetTx_SetUnicastMode(
        IntPtr hCobranetTx,
        uint nUnicastMode,
        uint nMaxUnicast
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_CobranetRx_GetStatus(
        IntPtr hCobranetRx,
        out uint pnStatus,
        out uint pnDropouts,
        out uint pnDelay,
        [MarshalAs(UnmanagedType.LPArray)]
        uint[] nFormat
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_CobranetRx_GetBundle(
        IntPtr hCobranetRx,
        out uint pnBundle
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_CobranetRx_SetBundle(
        IntPtr hCobranetRx,
        uint nBundle
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_CobranetRx_GetSourceMAC(
        IntPtr hCobranetRx,
        out uint pdwMAC_MSBs,
        out ushort pwMAC_LSBs
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_CobranetRx_SetSourceMAC(
        IntPtr hCobranetRx,
        uint dwMAC_MSBs,
        ushort  wMAC_LSBs
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_CobranetRx_GetChannelMap(
        IntPtr hCobranetRx,
        [MarshalAs(UnmanagedType.LPArray)]
        uint[] nMap
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_CobranetRx_SetChannelMap(
        IntPtr hCobranetRx,
        [MarshalAs(UnmanagedType.LPArray)]
        uint[] nMap
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_CobranetRx_GetMinimumDelay(
        IntPtr hCobranetRx,
        out uint pnMinDelay
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_CobranetRx_SetMinimumDelay(
        IntPtr hCobranetRx,
        uint nMinDelay
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_ToneDetector_SetEnable(
        IntPtr hToneDetector,
       uint nEnable
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_ToneDetector_GetEnable(
        IntPtr hToneDetector,
       out uint nEnable
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_ToneDetector_SetEventEnable(
        IntPtr hToneDetector,
       uint nEnable
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_ToneDetector_GetEventEnable(
        IntPtr hToneDetector,
       out uint nEnable
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_ToneDetector_SetThreshold(
        IntPtr hToneDetector,
       float fThreshold
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_ToneDetector_GetThreshold(
        IntPtr hToneDetector,
       out float fThreshold
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_ToneDetector_GetState(
        IntPtr hToneDetector,
       out uint nState
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_ToneDetector_GetFrequency(
        IntPtr hToneDetector,
       uint nIndex,
       out uint nState
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_SilenceDetector_SetEnable(
        IntPtr hSilenceDetector,
       uint nEnable
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_SilenceDetector_GetEnable(
        IntPtr hSilenceDetector,
       out uint nEnable
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_SilenceDetector_SetEventEnable(
        IntPtr hSilenceDetector,
       uint nEnable
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_SilenceDetector_GetEventEnable(
        IntPtr hSilenceDetector,
       out uint nEnable
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_SilenceDetector_SetDelay(
        IntPtr hSilenceDetector,
        uint Delay
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_SilenceDetector_GetDelay(
        IntPtr hSilenceDetector,
        out uint Delay
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_SilenceDetector_SetThreshold(
        IntPtr hSilenceDetector,
       float fThreshold
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_SilenceDetector_GetThreshold(
        IntPtr hSilenceDetector,
       out float fThreshold
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_SilenceDetector_GetState(
        IntPtr hSilenceDetector,
       out uint nState
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Block_GetInfo(
        IntPtr hBlock,
        System.Text.StringBuilder szBlockName,
        uint uStringLength,
        out uint uParameterCount
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Block_Parameter_GetName(
        IntPtr hBlock,
        uint uParameterIndex,
        System.Text.StringBuilder szParameterName,
        uint uStringLength
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Block_Parameter_GetUnits(
        IntPtr hBlock,
        uint uParameterIndex,
        System.Text.StringBuilder szParameterUnits,
        uint uStringLength
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Block_Parameter_GetType(
        IntPtr hBlock,
        uint uParameterIndex,
        out asxUCONTROL_PTYPE  eType
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Block_Parameter_GetFlags(
        IntPtr hBlock,
        uint uParameterIndex,
        out asxUCONTROL_PFLAGS  eFlags
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Block_Parameter_GetElementCount(
        IntPtr hBlock,
        uint uParameterIndex,
        out uint uCount
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Block_Parameter_GetRange(
        IntPtr hBlock,
        uint uParameterIndex,
        ref int info
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Block_Parameter_GetEnumName(
        IntPtr hBlock,
        uint uParameterIndex,
        uint uEnumItem,
        System.Text.StringBuilder szEnumName,
        uint uStringLength
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Block_Parameter_Set(
        IntPtr hBlock,
        uint uParameterIndex,
        ref int data
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_Block_Parameter_Get(
        IntPtr hBlock,
        uint uParameterIndex,
        ref int data
        );

    [System.Security.SuppressUnmanagedCodeSecurity]
    [DllImport("asx32.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern uint ASX_ParameterValue_Init(
        ref int data,
        out asxUCONTROL_PTYPE  eType,
        uint uElementCount,
        IntPtr data2
        );

    [DllImport( "asx32.dll" )]
    public static extern uint ASXSTRING_EnumToString(
        [MarshalAs(UnmanagedType.U4)]
        uint theEnum,
        System.Text.StringBuilder pszString,
        int nStringLength,
        out int pnRequiredStringLength
        );
}
}
