chr
2026-04-05 fe750b791d5b517cc4e9bc8e99a9a75139a0cfba
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
//            Copyright Keysight Technologies 2012-2019
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, you can obtain one at http://mozilla.org/MPL/2.0/.
 
using System;
using System.Linq;
using System.Text;
 
namespace OpenTap 
{
    internal static class Visa
    {
        // --------------------------------------------------------------------------------
        //  Adapted from visa32.bas which was distributed by IVI Foundation
        //  Distributed By Kesight Technologies, Inc.
        // --------------------------------------------------------------------------------
        //  Title   : visa32.cs
        //  Date    : 09-13-2016
        //  Purpose : VISA definitions for C#
        // -------------------------------------------------------------------------
        public const int VI_SPEC_VERSION = 0x00500100;
 
        private static readonly VisaFunctions.ViOpenDefaultRmDelegate ViOpenDefaultRmRef;
        private static readonly VisaFunctions.ViFindRsrcDelegate ViFindRsrcRef;
        private static readonly VisaFunctions.ViFindNextDelegate ViFindNextRef;
        private static readonly VisaFunctions.ViParseRsrcDelegate ViParseRsrcRef;
        private static readonly VisaFunctions.ViParseRsrcExDelegate ViParseRsrcExRef;
        private static readonly VisaFunctions.ViOpenDelegate ViOpenRef;
        private static readonly VisaFunctions.ViCloseDelegate ViCloseRef;
        private static readonly VisaFunctions.ViGetAttributeBDelegate ViGetAttributeBRef;
        private static readonly VisaFunctions.ViGetAttributeSbDelegate ViGetAttributeSbRef;
        private static readonly VisaFunctions.ViGetAttributeIDelegate ViGetAttributeIRef;
        private static readonly VisaFunctions.ViSetAttributeBDelegate ViSetAttributeBRef;
        private static readonly VisaFunctions.ViSetAttributeIDelegate ViSetAttributeIRef;
        private static readonly VisaFunctions.ViStatusDescDelegate ViStatusDescRef;
        private static readonly VisaFunctions.ViEnableEventDelegate ViEnableEventRef;
        private static readonly VisaFunctions.ViDisableEventDelegate ViDisableEventRef;
        private static readonly VisaFunctions.ViInstallHandlerDelegate ViInstallHandlerRef;
        private static readonly VisaFunctions.ViUninstallHandlerDelegate ViUninstallHandlerRef;
        private static readonly VisaFunctions.ViWaitOnEventDelegate ViWaitOnEventRef;
        private static readonly VisaFunctions.ViReadDelegate ViReadRef;
        private static readonly VisaFunctions.ViWriteDelegate ViWriteRef;
        private static readonly VisaFunctions.ViReadStbDelegate ViReadStbRef;
        private static readonly VisaFunctions.ViClearDelegate ViClearRef;
        private static readonly VisaFunctions.ViLockDelegate ViLockRef;
        private static readonly VisaFunctions.ViUnlockDelegate ViUnlockRef;
        
        static readonly TraceSource staticLog = OpenTap.Log.CreateSource("Visa");
        static Visa()
        {
            var symbolLoaders = TypeData.GetDerivedTypes<IVisaFunctionLoader>()
                .Select(t => t.CreateInstanceSafe())
                .OfType<IVisaFunctionLoader>()
                .Where(loader =>
                        {
                            try
                            {
                                return loader.Functions.HasValue;
                            }
                            catch
                            {
                                return false;
                            }
                        })
                .Select(l => (l.Order, (object)l));
            
            // Old way of doing visa provider, this is here for backwards compatibility.
            #pragma warning disable CS0618 // Type or member is obsolete.
            var visaProviders = TypeData.GetDerivedTypes<IVisaProvider>()
                .Select(type => type.CreateInstanceSafe())
                .OfType<IVisaProvider>()
                .Select(p => (p.Order, (object)p));
            #pragma warning disable CS0618 // Type or member is obsolete.
            
            var loaders = symbolLoaders.Concat<(double order, object obj)>(visaProviders).ToArray();
            
            foreach (var loader in loaders.OrderBy(t => t.order).Select(x => x.obj))
            {
                if (loader is IVisaFunctionLoader symbolLoader && symbolLoader.Functions is VisaFunctions functions)
                {
                    _implementor = symbolLoader;
                    staticLog.Debug("Using IVisaSymbolLoader: {0}", symbolLoader);
 
                    ViOpenDefaultRmRef = functions.ViOpenDefaultRmRef;
                    ViFindRsrcRef = functions.ViFindRsrcRef;
                    ViFindNextRef = functions.ViFindNextRef;
                    ViParseRsrcRef = functions.ViParseRsrcRef;
                    ViParseRsrcExRef = functions.ViParseRsrcExRef;
                    ViOpenRef = functions.ViOpenRef;
                    ViCloseRef = functions.ViCloseRef;
                    ViReadRef = functions.ViReadRef;
                    ViWriteRef = functions.ViWriteRef;
                    ViReadStbRef = functions.ViReadStbRef;
                    ViClearRef = functions.ViClearRef;
                    ViLockRef = functions.ViLockRef;
                    ViUnlockRef = functions.ViUnlockRef;
                    ViGetAttributeBRef = functions.ViGetAttribute1Ref;
                    ViGetAttributeSbRef = functions.ViGetAttribute2Ref;
                    ViGetAttributeIRef = functions.ViGetAttribute3Ref;
                    ViSetAttributeBRef = functions.ViSetAttribute1Ref;
                    ViSetAttributeIRef = functions.ViSetAttribute2Ref;
                    ViStatusDescRef = functions.ViStatusDescRef;
                    ViEnableEventRef = functions.ViEnableEventRef;
                    ViDisableEventRef = functions.ViDisableEventRef;
                    ViInstallHandlerRef = functions.ViInstallHandlerRef;
                    ViUninstallHandlerRef = functions.ViUninstallHandlerRef;
                    ViWaitOnEventRef = functions.ViWaitOnEventRef;
                    return;
                }
                else if (loader is IVisaProvider visaProvider && visaProvider.Visa is { } visa)
                {
                    _implementor = loader;
                    staticLog.Debug("Using IVisaProvider: {0}", visa);
 
                    ViOpenDefaultRmRef = visa.viOpenDefaultRM;
                    ViFindRsrcRef = visa.viFindRsrc;
                    ViFindNextRef = visa.viFindNext;
                    ViParseRsrcRef = visa.viParseRsrc;
                    ViParseRsrcExRef = visa.viParseRsrcEx;
                    ViOpenRef = visa.viOpen;
                    ViCloseRef = visa.viClose;
                    ViReadRef = visa.viRead;
                    ViWriteRef = visa.viWrite;
                    ViReadStbRef = visa.viReadSTB;
                    ViClearRef = visa.viClear;
                    ViLockRef = visa.viLock;
                    ViUnlockRef = visa.viUnlock;
                    ViGetAttributeBRef = visa.viGetAttribute1;
                    ViGetAttributeSbRef = visa.viGetAttribute2;
                    ViGetAttributeIRef = visa.viGetAttribute3;
                    ViSetAttributeBRef = visa.viSetAttribute1;
                    ViSetAttributeIRef = visa.viSetAttribute2;
                    ViStatusDescRef = visa.viStatusDesc;
                    ViEnableEventRef = visa.viEnableEvent;
                    ViDisableEventRef = visa.viDisableEvent;
                    ViInstallHandlerRef = (vi, type, handler, handle) => visa.viInstallHandler(vi, type, (IVisa.viEventHandler)Delegate.CreateDelegate(typeof(VisaFunctions.ViEventHandler), handler.Target, handler.Method), handle);
                    ViUninstallHandlerRef = (vi, type, handler, handle) => visa.viInstallHandler(vi, type, (IVisa.viEventHandler)Delegate.CreateDelegate(typeof(VisaFunctions.ViEventHandler), handler.Target, handler.Method), handle);
                    return;
                }
            }
            staticLog.Error("No Visa providers available.");
        }
        
        private static readonly object _implementor;
 
        internal static int viOpenDefaultRM(out int sesn) 
            => ViOpenDefaultRmRef?.Invoke(out sesn)
            ?? throw new NotSupportedException($"{_implementor} does not support viOpenDefaultRM");
 
        internal static int viFindRsrc(int sesn, string expr, out int vi, out int retCount, StringBuilder desc) 
            => ViFindRsrcRef?.Invoke(sesn, expr, out vi, out retCount, desc)
            ?? throw new NotSupportedException($"{_implementor} does not support viFindRsrc");
        internal static int viFindNext(int vi, StringBuilder desc) 
            => ViFindNextRef?.Invoke(vi, desc)
            ?? throw new NotSupportedException($"{_implementor} does not support viFindNext");
 
        internal static int viParseRsrc(int sesn, string desc, ref short intfType, ref short intfNum) 
            => ViParseRsrcRef?.Invoke(sesn, desc, ref intfType, ref intfNum)
            ?? throw new NotSupportedException($"{_implementor} does not support viParseRsrc");
        internal static int viParseRsrcEx(int sesn, string desc, ref short intfType, ref short intfNum, StringBuilder rsrcClass, StringBuilder expandedUnaliasedName, StringBuilder aliasIfExists) 
            => ViParseRsrcExRef?.Invoke(sesn, desc, ref intfType, ref intfNum, rsrcClass, expandedUnaliasedName, aliasIfExists)
            ?? throw new NotSupportedException($"{_implementor} does not support viParseRsrcEx");
 
        internal static int viOpen(int sesn, string viDesc, int mode, int timeout, out int vi) 
            => ViOpenRef?.Invoke(sesn, viDesc, mode, timeout, out vi)
            ?? throw new NotSupportedException($"{_implementor} does not support viOpen");
        internal static int viClose(int vi) 
            => ViCloseRef?.Invoke(vi)
            ?? throw new NotSupportedException($"{_implementor} does not support viClose");
 
        internal static int viGetAttribute(int vi, int attrName, out byte attrValue) 
            => ViGetAttributeBRef?.Invoke(vi, attrName, out attrValue)
            ?? throw new NotSupportedException($"{_implementor} does not support viGetAttribute");
        internal static int viGetAttribute(int vi, int attrName, StringBuilder attrValue) 
            => ViGetAttributeSbRef?.Invoke(vi, attrName, attrValue)
            ?? throw new NotSupportedException($"{_implementor} does not support viGetAttribute");
        internal static int viGetAttribute(int vi, int attrName, out int attrValue) 
            => ViGetAttributeIRef?.Invoke(vi, attrName, out attrValue)
            ?? throw new NotSupportedException($"{_implementor} does not support viGetAttribute");
        internal static int viSetAttribute(int vi, int attrName, byte attrValue) 
            => ViSetAttributeBRef?.Invoke(vi, attrName, attrValue)
            ?? throw new NotSupportedException($"{_implementor} does not support viSetAttribute");
        internal static int viSetAttribute(int vi, int attrName, int attrValue) 
            => ViSetAttributeIRef?.Invoke(vi, attrName, attrValue)
            ?? throw new NotSupportedException($"{_implementor} does not support viSetAttribute");
 
        internal static int viStatusDesc(int vi, int status, StringBuilder desc) 
            => ViStatusDescRef?.Invoke(vi, status, desc)
            ?? throw new NotSupportedException($"{_implementor} does not support viStatusDesc");
 
        internal static int viEnableEvent(int vi, int eventType, short mechanism, int context) 
            => ViEnableEventRef?.Invoke(vi, eventType, mechanism, context)
            ?? throw new NotSupportedException($"{_implementor} does not support viEnableEvent");
        internal static int viDisableEvent(int vi, int eventType, short mechanism) 
            => ViDisableEventRef?.Invoke(vi, eventType, mechanism)
            ?? throw new NotSupportedException($"{_implementor} does not support viDisableEvent");
        internal static int viInstallHandler(int vi, int eventType, VisaFunctions.ViEventHandler handler, int UserHandle) 
            => ViInstallHandlerRef?.Invoke(vi, eventType, handler, UserHandle)
            ?? throw new NotSupportedException($"{_implementor} does not support viInstallHandler");
        internal static int viUninstallHandler(int vi, int eventType, VisaFunctions.ViEventHandler handler, int userHandle) 
            => ViUninstallHandlerRef?.Invoke(vi, eventType, handler, userHandle)
            ?? throw new NotSupportedException($"{_implementor} does not support viUninstallHandler");
 
        internal static int viWaitOnEvent(int vi, int eventType, int timeout, out int outEventType, IntPtr outContext) 
            => ViWaitOnEventRef?.Invoke(vi, eventType, timeout, out outEventType, outContext)
            ?? throw new NotSupportedException($"{_implementor} does not support viWaitOnEvent");
 
        internal unsafe static int viRead(int vi, ArraySegment<byte> buffer, int count, out int retCount) 
            => ViReadRef?.Invoke(vi, buffer, count, out retCount)
            ?? throw new NotSupportedException($"{_implementor} does not support static");
        internal unsafe static int viWrite(int vi, ArraySegment<byte> buffer, int count, out int retCount) 
            => ViWriteRef?.Invoke(vi, buffer, count, out retCount)
            ?? throw new NotSupportedException($"{_implementor} does not support int");
 
        internal static int viReadSTB(int vi, ref short status) 
            => ViReadStbRef?.Invoke(vi, ref status)
            ?? throw new NotSupportedException($"{_implementor} does not support viReadSTB");
 
        internal static int viClear(int vi) 
            => ViClearRef?.Invoke(vi)
            ?? throw new NotSupportedException($"{_implementor} does not support viClear");
 
        internal static int viLock(int vi, int lockType, int timeout, string requestedKey, StringBuilder accessKey) 
            => ViLockRef?.Invoke(vi, lockType, timeout, requestedKey, accessKey)
            ?? throw new NotSupportedException($"{_implementor} does not support viLock");
        internal static int viUnlock(int vi) 
            => ViUnlockRef?.Invoke(vi)
            ?? throw new NotSupportedException($"{_implementor} does not support viUnlock");
 
        #region - Constants -------------------------------------------------------------
 
        #region - Attributes ------------------------------------------------------------
        public const int VI_ATTR_RSRC_CLASS = unchecked((int)0xbfff0001);
        public const int VI_ATTR_RSRC_NAME = unchecked((int)0xbfff0002);
        public const int VI_ATTR_RSRC_IMPL_VERSION = 0x3fff0003;
        public const int VI_ATTR_RSRC_LOCK_STATE = 0x3fff0004;
        public const int VI_ATTR_MAX_QUEUE_LENGTH = 0x3fff0005;
        public const int VI_ATTR_USER_DATA_32 = 0x3fff0007;
        public const int VI_ATTR_FDC_CHNL = 0x3fff000d;
        public const int VI_ATTR_FDC_MODE = 0x3fff000f;
        public const int VI_ATTR_FDC_GEN_SIGNAL_EN = 0x3fff0011;
        public const int VI_ATTR_FDC_USE_PAIR = 0x3fff0013;
        public const int VI_ATTR_SEND_END_EN = 0x3fff0016;
        public const int VI_ATTR_TERMCHAR = 0x3fff0018;
        public const int VI_ATTR_TMO_VALUE = 0x3fff001a;
        public const int VI_ATTR_GPIB_READDR_EN = 0x3fff001b;
        public const int VI_ATTR_IO_PROT = 0x3fff001c;
        public const int VI_ATTR_DMA_ALLOW_EN = 0x3fff001e;
        public const int VI_ATTR_ASRL_BAUD = 0x3fff0021;
        public const int VI_ATTR_ASRL_DATA_BITS = 0x3fff0022;
        public const int VI_ATTR_ASRL_PARITY = 0x3fff0023;
        public const int VI_ATTR_ASRL_STOP_BITS = 0x3fff0024;
        public const int VI_ATTR_ASRL_FLOW_CNTRL = 0x3fff0025;
        public const int VI_ATTR_RD_BUF_OPER_MODE = 0x3fff002a;
        public const int VI_ATTR_RD_BUF_SIZE = 0x3fff002b;
        public const int VI_ATTR_WR_BUF_OPER_MODE = 0x3fff002d;
        public const int VI_ATTR_WR_BUF_SIZE = 0x3fff002e;
        public const int VI_ATTR_SUPPRESS_END_EN = 0x3fff0036;
        public const int VI_ATTR_TERMCHAR_EN = 0x3fff0038;
        public const int VI_ATTR_DEST_ACCESS_PRIV = 0x3fff0039;
        public const int VI_ATTR_DEST_BYTE_ORDER = 0x3fff003a;
        public const int VI_ATTR_SRC_ACCESS_PRIV = 0x3fff003c;
        public const int VI_ATTR_SRC_BYTE_ORDER = 0x3fff003d;
        public const int VI_ATTR_SRC_INCREMENT = 0x3fff0040;
        public const int VI_ATTR_DEST_INCREMENT = 0x3fff0041;
        public const int VI_ATTR_WIN_ACCESS_PRIV = 0x3fff0045;
        public const int VI_ATTR_WIN_BYTE_ORDER = 0x3fff0047;
        public const int VI_ATTR_GPIB_ATN_STATE = 0x3fff0057;
        public const int VI_ATTR_GPIB_ADDR_STATE = 0x3fff005c;
        public const int VI_ATTR_GPIB_CIC_STATE = 0x3fff005e;
        public const int VI_ATTR_GPIB_NDAC_STATE = 0x3fff0062;
        public const int VI_ATTR_GPIB_SRQ_STATE = 0x3fff0067;
        public const int VI_ATTR_GPIB_SYS_CNTRL_STATE = 0x3fff0068;
        public const int VI_ATTR_GPIB_HS488_CBL_LEN = 0x3fff0069;
        public const int VI_ATTR_CMDR_LA = 0x3fff006b;
        public const int VI_ATTR_VXI_DEV_CLASS = 0x3fff006c;
        public const int VI_ATTR_MAINFRAME_LA = 0x3fff0070;
        public const int VI_ATTR_MANF_NAME = unchecked((int)0xbfff0072);
        public const int VI_ATTR_MODEL_NAME = unchecked((int)0xbfff0077);
        public const int VI_ATTR_VXI_VME_INTR_STATUS = 0x3fff008b;
        public const int VI_ATTR_VXI_TRIG_STATUS = 0x3fff008d;
        public const int VI_ATTR_VXI_VME_SYSFAIL_STATE = 0x3fff0094;
        public const int VI_ATTR_WIN_BASE_ADDR_32 = 0x3fff0098;
        public const int VI_ATTR_WIN_SIZE_32 = 0x3fff009a;
        public const int VI_ATTR_ASRL_AVAIL_NUM = 0x3fff00ac;
        public const int VI_ATTR_MEM_BASE_32 = 0x3fff00ad;
        public const int VI_ATTR_ASRL_CTS_STATE = 0x3fff00ae;
        public const int VI_ATTR_ASRL_DCD_STATE = 0x3fff00af;
        public const int VI_ATTR_ASRL_DSR_STATE = 0x3fff00b1;
        public const int VI_ATTR_ASRL_DTR_STATE = 0x3fff00b2;
        public const int VI_ATTR_ASRL_END_IN = 0x3fff00b3;
        public const int VI_ATTR_ASRL_END_OUT = 0x3fff00b4;
        public const int VI_ATTR_ASRL_REPLACE_CHAR = 0x3fff00be;
        public const int VI_ATTR_ASRL_RI_STATE = 0x3fff00bf;
        public const int VI_ATTR_ASRL_RTS_STATE = 0x3fff00c0;
        public const int VI_ATTR_ASRL_XON_CHAR = 0x3fff00c1;
        public const int VI_ATTR_ASRL_XOFF_CHAR = 0x3fff00c2;
        public const int VI_ATTR_WIN_ACCESS = 0x3fff00c3;
        public const int VI_ATTR_RM_SESSION = 0x3fff00c4;
        public const int VI_ATTR_VXI_LA = 0x3fff00d5;
        public const int VI_ATTR_MANF_ID = 0x3fff00d9;
        public const int VI_ATTR_MEM_SIZE_32 = 0x3fff00dd;
        public const int VI_ATTR_MEM_SPACE = 0x3fff00de;
        public const int VI_ATTR_MODEL_CODE = 0x3fff00df;
        public const int VI_ATTR_SLOT = 0x3fff00e8;
        public const int VI_ATTR_INTF_INST_NAME = unchecked((int)0xbfff00e9);
        public const int VI_ATTR_IMMEDIATE_SERV = 0x3fff0100;
        public const int VI_ATTR_INTF_PARENT_NUM = 0x3fff0101;
        public const int VI_ATTR_RSRC_SPEC_VERSION = 0x3fff0170;
        public const int VI_ATTR_INTF_TYPE = 0x3fff0171;
        public const int VI_ATTR_GPIB_PRIMARY_ADDR = 0x3fff0172;
        public const int VI_ATTR_GPIB_SECONDARY_ADDR = 0x3fff0173;
        public const int VI_ATTR_RSRC_MANF_NAME = unchecked((int)0xbfff0174);
        public const int VI_ATTR_RSRC_MANF_ID = 0x3fff0175;
        public const int VI_ATTR_INTF_NUM = 0x3fff0176;
        public const int VI_ATTR_TRIG_ID = 0x3fff0177;
        public const int VI_ATTR_GPIB_REN_STATE = 0x3fff0181;
        public const int VI_ATTR_GPIB_UNADDR_EN = 0x3fff0184;
        public const int VI_ATTR_DEV_STATUS_BYTE = 0x3fff0189;
        public const int VI_ATTR_FILE_APPEND_EN = 0x3fff0192;
        public const int VI_ATTR_VXI_TRIG_SUPPORT = 0x3fff0194;
        public const int VI_ATTR_TCPIP_ADDR = unchecked((int)0xbfff0195);
        public const int VI_ATTR_TCPIP_HOSTNAME = unchecked((int)0xbfff0196);
        public const int VI_ATTR_TCPIP_PORT = 0x3fff0197;
        public const int VI_ATTR_TCPIP_DEVICE_NAME = unchecked((int)0xbfff0199);
        public const int VI_ATTR_TCPIP_NODELAY = 0x3fff019a;
        public const int VI_ATTR_TCPIP_KEEPALIVE = 0x3fff019b;
        public const int VI_ATTR_4882_COMPLIANT = 0x3fff019f;
        public const int VI_ATTR_USB_SERIAL_NUM = unchecked((int)0xbfff01a0);
        public const int VI_ATTR_USB_INTFC_NUM = 0x3fff01a1;
        public const int VI_ATTR_USB_PROTOCOL = 0x3fff01a7;
        public const int VI_ATTR_USB_MAX_INTR_SIZE = 0x3fff01af;
        public const int VI_ATTR_PXI_DEV_NUM = 0x3fff0201;
        public const int VI_ATTR_PXI_FUNC_NUM = 0x3fff0202;
        public const int VI_ATTR_PXI_BUS_NUM = 0x3fff0205;
        public const int VI_ATTR_PXI_CHASSIS = 0x3fff0206;
        public const int VI_ATTR_PXI_SLOTPATH = unchecked((int)0xbfff0207);
        public const int VI_ATTR_PXI_SLOT_LBUS_LEFT = 0x3fff0208;
        public const int VI_ATTR_PXI_SLOT_LBUS_RIGHT = 0x3fff0209;
        public const int VI_ATTR_PXI_TRIG_BUS = 0x3fff020a;
        public const int VI_ATTR_PXI_STAR_TRIG_BUS = 0x3fff020b;
        public const int VI_ATTR_PXI_STAR_TRIG_LINE = 0x3fff020c;
        public const int VI_ATTR_PXI_SRC_TRIG_BUS = 0x3fff020d;
        public const int VI_ATTR_PXI_DEST_TRIG_BUS = 0x3fff020e;
        public const int VI_ATTR_PXI_MEM_TYPE_BAR0 = 0x3fff0211;
        public const int VI_ATTR_PXI_MEM_TYPE_BAR1 = 0x3fff0212;
        public const int VI_ATTR_PXI_MEM_TYPE_BAR2 = 0x3fff0213;
        public const int VI_ATTR_PXI_MEM_TYPE_BAR3 = 0x3fff0214;
        public const int VI_ATTR_PXI_MEM_TYPE_BAR4 = 0x3fff0215;
        public const int VI_ATTR_PXI_MEM_TYPE_BAR5 = 0x3fff0216;
        public const int VI_ATTR_PXI_MEM_BASE_BAR0_32 = 0x3fff0221;
        public const int VI_ATTR_PXI_MEM_BASE_BAR1_32 = 0x3fff0222;
        public const int VI_ATTR_PXI_MEM_BASE_BAR2_32 = 0x3fff0223;
        public const int VI_ATTR_PXI_MEM_BASE_BAR3_32 = 0x3fff0224;
        public const int VI_ATTR_PXI_MEM_BASE_BAR4_32 = 0x3fff0225;
        public const int VI_ATTR_PXI_MEM_BASE_BAR5_32 = 0x3fff0226;
        public const int VI_ATTR_PXI_MEM_BASE_BAR0_64 = 0x3fff0228;
        public const int VI_ATTR_PXI_MEM_BASE_BAR1_64 = 0x3fff0229;
        public const int VI_ATTR_PXI_MEM_BASE_BAR2_64 = 0x3fff022a;
        public const int VI_ATTR_PXI_MEM_BASE_BAR3_64 = 0x3fff022b;
        public const int VI_ATTR_PXI_MEM_BASE_BAR4_64 = 0x3fff022c;
        public const int VI_ATTR_PXI_MEM_BASE_BAR5_64 = 0x3fff022d;
        public const int VI_ATTR_PXI_MEM_SIZE_BAR0_32 = 0x3fff0231;
        public const int VI_ATTR_PXI_MEM_SIZE_BAR1_32 = 0x3fff0232;
        public const int VI_ATTR_PXI_MEM_SIZE_BAR2_32 = 0x3fff0233;
        public const int VI_ATTR_PXI_MEM_SIZE_BAR3_32 = 0x3fff0234;
        public const int VI_ATTR_PXI_MEM_SIZE_BAR4_32 = 0x3fff0235;
        public const int VI_ATTR_PXI_MEM_SIZE_BAR5_32 = 0x3fff0236;
        public const int VI_ATTR_PXI_MEM_SIZE_BAR0_64 = 0x3fff0238;
        public const int VI_ATTR_PXI_MEM_SIZE_BAR1_64 = 0x3fff0239;
        public const int VI_ATTR_PXI_MEM_SIZE_BAR2_64 = 0x3fff023a;
        public const int VI_ATTR_PXI_MEM_SIZE_BAR3_64 = 0x3fff023b;
        public const int VI_ATTR_PXI_MEM_SIZE_BAR4_64 = 0x3fff023c;
        public const int VI_ATTR_PXI_MEM_SIZE_BAR5_64 = 0x3fff023d;
        public const int VI_ATTR_PXI_IS_EXPRESS = 0x3fff0240;
        public const int VI_ATTR_PXI_SLOT_LWIDTH = 0x3fff0241;
        public const int VI_ATTR_PXI_MAX_LWIDTH = 0x3fff0242;
        public const int VI_ATTR_PXI_ACTUAL_LWIDTH = 0x3fff0243;
        public const int VI_ATTR_PXI_DSTAR_BUS = 0x3fff0244;
        public const int VI_ATTR_PXI_DSTAR_SET = 0x3fff0245;
        public const int VI_ATTR_PXI_ALLOW_WRITE_COMBINE = 0x3fff0246;
        public const int VI_ATTR_TCPIP_HISLIP_OVERLAP_EN = 0x3fff0300;
        public const int VI_ATTR_TCPIP_HISLIP_VERSION = 0x3fff0301;
        public const int VI_ATTR_TCPIP_HISLIP_MAX_MESSAGE_KB = 0x3fff0302;
        public const int VI_ATTR_TCPIP_IS_HISLIP = 0x3fff0303;
        public const int VI_ATTR_JOB_ID = 0x3fff4006;
        public const int VI_ATTR_EVENT_TYPE = 0x3fff4010;
        public const int VI_ATTR_SIGP_STATUS_ID = 0x3fff4011;
        public const int VI_ATTR_RECV_TRIG_ID = 0x3fff4012;
        public const int VI_ATTR_INTR_STATUS_ID = 0x3fff4023;
        public const int VI_ATTR_STATUS = 0x3fff4025;
        public const int VI_ATTR_RET_COUNT_32 = 0x3fff4026;
        public const int VI_ATTR_BUFFER = 0x3fff4027;
        public const int VI_ATTR_RECV_INTR_LEVEL = 0x3fff4041;
        public const int VI_ATTR_OPER_NAME = unchecked((int)0xbfff4042);
        public const int VI_ATTR_GPIB_RECV_CIC_STATE = 0x3fff4193;
        public const int VI_ATTR_RECV_TCPIP_ADDR = unchecked((int)0xbfff4198);
        public const int VI_ATTR_USB_RECV_INTR_SIZE = 0x3fff41b0;
        public const int VI_ATTR_USB_RECV_INTR_DATA = unchecked((int)0xbfff41b1);
        public const int VI_ATTR_PXI_RECV_INTR_SEQ = 0x3fff4240;
        public const int VI_ATTR_PXI_RECV_INTR_DATA = 0x3fff4241;
 
        public const int VI_ATTR_WIN_BASE_ADDR_64 = 0x3fff009b;
        public const int VI_ATTR_WIN_SIZE_64 = 0x3fff009c;
        public const int VI_ATTR_MEM_BASE_64 = 0x3fff00d0;
        public const int VI_ATTR_MEM_SIZE_64 = 0x3fff00d1;
 
        // In VISA C, these are only defined in 64-bit applications
        public const int VI_ATTR_USER_DATA_64 = 0x3fff000a;
        public const int VI_ATTR_RET_COUNT_64 = 0x3fff4028;
        #endregion Attributes
 
        #region - Bitness dependent attributes ------------------------------------------
        private static bool Is64bit { get { return (IntPtr.Size == 8); } }
        public static int VI_ATTR_USER_DATA { get { if (Is64bit) { return VI_ATTR_USER_DATA_64; } else { return VI_ATTR_USER_DATA_32; } } }
        public static int VI_ATTR_RET_COUNT { get { if (Is64bit) { return VI_ATTR_RET_COUNT_64; } else { return VI_ATTR_RET_COUNT_32; } } }
        public static int VI_ATTR_WIN_BASE_ADDR { get { if (Is64bit) { return VI_ATTR_WIN_BASE_ADDR_64; } else { return VI_ATTR_WIN_BASE_ADDR_32; } } }
        public static int VI_ATTR_WIN_SIZE { get { if (Is64bit) { return VI_ATTR_WIN_SIZE_64; } else { return VI_ATTR_WIN_SIZE_32; } } }
        public static int VI_ATTR_MEM_BASE { get { if (Is64bit) { return VI_ATTR_MEM_BASE_64; } else { return VI_ATTR_MEM_BASE_32; } } }
        public static int VI_ATTR_MEM_SIZE { get { if (Is64bit) { return VI_ATTR_MEM_SIZE_64; } else { return VI_ATTR_MEM_SIZE_32; } } }
        public static int VI_ATTR_PXI_MEM_BASE_BAR0 { get { if (Is64bit) { return VI_ATTR_PXI_MEM_BASE_BAR0_64; } else { return VI_ATTR_PXI_MEM_BASE_BAR0_32; } } }
        public static int VI_ATTR_PXI_MEM_BASE_BAR1 { get { if (Is64bit) { return VI_ATTR_PXI_MEM_BASE_BAR1_64; } else { return VI_ATTR_PXI_MEM_BASE_BAR1_32; } } }
        public static int VI_ATTR_PXI_MEM_BASE_BAR2 { get { if (Is64bit) { return VI_ATTR_PXI_MEM_BASE_BAR2_64; } else { return VI_ATTR_PXI_MEM_BASE_BAR2_32; } } }
        public static int VI_ATTR_PXI_MEM_BASE_BAR3 { get { if (Is64bit) { return VI_ATTR_PXI_MEM_BASE_BAR3_64; } else { return VI_ATTR_PXI_MEM_BASE_BAR3_32; } } }
        public static int VI_ATTR_PXI_MEM_BASE_BAR4 { get { if (Is64bit) { return VI_ATTR_PXI_MEM_BASE_BAR4_64; } else { return VI_ATTR_PXI_MEM_BASE_BAR4_32; } } }
        public static int VI_ATTR_PXI_MEM_BASE_BAR5 { get { if (Is64bit) { return VI_ATTR_PXI_MEM_BASE_BAR5_64; } else { return VI_ATTR_PXI_MEM_BASE_BAR5_32; } } }
        public static int VI_ATTR_PXI_MEM_SIZE_BAR0 { get { if (Is64bit) { return VI_ATTR_PXI_MEM_SIZE_BAR0_64; } else { return VI_ATTR_PXI_MEM_SIZE_BAR0_32; } } }
        public static int VI_ATTR_PXI_MEM_SIZE_BAR1 { get { if (Is64bit) { return VI_ATTR_PXI_MEM_SIZE_BAR1_64; } else { return VI_ATTR_PXI_MEM_SIZE_BAR1_32; } } }
        public static int VI_ATTR_PXI_MEM_SIZE_BAR2 { get { if (Is64bit) { return VI_ATTR_PXI_MEM_SIZE_BAR2_64; } else { return VI_ATTR_PXI_MEM_SIZE_BAR2_32; } } }
        public static int VI_ATTR_PXI_MEM_SIZE_BAR3 { get { if (Is64bit) { return VI_ATTR_PXI_MEM_SIZE_BAR3_64; } else { return VI_ATTR_PXI_MEM_SIZE_BAR3_32; } } }
        public static int VI_ATTR_PXI_MEM_SIZE_BAR4 { get { if (Is64bit) { return VI_ATTR_PXI_MEM_SIZE_BAR4_64; } else { return VI_ATTR_PXI_MEM_SIZE_BAR4_32; } } }
        public static int VI_ATTR_PXI_MEM_SIZE_BAR5 { get { if (Is64bit) { return VI_ATTR_PXI_MEM_SIZE_BAR5_64; } else { return VI_ATTR_PXI_MEM_SIZE_BAR5_32; } } }
        #endregion - Bitness dependent attributes
 
        #region - Event Types -----------------------------------------------------------
        public const int VI_EVENT_IO_COMPLETION = 1073684489;
        public const int VI_EVENT_TRIG = -1073799158;
        public const int VI_EVENT_SERVICE_REQ = 1073684491;
        public const int VI_EVENT_CLEAR = 1073684493;
        public const int VI_EVENT_EXCEPTION = -1073799154;
        public const int VI_EVENT_GPIB_CIC = 1073684498;
        public const int VI_EVENT_GPIB_TALK = 1073684499;
        public const int VI_EVENT_GPIB_LISTEN = 1073684500;
        public const int VI_EVENT_VXI_VME_SYSFAIL = 1073684509;
        public const int VI_EVENT_VXI_VME_SYSRESET = 1073684510;
        public const int VI_EVENT_VXI_SIGP = 1073684512;
        public const int VI_EVENT_VXI_VME_INTR = -1073799135;
        public const int VI_EVENT_PXI_INTR = 1073684514;
        public const int VI_EVENT_TCPIP_CONNECT = 1073684534;
        public const int VI_EVENT_USB_INTR = 1073684535;
        public const int VI_ALL_ENABLED_EVENTS = 1073709055;
        #endregion
 
        #region - Completion and Error Codes --------------------------------------------
        public const int VI_SUCCESS = 0;
        public const int VI_SUCCESS_EVENT_EN = 1073676290;
        public const int VI_SUCCESS_EVENT_DIS = 1073676291;
        public const int VI_SUCCESS_QUEUE_EMPTY = 1073676292;
        public const int VI_SUCCESS_TERM_CHAR = 1073676293;
        public const int VI_SUCCESS_MAX_CNT = 1073676294;
        public const int VI_SUCCESS_DEV_NPRESENT = 1073676413;
        public const int VI_SUCCESS_TRIG_MAPPED = 1073676414;
        public const int VI_SUCCESS_QUEUE_NEMPTY = 1073676416;
        public const int VI_SUCCESS_NCHAIN = 1073676440;
        public const int VI_SUCCESS_NESTED_SHARED = 1073676441;
        public const int VI_SUCCESS_NESTED_EXCLUSIVE = 1073676442;
        public const int VI_SUCCESS_SYNC = 1073676443;
        public const int VI_WARN_QUEUE_OVERFLOW = 1073676300;
        public const int VI_WARN_CONFIG_NLOADED = 1073676407;
        public const int VI_WARN_NULL_OBJECT = 1073676418;
        public const int VI_WARN_NSUP_ATTR_STATE = 1073676420;
        public const int VI_WARN_UNKNOWN_STATUS = 1073676421;
        public const int VI_WARN_NSUP_BUF = 1073676424;
        public const int VI_WARN_EXT_FUNC_NIMPL = 1073676457;
        public const int VI_ERROR_SYSTEM_ERROR = -1073807360;
        public const int VI_ERROR_INV_OBJECT = -1073807346;
        public const int VI_ERROR_RSRC_LOCKED = -1073807345;
        public const int VI_ERROR_INV_EXPR = -1073807344;
        public const int VI_ERROR_RSRC_NFOUND = -1073807343;
        public const int VI_ERROR_INV_RSRC_NAME = -1073807342;
        public const int VI_ERROR_INV_ACC_MODE = -1073807341;
        public const int VI_ERROR_TMO = -1073807339;
        public const int VI_ERROR_CLOSING_FAILED = -1073807338;
        public const int VI_ERROR_INV_DEGREE = -1073807333;
        public const int VI_ERROR_INV_JOB_ID = -1073807332;
        public const int VI_ERROR_NSUP_ATTR = -1073807331;
        public const int VI_ERROR_NSUP_ATTR_STATE = -1073807330;
        public const int VI_ERROR_ATTR_READONLY = -1073807329;
        public const int VI_ERROR_INV_LOCK_TYPE = -1073807328;
        public const int VI_ERROR_INV_ACCESS_KEY = -1073807327;
        public const int VI_ERROR_INV_EVENT = -1073807322;
        public const int VI_ERROR_INV_MECH = -1073807321;
        public const int VI_ERROR_HNDLR_NINSTALLED = -1073807320;
        public const int VI_ERROR_INV_HNDLR_REF = -1073807319;
        public const int VI_ERROR_INV_CONTEXT = -1073807318;
        public const int VI_ERROR_QUEUE_OVERFLOW = -1073807315;
        public const int VI_ERROR_NENABLED = -1073807313;
        public const int VI_ERROR_ABORT = -1073807312;
        public const int VI_ERROR_RAW_WR_PROT_VIOL = -1073807308;
        public const int VI_ERROR_RAW_RD_PROT_VIOL = -1073807307;
        public const int VI_ERROR_OUTP_PROT_VIOL = -1073807306;
        public const int VI_ERROR_INP_PROT_VIOL = -1073807305;
        public const int VI_ERROR_BERR = -1073807304;
        public const int VI_ERROR_IN_PROGRESS = -1073807303;
        public const int VI_ERROR_INV_SETUP = -1073807302;
        public const int VI_ERROR_QUEUE_ERROR = -1073807301;
        public const int VI_ERROR_ALLOC = -1073807300;
        public const int VI_ERROR_INV_MASK = -1073807299;
        public const int VI_ERROR_IO = -1073807298;
        public const int VI_ERROR_INV_FMT = -1073807297;
        public const int VI_ERROR_NSUP_FMT = -1073807295;
        public const int VI_ERROR_LINE_IN_USE = -1073807294;
        public const int VI_ERROR_NSUP_MODE = -1073807290;
        public const int VI_ERROR_SRQ_NOCCURRED = -1073807286;
        public const int VI_ERROR_INV_SPACE = -1073807282;
        public const int VI_ERROR_INV_OFFSET = -1073807279;
        public const int VI_ERROR_INV_WIDTH = -1073807278;
        public const int VI_ERROR_NSUP_OFFSET = -1073807276;
        public const int VI_ERROR_NSUP_VAR_WIDTH = -1073807275;
        public const int VI_ERROR_WINDOW_NMAPPED = -1073807273;
        public const int VI_ERROR_RESP_PENDING = -1073807271;
        public const int VI_ERROR_NLISTENERS = -1073807265;
        public const int VI_ERROR_NCIC = -1073807264;
        public const int VI_ERROR_NSYS_CNTLR = -1073807263;
        public const int VI_ERROR_NSUP_OPER = -1073807257;
        public const int VI_ERROR_INTR_PENDING = -1073807256;
        public const int VI_ERROR_ASRL_PARITY = -1073807254;
        public const int VI_ERROR_ASRL_FRAMING = -1073807253;
        public const int VI_ERROR_ASRL_OVERRUN = -1073807252;
        public const int VI_ERROR_TRIG_NMAPPED = -1073807250;
        public const int VI_ERROR_NSUP_ALIGN_OFFSET = -1073807248;
        public const int VI_ERROR_USER_BUF = -1073807247;
        public const int VI_ERROR_RSRC_BUSY = -1073807246;
        public const int VI_ERROR_NSUP_WIDTH = -1073807242;
        public const int VI_ERROR_INV_PARAMETER = -1073807240;
        public const int VI_ERROR_INV_PROT = -1073807239;
        public const int VI_ERROR_INV_SIZE = -1073807237;
        public const int VI_ERROR_WINDOW_MAPPED = -1073807232;
        public const int VI_ERROR_NIMPL_OPER = -1073807231;
        public const int VI_ERROR_INV_LENGTH = -1073807229;
        public const int VI_ERROR_INV_MODE = -1073807215;
        public const int VI_ERROR_SESN_NLOCKED = -1073807204;
        public const int VI_ERROR_MEM_NSHARED = -1073807203;
        public const int VI_ERROR_LIBRARY_NFOUND = -1073807202;
        public const int VI_ERROR_NSUP_INTR = -1073807201;
        public const int VI_ERROR_INV_LINE = -1073807200;
        public const int VI_ERROR_FILE_ACCESS = -1073807199;
        public const int VI_ERROR_FILE_IO = -1073807198;
        public const int VI_ERROR_NSUP_LINE = -1073807197;
        public const int VI_ERROR_NSUP_MECH = -1073807196;
        public const int VI_ERROR_INTF_NUM_NCONFIG = -1073807195;
        public const int VI_ERROR_CONN_LOST = -1073807194;
        public const int VI_ERROR_MACHINE_NAVAIL = -1073807193;
        public const int VI_ERROR_NPERMISSION = -1073807192;
        #endregion
 
        #region - Other VISA Definitions ------------------------------------------------
        public const short VI_FIND_BUFLEN = 256;
 
        public const short VI_NULL = 0;
        public const short VI_TRUE = 1;
        public const short VI_FALSE = 0;
 
        public const short VI_INTF_GPIB = 1;
        public const short VI_INTF_VXI = 2;
        public const short VI_INTF_GPIB_VXI = 3;
        public const short VI_INTF_ASRL = 4;
        public const short VI_INTF_PXI = 5;
        public const short VI_INTF_TCPIP = 6;
        public const short VI_INTF_USB = 7;
 
        public const short VI_PROT_NORMAL = 1;
        public const short VI_PROT_FDC = 2;
        public const short VI_PROT_HS488 = 3;
        public const short VI_PROT_4882_STRS = 4;
        public const short VI_PROT_USBTMC_VENDOR = 5;
 
        public const short VI_FDC_NORMAL = 1;
        public const short VI_FDC_STREAM = 2;
 
        public const short VI_LOCAL_SPACE = 0;
        public const short VI_A16_SPACE = 1;
        public const short VI_A24_SPACE = 2;
        public const short VI_A32_SPACE = 3;
        public const short VI_A64_SPACE = 4;
        public const short VI_PXI_ALLOC_SPACE = 9;
        public const short VI_PXI_CFG_SPACE = 10;
        public const short VI_PXI_BAR0_SPACE = 11;
        public const short VI_PXI_BAR1_SPACE = 12;
        public const short VI_PXI_BAR2_SPACE = 13;
        public const short VI_PXI_BAR3_SPACE = 14;
        public const short VI_PXI_BAR4_SPACE = 15;
        public const short VI_PXI_BAR5_SPACE = 16;
        public const short VI_OPAQUE_SPACE = -1;
 
        public const short VI_UNKNOWN_LA = -1;
        public const short VI_UNKNOWN_SLOT = -1;
        public const short VI_UNKNOWN_LEVEL = -1;
        public const short VI_UNKNOWN_CHASSIS = -1;
 
        public const short VI_QUEUE = 1;
        public const short VI_HNDLR = 2;
        public const short VI_SUSPEND_HNDLR = 4;
        public const short VI_ALL_MECH = -1;
        public const short VI_ANY_HNDLR = 0;
 
        public const short VI_TRIG_ALL = -2;
        public const short VI_TRIG_SW = -1;
        public const short VI_TRIG_TTL0 = 0;
        public const short VI_TRIG_TTL1 = 1;
        public const short VI_TRIG_TTL2 = 2;
        public const short VI_TRIG_TTL3 = 3;
        public const short VI_TRIG_TTL4 = 4;
        public const short VI_TRIG_TTL5 = 5;
        public const short VI_TRIG_TTL6 = 6;
        public const short VI_TRIG_TTL7 = 7;
        public const short VI_TRIG_TTL8 = 32;
        public const short VI_TRIG_TTL9 = 33;
        public const short VI_TRIG_TTL10 = 34;
        public const short VI_TRIG_TTL11 = 35;
        public const short VI_TRIG_ECL0 = 8;
        public const short VI_TRIG_ECL1 = 9;
        public const short VI_TRIG_PANEL_IN = 27;
        public const short VI_TRIG_PANEL_OUT = 28;
 
        public const short VI_TRIG_PROT_DEFAULT = 0;
        public const short VI_TRIG_PROT_ON = 1;
        public const short VI_TRIG_PROT_OFF = 2;
        public const short VI_TRIG_PROT_SYNC = 5;
        public const short VI_TRIG_PROT_RESERVE = 6;
        public const short VI_TRIG_PROT_UNRESERVE = 7;
 
        public const short VI_READ_BUF = 1;
        public const short VI_WRITE_BUF = 2;
        public const short VI_READ_BUF_DISCARD = 4;
        public const short VI_WRITE_BUF_DISCARD = 8;
        public const short VI_IO_IN_BUF = 16;
        public const short VI_IO_OUT_BUF = 32;
        public const short VI_IO_IN_BUF_DISCARD = 64;
        public const short VI_IO_OUT_BUF_DISCARD = 128;
 
        public const short VI_FLUSH_ON_ACCESS = 1;
        public const short VI_FLUSH_WHEN_FULL = 2;
        public const short VI_FLUSH_DISABLE = 3;
 
        public const short VI_NMAPPED = 1;
        public const short VI_USE_OPERS = 2;
        public const short VI_DEREF_ADDR = 3;
        public const short VI_DEREF_ADDR_BYTE_SWAP = 4;
 
        public const int VI_TMO_IMMEDIATE = 0;
        public const int VI_TMO_INFINITE = -1;
 
        public const short VI_NO_LOCK = 0;
        public const short VI_EXCLUSIVE_LOCK = 1;
        public const short VI_SHARED_LOCK = 2;
        public const short VI_LOAD_CONFIG = 4;
 
        public const short VI_NO_SEC_ADDR = -1;
 
        public const short VI_ASRL_PAR_NONE = 0;
        public const short VI_ASRL_PAR_ODD = 1;
        public const short VI_ASRL_PAR_EVEN = 2;
        public const short VI_ASRL_PAR_MARK = 3;
        public const short VI_ASRL_PAR_SPACE = 4;
 
        public const short VI_ASRL_STOP_ONE = 10;
        public const short VI_ASRL_STOP_ONE5 = 15;
        public const short VI_ASRL_STOP_TWO = 20;
 
        public const short VI_ASRL_FLOW_NONE = 0;
        public const short VI_ASRL_FLOW_XON_XOFF = 1;
        public const short VI_ASRL_FLOW_RTS_CTS = 2;
        public const short VI_ASRL_FLOW_DTR_DSR = 4;
 
        public const short VI_ASRL_END_NONE = 0;
        public const short VI_ASRL_END_LAST_BIT = 1;
        public const short VI_ASRL_END_TERMCHAR = 2;
        public const short VI_ASRL_END_BREAK = 3;
 
        public const short VI_STATE_ASSERTED = 1;
        public const short VI_STATE_UNASSERTED = 0;
        public const short VI_STATE_UNKNOWN = -1;
 
        public const short VI_BIG_ENDIAN = 0;
        public const short VI_LITTLE_ENDIAN = 1;
 
        public const short VI_DATA_PRIV = 0;
        public const short VI_DATA_NPRIV = 1;
        public const short VI_PROG_PRIV = 2;
        public const short VI_PROG_NPRIV = 3;
        public const short VI_BLCK_PRIV = 4;
        public const short VI_BLCK_NPRIV = 5;
        public const short VI_D64_PRIV = 6;
        public const short VI_D64_NPRIV = 7;
 
        public const short VI_WIDTH_8 = 1;
        public const short VI_WIDTH_16 = 2;
        public const short VI_WIDTH_32 = 4;
        public const short VI_WIDTH_64 = 8;
 
        public const short VI_GPIB_REN_DEASSERT = 0;
        public const short VI_GPIB_REN_ASSERT = 1;
        public const short VI_GPIB_REN_DEASSERT_GTL = 2;
        public const short VI_GPIB_REN_ASSERT_ADDRESS = 3;
        public const short VI_GPIB_REN_ASSERT_LLO = 4;
        public const short VI_GPIB_REN_ASSERT_ADDRESS_LLO = 5;
        public const short VI_GPIB_REN_ADDRESS_GTL = 6;
 
        public const short VI_GPIB_ATN_DEASSERT = 0;
        public const short VI_GPIB_ATN_ASSERT = 1;
        public const short VI_GPIB_ATN_DEASSERT_HANDSHAKE = 2;
        public const short VI_GPIB_ATN_ASSERT_IMMEDIATE = 3;
 
        public const short VI_GPIB_HS488_DISABLED = 0;
        public const short VI_GPIB_HS488_NIMPL = -1;
 
        public const short VI_GPIB_UNADDRESSED = 0;
        public const short VI_GPIB_TALKER = 1;
        public const short VI_GPIB_LISTENER = 2;
 
        public const short VI_VXI_CMD16 = 512;
        public const short VI_VXI_CMD16_RESP16 = 514;
        public const short VI_VXI_RESP16 = 2;
        public const short VI_VXI_CMD32 = 1024;
        public const short VI_VXI_CMD32_RESP16 = 1026;
        public const short VI_VXI_CMD32_RESP32 = 1028;
        public const short VI_VXI_RESP32 = 4;
 
        public const short VI_ASSERT_SIGNAL = -1;
        public const short VI_ASSERT_USE_ASSIGNED = 0;
        public const short VI_ASSERT_IRQ1 = 1;
        public const short VI_ASSERT_IRQ2 = 2;
        public const short VI_ASSERT_IRQ3 = 3;
        public const short VI_ASSERT_IRQ4 = 4;
        public const short VI_ASSERT_IRQ5 = 5;
        public const short VI_ASSERT_IRQ6 = 6;
        public const short VI_ASSERT_IRQ7 = 7;
 
        public const short VI_UTIL_ASSERT_SYSRESET = 1;
        public const short VI_UTIL_ASSERT_SYSFAIL = 2;
        public const short VI_UTIL_DEASSERT_SYSFAIL = 3;
 
        public const short VI_VXI_CLASS_MEMORY = 0;
        public const short VI_VXI_CLASS_EXTENDED = 1;
        public const short VI_VXI_CLASS_MESSAGE = 2;
        public const short VI_VXI_CLASS_REGISTER = 3;
        public const short VI_VXI_CLASS_OTHER = 4;
        public const short VI_PXI_ADDR_NONE = 0;
        public const short VI_PXI_ADDR_MEM = 1;
        public const short VI_PXI_ADDR_IO = 2;
        public const short VI_PXI_ADDR_CFG = 3;
 
        public const short VI_TRIG_UNKNOWN = -1;
        public const short VI_PXI_LBUS_UNKNOWN = -1;
        public const short VI_PXI_LBUS_NONE = 0;
        public const short VI_PXI_LBUS_STAR_TRIG_BUS_0 = 1000;
        public const short VI_PXI_LBUS_STAR_TRIG_BUS_1 = 1001;
        public const short VI_PXI_LBUS_STAR_TRIG_BUS_2 = 1002;
        public const short VI_PXI_LBUS_STAR_TRIG_BUS_3 = 1003;
        public const short VI_PXI_LBUS_STAR_TRIG_BUS_4 = 1004;
        public const short VI_PXI_LBUS_STAR_TRIG_BUS_5 = 1005;
        public const short VI_PXI_LBUS_STAR_TRIG_BUS_6 = 1006;
        public const short VI_PXI_LBUS_STAR_TRIG_BUS_7 = 1007;
        public const short VI_PXI_LBUS_STAR_TRIG_BUS_8 = 1008;
        public const short VI_PXI_LBUS_STAR_TRIG_BUS_9 = 1009;
        public const short VI_PXI_STAR_TRIG_CONTROLLER = 1413;
 
        #endregion
 
        #region - Backward Compatibility Macros -----------------------------------------
        public const int VI_ERROR_INV_SESSION = -1073807346;
        public const int VI_INFINITE = -1;
        public const short VI_NORMAL = 1;
        public const short VI_FDC = 2;
        public const short VI_HS488 = 3;
        public const short VI_ASRL488 = 4;
        public const short VI_ASRL_IN_BUF = 16;
        public const short VI_ASRL_OUT_BUF = 32;
        public const short VI_ASRL_IN_BUF_DISCARD = 64;
        public const short VI_ASRL_OUT_BUF_DISCARD = 128;
        #endregion
 
        #endregion
    }
}