This file is indexed.

/usr/include/openh323/QTIoctl.h is in libopenh323-dev 1.18.0.dfsg-10build2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
/*
	QTIoctl.h

	Copyright (c) 1996-1999, Quicknet Technologies, Inc.
	All Rights Reserved.

	DeviceIoControl codes for Internet PhoneJACK, LineJACK, etc. drivers.

	-----------------------------------------------------------------

	$Header: /home/cvsroot/openh323/include/QTIoctl.h,v 1.5 2001/09/20 23:58:40 robertj Exp $
*/

#ifndef _QTIOCTL_H_
#define _QTIOCTL_H_

//
// The following #defines come from <winioctl.h>.
//

//
//- Beginning of included from <winioctl.h> section ------------------------------
//
// Macro definition for defining IOCTL and FSCTL function control codes.  Note
// that function codes 0-2047 are reserved for Microsoft Corporation, and
// 2048-4095 are reserved for customers.
//
#undef CTL_CODE
#define CTL_CODE( DeviceType, Function, Method, Access ) (                 \
    ((DWORD)(DeviceType) << 16) | ((DWORD)(Access) << 14) | ((DWORD)(Function) << 2) | (DWORD)(Method) \
)

//
// Define the method codes for how buffers are passed for I/O and FS controls
//

#define METHOD_BUFFERED                 0
#define METHOD_IN_DIRECT                1
#define METHOD_OUT_DIRECT               2
#define METHOD_NEITHER                  3

//
// Define the access check value for any access
//
//
// The FILE_READ_ACCESS and FILE_WRITE_ACCESS constants are also defined in
// ntioapi.h as FILE_READ_DATA and FILE_WRITE_DATA. The values for these
// constants *MUST* always be in sync.
//


#define FILE_ANY_ACCESS                 0
#define FILE_READ_ACCESS          ( 0x0001 )    // file & pipe
#define FILE_WRITE_ACCESS         ( 0x0002 )    // file & pipe

//
//- End of included from <winioctl.h> section ------------------------------
//

#define FILE_READ_WRITE_ACCESS (FILE_WRITE_ACCESS|FILE_READ_ACCESS)
#define ARG_DWORD	0x400
#define ARG_VOID	0

#define MASK_DWORD		( ARG_DWORD << 2 )
#define MASK_VOID		( ARG_VOID << 2 )
#define MASK_WRITE		( FILE_WRITE_ACCESS << 14 )
#define MASK_READ		( FILE_READ_ACCESS << 14 )
#define MASK_READ_WRITE	( FILE_READ_WRITE_ACCESS << 14 )

#define IoctlTransferType( Code )	(Code & 3)
#define IoctlDeviceType( Code )		((Code >> 16) & 0xffff)
#define IoctlRequiredAccess( Code )	((Code & 0xc000)>>14)
#define IoctlControlCode( Code )	((Code >> 2) & 0x03ff)
#define IoctlFunctionCode( Code )	((Code >> 2) & 0x0bff)
#define IoctlIsVoidArg( Code )		((Code & MASK_DWORD) == MASK_VOID)
#define IoctlIsRead( Code )			((Code & MASK_READ) == MASK_READ)
#define IoctlIsWrite( Code )		((Code & MASK_WRITE) == MASK_WRITE)
#define IoctlIsReadWrite( Code )	((Code & MASK_READ_WRITE) == MASK_READ_WRITE)
#define IoctlHasArgument( Code )	((Code & (MASK_WRITE|MASK_DWORD))== (MASK_WRITE|MASK_DWORD))
#define IoctlHasBuffer( Code )		((Code & MASK_READ_WRITE) != 0)

#ifndef LPVOID
#ifndef FAR
#define FAR
#endif
    typedef void FAR * LPVOID;
#endif

#ifndef DEVNODE
#define DEVNODE DWORD
#endif

/////////////////////////////////////////////////////////////////////////////////////////////////////////
// Win32 device operations

#define FILE_DEVICE_DEVICE 0x8009
#define DEVICE_CODE( fn, Access, ArgSize ) CTL_CODE( FILE_DEVICE_DEVICE, (0x800 + ArgSize + fn ), METHOD_BUFFERED, Access )

// Function codes
#define IOCTL_Device_Open DEVICE_CODE( 0, FILE_WRITE_ACCESS, ARG_DWORD) // (ARG_DWORD dwSerialNo)
#define IOCTL_Device_Close DEVICE_CODE( 1, FILE_WRITE_ACCESS, ARG_VOID) // (void)
#define IOCTL_Device_Read DEVICE_CODE( 2, FILE_WRITE_ACCESS, ARG_VOID) // (void)
#define IOCTL_Device_Write DEVICE_CODE( 3, FILE_WRITE_ACCESS, ARG_VOID) // (void)
#define IOCTL_Device_CancelIO DEVICE_CODE( 6, FILE_WRITE_ACCESS, ARG_VOID) // (void)
#define IOCTL_Device_GetSerialNumber DEVICE_CODE( 7, FILE_READ_ACCESS, ARG_VOID) // void
#define IOCTL_Device_GetG729Enable DEVICE_CODE( 8, FILE_READ_ACCESS, ARG_VOID) // void
#define IOCTL_Device_SetG729Enable DEVICE_CODE( 9, FILE_WRITE_ACCESS, ARG_DWORD) // (void)

//==========================================================================
//==========================================================================
//
//	IOCTL and function codes for Quicknet's Internet PhoneJACK and
//	Internet LineJACK cards.
//
//==========================================================================
//--------------------------------------------------------------------------
//	Codec support
//--------------------------------------------------------------------------
//
#define FILE_DEVICE_CODEC		0x8002

#define CODEC_IOCTL_CODE( fn, Access, ArgSize ) CTL_CODE( FILE_DEVICE_CODEC, (0x800 + ArgSize + fn ), METHOD_BUFFERED, Access )

#define IOCTL_Codec_SetSetRate		CODEC_IOCTL_CODE( 0, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD wSetRate)
#define IOCTL_Codec_GetSetRate		CODEC_IOCTL_CODE( 1, FILE_READ_ACCESS, ARG_VOID)		// (void)
#define IOCTL_Codec_SetINPUT_CODEC	CODEC_IOCTL_CODE( 2, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD wData)
#define IOCTL_Codec_GetINPUT_CODEC	CODEC_IOCTL_CODE( 3, FILE_READ_ACCESS, ARG_VOID)		// (void)
#define IOCTL_Codec_SetOUTPUT_CODEC	CODEC_IOCTL_CODE( 4, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD wData)
#define IOCTL_Codec_GetOUTPUT_CODEC	CODEC_IOCTL_CODE( 5, FILE_READ_ACCESS, ARG_VOID)		// (void)
#define IOCTL_Codec_SetLong			CODEC_IOCTL_CODE( 6, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD wData)
#define IOCTL_Codec_GetLong			CODEC_IOCTL_CODE( 7, FILE_READ_ACCESS, ARG_VOID)		// (void)
#define IOCTL_Codec_SetMaster		CODEC_IOCTL_CODE( 8, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD wData)
#define IOCTL_Codec_GetMaster		CODEC_IOCTL_CODE( 9, FILE_READ_ACCESS, ARG_VOID)		// (void)
#define IOCTL_Codec_SetLaw			CODEC_IOCTL_CODE( 10, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD wData)
#define IOCTL_Codec_GetLaw			CODEC_IOCTL_CODE( 11, FILE_READ_ACCESS, ARG_VOID)		// (void)
#define IOCTL_Codec_SetWidth		CODEC_IOCTL_CODE( 12, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD wData)
#define IOCTL_Codec_GetWidth		CODEC_IOCTL_CODE( 13, FILE_READ_ACCESS, ARG_VOID)		// (void)
#define IOCTL_Codec_SetCO_RATE		CODEC_IOCTL_CODE( 14, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD wData)
#define IOCTL_Codec_GetCO_RATE		CODEC_IOCTL_CODE( 15, FILE_READ_ACCESS, ARG_VOID)		// (void)
#define IOCTL_Codec_SetFSYNC_RATE	CODEC_IOCTL_CODE( 16, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD wData)
#define IOCTL_Codec_GetFSYNC_RATE	CODEC_IOCTL_CODE( 17, FILE_READ_ACCESS, ARG_VOID)		// (void)
#define IOCTL_Codec_SetWIDE			CODEC_IOCTL_CODE( 18, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD wData)
#define IOCTL_Codec_GetWIDE			CODEC_IOCTL_CODE( 19, FILE_READ_ACCESS, ARG_VOID)		// (void)
#define IOCTL_Codec_Loopback		CODEC_IOCTL_CODE( 20, FILE_READ_ACCESS, ARG_VOID)		// (void)
#define IOCTL_Codec_SetKHz			CODEC_IOCTL_CODE( 23, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD wData)
#define IOCTL_Codec_GetKHz			CODEC_IOCTL_CODE( 24, FILE_READ_ACCESS, ARG_VOID)		// (void)
#define IOCTL_Codec_SetLegacyKHz	CODEC_IOCTL_CODE( 25, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD wData)
#define IOCTL_Codec_GetLegacyKHz	CODEC_IOCTL_CODE( 26, FILE_READ_ACCESS, ARG_VOID)		// (void)
#define IOCTL_Codec_SetChannels		CODEC_IOCTL_CODE( 27, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD wData)
#define IOCTL_Codec_GetChannels		CODEC_IOCTL_CODE( 28, FILE_READ_ACCESS, ARG_VOID)		// (void)

#define fnCodec_SetSetRate			IOCTL_Codec_SetSetRate 
#define fnCodec_GetSetRate			IOCTL_Codec_GetSetRate 
#define fnCodec_SetINPUT_CODEC		IOCTL_Codec_SetINPUT_CODEC 
#define fnCodec_GetINPUT_CODEC		IOCTL_Codec_GetINPUT_CODEC 
#define fnCodec_SetOUTPUT_CODEC		IOCTL_Codec_SetOUTPUT_CODEC 
#define fnCodec_GetOUTPUT_CODEC		IOCTL_Codec_GetOUTPUT_CODEC 
#define fnCodec_SetLong				IOCTL_Codec_SetLong 
#define fnCodec_GetLong				IOCTL_Codec_GetLong 
#define fnCodec_SetMaster			IOCTL_Codec_SetMaster 
#define fnCodec_GetMaster			IOCTL_Codec_GetMaster 
#define fnCodec_SetLaw				IOCTL_Codec_SetLaw 
#define fnCodec_GetLaw				IOCTL_Codec_GetLaw 
#define fnCodec_SetWidth			IOCTL_Codec_SetWidth 
#define fnCodec_GetWidth			IOCTL_Codec_GetWidth 
#define fnCodec_SetCO_RATE			IOCTL_Codec_SetCO_RATE 
#define fnCodec_GetCO_RATE			IOCTL_Codec_GetCO_RATE 
#define fnCodec_SetFSYNC_RATE		IOCTL_Codec_SetFSYNC_RATE 
#define fnCodec_GetFSYNC_RATE		IOCTL_Codec_GetFSYNC_RATE 
#define fnCodec_SetWIDE				IOCTL_Codec_SetWIDE 
#define fnCodec_GetWIDE				IOCTL_Codec_GetWIDE 
#define fnCodec_Loopback			IOCTL_Codec_Loopback 
#define fnCodec_SetKHz				IOCTL_Codec_SetKHz 
#define fnCodec_GetKHz				IOCTL_Codec_GetKHz 
#define fnCodec_SetLegacyKHz		IOCTL_Codec_SetLegacyKHz	
#define fnCodec_GetLegacyKHz		IOCTL_Codec_GetLegacyKHz	
#define fnCodec_SetChannels			IOCTL_Codec_SetChannels 
#define fnCodec_GetChannels			IOCTL_Codec_GetChannels 

//==========================================================================
//--------------------------------------------------------------------------
//	Compression/Decompression support
//--------------------------------------------------------------------------
//
#define FILE_DEVICE_COMPRESS 0x8008

#define COMPRESS_IOCTL_CODE( fn, Access, ArgSize ) CTL_CODE( FILE_DEVICE_COMPRESS, (0x800 + ArgSize + fn ), METHOD_BUFFERED, Access )

#define IOCTL_Compress_Start		COMPRESS_IOCTL_CODE( 0, FILE_WRITE_ACCESS, ARG_VOID) // (void)
#define IOCTL_Compress_Continue		COMPRESS_IOCTL_CODE( 1, FILE_WRITE_ACCESS, ARG_VOID) // (void)
#define IOCTL_Compress_Stop			COMPRESS_IOCTL_CODE( 2, FILE_WRITE_ACCESS, ARG_VOID) // (void)
#define IOCTL_Compress_SetRate		COMPRESS_IOCTL_CODE( 3, FILE_WRITE_ACCESS, ARG_DWORD) // (WORD wNew)
#define IOCTL_Compress_GetRate		COMPRESS_IOCTL_CODE( 4, FILE_READ_ACCESS, ARG_VOID) // (void)
#define IOCTL_Compress_SetTFRMode	COMPRESS_IOCTL_CODE( 5, FILE_WRITE_ACCESS, ARG_DWORD) // (WORD wNew)
#define IOCTL_Compress_GetTFRMode	COMPRESS_IOCTL_CODE( 6, FILE_READ_ACCESS, ARG_VOID) // (void)
#define IOCTL_Decompress_Start		COMPRESS_IOCTL_CODE( 7, FILE_WRITE_ACCESS, ARG_VOID) // (void)
#define IOCTL_Decompress_Continue	COMPRESS_IOCTL_CODE( 8, FILE_WRITE_ACCESS, ARG_VOID) // (void)
#define IOCTL_Decompress_Stop		COMPRESS_IOCTL_CODE( 9, FILE_WRITE_ACCESS, ARG_VOID) // (void)
#define IOCTL_Decompress_SetRate	COMPRESS_IOCTL_CODE( 10, FILE_WRITE_ACCESS, ARG_VOID) // (ARG_DWORD wNew)
#define IOCTL_Decompress_GetRate	COMPRESS_IOCTL_CODE( 11, FILE_READ_ACCESS, ARG_VOID) // (void)
#define IOCTL_Decompress_SetTFRMode	COMPRESS_IOCTL_CODE( 12, FILE_WRITE_ACCESS, ARG_VOID) // (ARG_DWORD wNew)
#define IOCTL_Decompress_GetTFRMode	COMPRESS_IOCTL_CODE( 13, FILE_READ_ACCESS, ARG_VOID) // (void)

#define fnCompress_Start			IOCTL_Compress_Start 
#define fnCompress_Continue			IOCTL_Compress_Continue 
#define fnCompress_Stop				IOCTL_Compress_Stop 
#define fnCompress_SetRate			IOCTL_Compress_SetRate 
#define fnCompress_GetRate			IOCTL_Compress_GetRate 
#define fnCompress_SetTFRMode		IOCTL_Compress_SetTFRMode 
#define fnCompress_GetTFRMode		IOCTL_Compress_GetTFRMode 
#define fnDecompress_Start			IOCTL_Decompress_Start 
#define fnDecompress_Continue		IOCTL_Decompress_Continue 
#define fnDecompress_Stop			IOCTL_Decompress_Stop 
#define fnDecompress_SetRate		IOCTL_Decompress_SetRate 
#define fnDecompress_GetRate		IOCTL_Decompress_GetRate 
#define fnDecompress_SetTFRMode		IOCTL_Decompress_SetTFRMode 
#define fnDecompress_GetTFRMode		IOCTL_Decompress_GetTFRMode 

//==========================================================================
//--------------------------------------------------------------------------
//	Device support
//--------------------------------------------------------------------------
//
#define FILE_DEVICE_DEVCTRL 0x8007

#define DEVCTRL_IOCTL_CODE( fn, Access, ArgSize ) CTL_CODE( FILE_DEVICE_DEVCTRL, (0x800 + ArgSize + fn ), METHOD_BUFFERED, Access )

#define IOCTL_DevCtrl_CheckROM				DEVCTRL_IOCTL_CODE( 0, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_TestSRAM				DEVCTRL_IOCTL_CODE( 1, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_SRAM8Bit				DEVCTRL_IOCTL_CODE( 2, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_SRAM16Bit				DEVCTRL_IOCTL_CODE( 3, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_GetIdCode				DEVCTRL_IOCTL_CODE( 4, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_GetVersionCode		DEVCTRL_IOCTL_CODE( 5, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_TestCountMode			DEVCTRL_IOCTL_CODE( 6, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_TestDigitalMilliwatt	DEVCTRL_IOCTL_CODE( 7, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_TestLoopback			DEVCTRL_IOCTL_CODE( 8, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_TestExit				DEVCTRL_IOCTL_CODE( 9, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_Slowdown				DEVCTRL_IOCTL_CODE( 10, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD)
#define IOCTL_DevCtrl_GPIODirection			DEVCTRL_IOCTL_CODE( 11, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD)
#define IOCTL_DevCtrl_GPIOWrite				DEVCTRL_IOCTL_CODE( 12, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD)
#define IOCTL_DevCtrl_GPIORead				DEVCTRL_IOCTL_CODE( 13, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_EnableFR				DEVCTRL_IOCTL_CODE( 14, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_DisableFR				DEVCTRL_IOCTL_CODE( 15, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_ClearFR				DEVCTRL_IOCTL_CODE( 16, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_ReadFR				DEVCTRL_IOCTL_CODE( 17, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_SetAnalogSource		DEVCTRL_IOCTL_CODE( 18, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD)
#define IOCTL_DevCtrl_GetAnalogSource		DEVCTRL_IOCTL_CODE( 19, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_SetSLICState			DEVCTRL_IOCTL_CODE( 20, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD)
#define IOCTL_DevCtrl_GetSLICState			DEVCTRL_IOCTL_CODE( 21, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_ReadHookState			DEVCTRL_IOCTL_CODE( 22, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_GetOnHook				DEVCTRL_IOCTL_CODE( 23, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_SetRingPattern		DEVCTRL_IOCTL_CODE( 24, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD)
#define IOCTL_DevCtrl_SetLineJackMode		DEVCTRL_IOCTL_CODE( 25, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD)
#define IOCTL_DevCtrl_GetLineJackMode		DEVCTRL_IOCTL_CODE( 26, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_LineSetOnHook			DEVCTRL_IOCTL_CODE( 27, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD)
#define IOCTL_DevCtrl_LineGetRinging		DEVCTRL_IOCTL_CODE( 28, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_SetPotsToSlic			DEVCTRL_IOCTL_CODE( 29, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD)
#define IOCTL_DevCtrl_GetPotsToSlic			DEVCTRL_IOCTL_CODE( 30, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_GetLineOnHook			DEVCTRL_IOCTL_CODE( 31, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_GetLineCallerOnHook	DEVCTRL_IOCTL_CODE( 32, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_GetLinePhoneOnHook	DEVCTRL_IOCTL_CODE( 33, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_SetSpeaker			DEVCTRL_IOCTL_CODE( 34, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD)
#define IOCTL_DevCtrl_GetLineTestResult		DEVCTRL_IOCTL_CODE( 35, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_LineTest				DEVCTRL_IOCTL_CODE( 36, FILE_READ_WRITE_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_Wink					DEVCTRL_IOCTL_CODE( 37, FILE_READ_WRITE_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_Flash					DEVCTRL_IOCTL_CODE( 38, FILE_READ_WRITE_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_LineGetCallerID		DEVCTRL_IOCTL_CODE( 39, FILE_READ_ACCESS, ARG_VOID)	// char* returned in input buffer
#define IOCTL_DevCtrl_GetAttachedDevices	DEVCTRL_IOCTL_CODE( 40, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_GetFlashState			DEVCTRL_IOCTL_CODE( 41, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_GetCoefficientGroup	DEVCTRL_IOCTL_CODE( 42, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_DevCtrl_SetCoefficientGroup	DEVCTRL_IOCTL_CODE( 43, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (DWORD)
#define IOCTL_DevCtrl_GetPhoneType			DEVCTRL_IOCTL_CODE( 44, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (DWORD)
#define IOCTL_DevCtrl_SetPhoneType			DEVCTRL_IOCTL_CODE( 45, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (DWORD)
#define IOCTL_DevCtrl_SetRingCadence		DEVCTRL_IOCTL_CODE( 46, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (DWORD)
#define IOCTL_DevCtrl_SetWinkGenTime		DEVCTRL_IOCTL_CODE( 47, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (DWORD)
#define IOCTL_DevCtrl_GetWinkGenTime		DEVCTRL_IOCTL_CODE( 48, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (DWORD)
#define IOCTL_DevCtrl_SetFlashDetTime		DEVCTRL_IOCTL_CODE( 49, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (DWORD)
#define IOCTL_DevCtrl_GetFlashDetTime		DEVCTRL_IOCTL_CODE( 50, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (DWORD)
#define IOCTL_DevCtrl_SetLineFlashGenTime	DEVCTRL_IOCTL_CODE( 51, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (DWORD)
#define IOCTL_DevCtrl_GetLineFlashGenTime	DEVCTRL_IOCTL_CODE( 52, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (DWORD)
#define IOCTL_DevCtrl_SetLineWinkDetTime	DEVCTRL_IOCTL_CODE( 53, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (DWORD)
#define IOCTL_DevCtrl_GetLineWinkDetTime	DEVCTRL_IOCTL_CODE( 54, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (DWORD)
#define IOCTL_DevCtrl_SetAutoPhoneHookSwitch	DEVCTRL_IOCTL_CODE( 55, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (DWORD)
#define IOCTL_DevCtrl_GetAutoPhoneHookSwitch	DEVCTRL_IOCTL_CODE( 56, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (DWORD)
#define IOCTL_DevCtrl_SetLEDState			DEVCTRL_IOCTL_CODE( 57, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (DWORD)
#define IOCTL_DevCtrl_GetLEDState			DEVCTRL_IOCTL_CODE( 58, FILE_READ_WRITE_ACCESS, ARG_VOID)	// (void)

#define fnDevCtrl_CheckROM				IOCTL_DevCtrl_CheckROM 
#define fnDevCtrl_TestSRAM				IOCTL_DevCtrl_TestSRAM 
#define fnDevCtrl_SRAM8Bit				IOCTL_DevCtrl_SRAM8Bit 
#define fnDevCtrl_SRAM16Bit				IOCTL_DevCtrl_SRAM16Bit 
#define fnDevCtrl_GetIdCode				IOCTL_DevCtrl_GetIdCode 
#define fnDevCtrl_GetVersionCode		IOCTL_DevCtrl_GetVersionCode 
#define fnDevCtrl_TestCountMode			IOCTL_DevCtrl_TestCountMode 
#define fnDevCtrl_TestDigitalMilliwatt	IOCTL_DevCtrl_TestDigitalMilliwatt 
#define fnDevCtrl_TestLoopback			IOCTL_DevCtrl_TestLoopback 
#define fnDevCtrl_TestExit				IOCTL_DevCtrl_TestExit 
#define fnDevCtrl_Slowdown				IOCTL_DevCtrl_Slowdown 
#define fnDevCtrl_GPIODirection			IOCTL_DevCtrl_GPIODirection 
#define fnDevCtrl_GPIOWrite				IOCTL_DevCtrl_GPIOWrite 
#define fnDevCtrl_GPIORead				IOCTL_DevCtrl_GPIORead 
#define fnDevCtrl_EnableFR				IOCTL_DevCtrl_EnableFR 
#define fnDevCtrl_DisableFR				IOCTL_DevCtrl_DisableFR 
#define fnDevCtrl_ClearFR				IOCTL_DevCtrl_ClearFR 
#define fnDevCtrl_ReadFR				IOCTL_DevCtrl_ReadFR 
#define fnDevCtrl_SetAnalogSource		IOCTL_DevCtrl_SetAnalogSource 
#define fnDevCtrl_GetAnalogSource		IOCTL_DevCtrl_GetAnalogSource 
#define fnDevCtrl_SetSLICState			IOCTL_DevCtrl_SetSLICState 
#define fnDevCtrl_GetSLICState			IOCTL_DevCtrl_GetSLICState 
#define fnDevCtrl_ReadHookState			IOCTL_DevCtrl_ReadHookState 
#define fnDevCtrl_GetOnHook				IOCTL_DevCtrl_GetOnHook 
#define fnDevCtrl_SetRingPattern		IOCTL_DevCtrl_SetRingPattern 
#define fnDevCtrl_SetLineJackMode		IOCTL_DevCtrl_SetLineJackMode 
#define fnDevCtrl_GetLineJackMode		IOCTL_DevCtrl_GetLineJackMode 
#define fnDevCtrl_LineSetOnHook			IOCTL_DevCtrl_LineSetOnHook 
#define fnDevCtrl_LineGetRinging		IOCTL_DevCtrl_LineGetRinging 
#define fnDevCtrl_SetPotsToSlic			IOCTL_DevCtrl_SetPotsToSlic
#define fnDevCtrl_GetPotsToSlic			IOCTL_DevCtrl_GetPotsToSlic
#define fnDevCtrl_GetLineOnHook			IOCTL_DevCtrl_GetLineOnHook
#define fnDevCtrl_GetLineCallerOnHook	IOCTL_DevCtrl_GetLineCallerOnHook
#define fnDevCtrl_GetLinePhoneOnHook	IOCTL_DevCtrl_GetLinePhoneOnHook
#define fnDevCtrl_SetSpeaker			IOCTL_DevCtrl_SetSpeaker
#define fnDevCtrl_GetLineTestResult		IOCTL_DevCtrl_GetLineTestResult
#define fnDevCtrl_LineTest				IOCTL_DevCtrl_LineTest
#define fnDevCtrl_Wink					IOCTL_DevCtrl_Wink
#define	fnDevCtrl_Flash					IOCTL_DevCtrl_Flash
#define	fnDevCtrl_LineGetCallerID		IOCTL_DevCtrl_LineGetCallerID
#define	fnDevCtrl_GetAttachedDevices	IOCTL_DevCtrl_GetAttachedDevices
#define	fnDevCtrl_GetFlashState			IOCTL_DevCtrl_GetFlashState
#define	fnDevCtrl_GetCoefficientGroup	IOCTL_DevCtrl_GetCoefficientGroup
#define	fnDevCtrl_SetCoefficientGroup	IOCTL_DevCtrl_SetCoefficientGroup
#define	fnDevCtrl_GetPhoneType			IOCTL_DevCtrl_GetPhoneType
#define	fnDevCtrl_SetPhoneType			IOCTL_DevCtrl_SetPhoneType
#define	fnDevCtrl_SetRingCadence		IOCTL_DevCtrl_SetRingCadence
#define	fnDevCtrl_SetWinkGenTime		IOCTL_DevCtrl_SetWinkGenTime
#define	fnDevCtrl_GetWinkGenTime		IOCTL_DevCtrl_GetWinkGenTime
#define	fnDevCtrl_SetFlashDetTime		IOCTL_DevCtrl_SetFlashDetTime
#define	fnDevCtrl_GetFlashDetTime		IOCTL_DevCtrl_GetFlashDetTime
#define	fnDevCtrl_SetLineFlashGenTime	IOCTL_DevCtrl_SetLineFlashGenTime
#define	fnDevCtrl_GetLineFlashGenTime	IOCTL_DevCtrl_GetLineFlashGenTime
#define	fnDevCtrl_SetLineWinkDetTime	IOCTL_DevCtrl_SetLineWinkDetTime
#define	fnDevCtrl_GetLineWinkDetTime	IOCTL_DevCtrl_GetLineWinkDetTime
#define	fnDevCtrl_SetAutoPhoneHookSwitch	IOCTL_DevCtrl_SetAutoPhoneHookSwitch
#define	fnDevCtrl_GetAutoPhoneHookSwitch	IOCTL_DevCtrl_GetAutoPhoneHookSwitch
#define	fnDevCtrl_SetLEDState			IOCTL_DevCtrl_SetLEDState
#define	fnDevCtrl_GetLEDState			IOCTL_DevCtrl_GetLEDState

//==========================================================================
//--------------------------------------------------------------------------
//	Filter support
//--------------------------------------------------------------------------
//
#define FILE_DEVICE_FILTER 0x8006

#define FILTER_IOCTL_CODE( fn, Access, ArgSize ) CTL_CODE( FILE_DEVICE_FILTER, (0x800 + ArgSize + fn ), METHOD_BUFFERED, Access )

#define IOCTL_Filter_SetFilterModeSync	FILTER_IOCTL_CODE( 0, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD wNew)
#define IOCTL_Filter_SetFilterModeAsync	FILTER_IOCTL_CODE( 1, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD wNew)
#define IOCTL_Filter_GetFilterMode		FILTER_IOCTL_CODE( 2, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Filter_EnableDTMFDetect	FILTER_IOCTL_CODE( 3, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Filter_DisableDTMFDetect	FILTER_IOCTL_CODE( 4, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Filter_IsDTMFValid		FILTER_IOCTL_CODE( 5, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Filter_GetDTMFDigit		FILTER_IOCTL_CODE( 6, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Filter_GetFrameCount		FILTER_IOCTL_CODE( 7, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Filter_IsCPFValid			FILTER_IOCTL_CODE( 8, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Filter_SetFilterPrescaler	FILTER_IOCTL_CODE( 9, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD wScale )
#define IOCTL_Filter_GetFilterPrescaler	FILTER_IOCTL_CODE( 10, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Filter_LineMonitor		FILTER_IOCTL_CODE( 11, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Filter_ProgramFilter		FILTER_IOCTL_CODE( 12, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Filter_EnableFilter		FILTER_IOCTL_CODE( 13, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Filter_DisableFilter		FILTER_IOCTL_CODE( 14, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Filter_DetectToneCadence	FILTER_IOCTL_CODE( 15, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Filter_StopDetectToneCadence	FILTER_IOCTL_CODE( 16, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Filter_IsToneCadenceValid	FILTER_IOCTL_CODE( 17, FILE_READ_ACCESS, ARG_VOID)	// (void)

#define fnFilter_SetFilterModeSync		IOCTL_Filter_SetFilterModeSync
#define fnFilter_SetFilterModeAsync		IOCTL_Filter_SetFilterModeAsync
#define fnFilter_GetFilterMode			IOCTL_Filter_GetFilterMode
#define fnFilter_EnableDTMFDetect		IOCTL_Filter_EnableDTMFDetect
#define fnFilter_DisableDTMFDetect		IOCTL_Filter_DisableDTMFDetect
#define fnFilter_IsDTMFValid			IOCTL_Filter_IsDTMFValid
#define fnFilter_GetDTMFDigit			IOCTL_Filter_GetDTMFDigit
#define fnFilter_GetFrameCount			IOCTL_Filter_GetFrameCount
#define fnFilter_IsCPFValid				IOCTL_Filter_IsCPFValid
#define fnFilter_SetFilterPrescaler		IOCTL_Filter_SetFilterPrescaler
#define fnFilter_GetFilterPrescaler		IOCTL_Filter_GetFilterPrescaler
#define fnFilter_LineMonitor			IOCTL_Filter_LineMonitor
#define fnFilter_ProgramFilter			IOCTL_Filter_ProgramFilter
#define fnFilter_EnableFilter			IOCTL_Filter_EnableFilter
#define fnFilter_DisableFilter			IOCTL_Filter_DisableFilter
#define fnFilter_DetectToneCadence		IOCTL_Filter_DetectToneCadence
#define fnFilter_StopDetectToneCadence	IOCTL_Filter_StopDetectToneCadence
#define fnFilter_IsToneCadenceValid		IOCTL_Filter_IsToneCadenceValid

//==========================================================================
//--------------------------------------------------------------------------
//	Idle support
//--------------------------------------------------------------------------
//
#define FILE_DEVICE_IDLE	0x8000

#define IDLE_IOCTL_CODE( fn, Access, ArgSize ) CTL_CODE( FILE_DEVICE_IDLE, (0x800 + ArgSize + fn ), METHOD_BUFFERED, Access )

#define IOCTL_Idle_Idle				IDLE_IOCTL_CODE( 0, FILE_READ_ACCESS, ARG_VOID)			// (void)
#define IOCTL_Idle_SetMasterGain	IDLE_IOCTL_CODE( 1, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD wNew)
#define IOCTL_Idle_GetMasterGain	IDLE_IOCTL_CODE( 2, FILE_READ_ACCESS, ARG_VOID)			// (void)
#define IOCTL_Idle_SetSyncToneMode	IDLE_IOCTL_CODE( 3, FILE_READ_ACCESS, ARG_VOID)			// (void)
#define IOCTL_Idle_SetAsyncToneMode	IDLE_IOCTL_CODE( 4, FILE_READ_ACCESS, ARG_VOID)			// (void)
#define IOCTL_Idle_SetToneIndex		IDLE_IOCTL_CODE( 5, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD wNew)
#define IOCTL_Idle_GetToneIndex		IDLE_IOCTL_CODE( 6, FILE_READ_ACCESS, ARG_VOID)			// (void)
#define IOCTL_Idle_GetToneMode		IDLE_IOCTL_CODE( 7, FILE_READ_ACCESS, ARG_VOID)			// (void)
#define IOCTL_Idle_SetToneOnPeriod	IDLE_IOCTL_CODE( 8, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD wNew)
#define IOCTL_Idle_GetToneOnPeriod	IDLE_IOCTL_CODE( 9, FILE_READ_ACCESS, ARG_VOID)			// (void)
#define IOCTL_Idle_SetToneOffPeriod	IDLE_IOCTL_CODE( 10, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD wNew)
#define IOCTL_Idle_GetToneOffPeriod	IDLE_IOCTL_CODE( 11, FILE_READ_ACCESS, ARG_VOID)		// (void)
#define IOCTL_Idle_GetToneState		IDLE_IOCTL_CODE( 12, FILE_READ_ACCESS, ARG_VOID)		// (void)
#define IOCTL_Idle_GenerateTone		IDLE_IOCTL_CODE( 13, FILE_READ_ACCESS, ARG_VOID)		// (void)
#define IOCTL_Idle_NewToneInit		IDLE_IOCTL_CODE( 14, FILE_READ_ACCESS, ARG_VOID)		// (IDLE_NEW_TONE*)
#define IOCTL_Idle_PlayTone			IDLE_IOCTL_CODE( 15, FILE_READ_ACCESS, ARG_DWORD)		// (IDLE_TONE*)
#define IOCTL_Idle_StopTone			IDLE_IOCTL_CODE( 16, FILE_READ_ACCESS, ARG_VOID)		// (void)

#define fnIdle_Idle					IOCTL_Idle_Idle
#define fnIdle_SetMasterGain		IOCTL_Idle_SetMasterGain
#define fnIdle_GetMasterGain		IOCTL_Idle_GetMasterGain
#define fnIdle_SetSyncToneMode		IOCTL_Idle_SetSyncToneMode
#define fnIdle_SetAsyncToneMode		IOCTL_Idle_SetAsyncToneMode
#define fnIdle_SetToneIndex			IOCTL_Idle_SetToneIndex
#define fnIdle_GetToneIndex			IOCTL_Idle_GetToneIndex
#define fnIdle_GetToneMode			IOCTL_Idle_GetToneMode
#define fnIdle_SetToneOnPeriod		IOCTL_Idle_SetToneOnPeriod
#define fnIdle_GetToneOnPeriod		IOCTL_Idle_GetToneOnPeriod
#define fnIdle_SetToneOffPeriod		IOCTL_Idle_SetToneOffPeriod
#define fnIdle_GetToneOffPeriod		IOCTL_Idle_GetToneOffPeriod
#define fnIdle_GetToneState			IOCTL_Idle_GetToneState
#define fnIdle_GenerateTone			IOCTL_Idle_GenerateTone
#define fnIdle_NewToneInit			IOCTL_Idle_NewToneInit
#define fnIdle_PlayTone				IOCTL_Idle_PlayTone
#define fnIdle_StopTone				IOCTL_Idle_StopTone

//==========================================================================
//--------------------------------------------------------------------------
//	Mixer support
//--------------------------------------------------------------------------
//
#define FILE_DEVICE_MIXER 0x800A

#define MIXER_IOCTL_CODE( fn, Access, ArgSize ) CTL_CODE( FILE_DEVICE_MIXER, (0x800 + ArgSize + fn ), METHOD_BUFFERED, Access )

#define IOCTL_Mixer_SetPlaybackLineControls		MIXER_IOCTL_CODE( 0, FILE_READ_WRITE_ACCESS, ARG_VOID)	// MIXER_LINE* pMixerLine 
#define IOCTL_Mixer_GetPlaybackLineControls		MIXER_IOCTL_CODE( 1, FILE_READ_ACCESS, ARG_VOID)		// MIXER_LINE* pMixerLine
#define IOCTL_Mixer_SetRecordLineControls		MIXER_IOCTL_CODE( 2, FILE_READ_WRITE_ACCESS, ARG_VOID)	// MIXER_LINE* pMixerLine
#define IOCTL_Mixer_GetRecordLineControls		MIXER_IOCTL_CODE( 3, FILE_READ_ACCESS, ARG_VOID)		// MIXER_LINE* pMixerLine
#define IOCTL_Mixer_SetOutputMixer				MIXER_IOCTL_CODE( 4, FILE_READ_WRITE_ACCESS, ARG_VOID)	// MIXER_LINE* pMixerLine
#define IOCTL_Mixer_GetOutputMixer				MIXER_IOCTL_CODE( 5, FILE_READ_ACCESS, ARG_VOID)		// MIXER_LINE* pMixerLine
#define IOCTL_Mixer_SetInputMixer				MIXER_IOCTL_CODE( 6, FILE_READ_WRITE_ACCESS, ARG_VOID)	// MIXER_LINE* pMixerLine
#define IOCTL_Mixer_GetInputMixer				MIXER_IOCTL_CODE( 7, FILE_READ_ACCESS, ARG_VOID)		// MIXER_LINE* pMixerLine
#define IOCTL_Mixer_SetMasterRecordGain			MIXER_IOCTL_CODE( 8, FILE_READ_WRITE_ACCESS, ARG_DWORD)		// LONG lGain in 1/10 dB
#define IOCTL_Mixer_SetMasterPlaybackGain		MIXER_IOCTL_CODE( 9, FILE_READ_WRITE_ACCESS, ARG_DWORD)		// LONG lGain in 1/10 dB
#define IOCTL_Mixer_SetPSTNRecordGain			MIXER_IOCTL_CODE( 10, FILE_READ_WRITE_ACCESS, ARG_DWORD)		// LONG lGain in 1/10 dB
#define IOCTL_Mixer_SetPSTNPlaybackGain			MIXER_IOCTL_CODE( 11, FILE_READ_WRITE_ACCESS, ARG_DWORD)		// LONG lGain in 1/10 dB

//==========================================================================
//--------------------------------------------------------------------------
//	Playback support
//--------------------------------------------------------------------------
//
#define FILE_DEVICE_PLAYBACK 0x8004

#define	PLAYBACK_IOCTL_CODE( fn, Access, ArgSize ) CTL_CODE( FILE_DEVICE_PLAYBACK, (0x800 + ArgSize + fn ), METHOD_BUFFERED, Access )

#define IOCTL_Playback_SetTFRMode				PLAYBACK_IOCTL_CODE( 0, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD wNew)
#define IOCTL_Playback_GetTFRMode				PLAYBACK_IOCTL_CODE( 1, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Playback_SetPLAYMODE				PLAYBACK_IOCTL_CODE( 2, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD wNew)
#define IOCTL_Playback_GetPLAYMODE				PLAYBACK_IOCTL_CODE( 3, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Playback_GetDTMF_VALID			PLAYBACK_IOCTL_CODE( 4, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Playback_GetCPF_VALID				PLAYBACK_IOCTL_CODE( 5, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Playback_GetDTMF_DIGIT			PLAYBACK_IOCTL_CODE( 6, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Playback_SetRate					PLAYBACK_IOCTL_CODE( 7, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD wNew)
#define IOCTL_Playback_GetRate					PLAYBACK_IOCTL_CODE( 8, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Playback_Start_Old				PLAYBACK_IOCTL_CODE( 9, FILE_READ_ACCESS, ARG_VOID)	// (void)
//#define IOCTL_Playback_Continue					PLAYBACK_IOCTL_CODE( 10, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Playback_Continue					CTL_CODE( FILE_DEVICE_PLAYBACK, 0x80a, METHOD_NEITHER, FILE_READ_ACCESS )	// (void)
#define IOCTL_Playback_Stop						PLAYBACK_IOCTL_CODE( 11, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Playback_SetVolume				PLAYBACK_IOCTL_CODE( 12, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD wNew)
#define IOCTL_Playback_GetVolume				PLAYBACK_IOCTL_CODE( 13, FILE_READ_ACCESS, ARG_DWORD)	// (WORD wNew)
#define IOCTL_Playback_SetSyncMode				PLAYBACK_IOCTL_CODE( 14, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD wNew)
#define IOCTL_Playback_GetSyncMode				PLAYBACK_IOCTL_CODE( 15, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Playback_SetBufferChannelLimit	PLAYBACK_IOCTL_CODE( 16, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD wNew)
#define IOCTL_Playback_GetBufferChannelLimit	PLAYBACK_IOCTL_CODE( 17, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Playback_GetFrameSize				PLAYBACK_IOCTL_CODE( 18, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Playback_GetAvgPlaybackLevel		PLAYBACK_IOCTL_CODE( 19, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Playback_ContinueLogFrame			PLAYBACK_IOCTL_CODE( 20, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Playback_Open						PLAYBACK_IOCTL_CODE( 21, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Playback_Close					PLAYBACK_IOCTL_CODE( 22, FILE_READ_ACCESS, ARG_DWORD)	// (DWORD)
#define IOCTL_Playback_SetMute					PLAYBACK_IOCTL_CODE( 23, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (WORD wNew)
#define IOCTL_Playback_GetMute					PLAYBACK_IOCTL_CODE( 24, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Playback_GetBufferDepth			PLAYBACK_IOCTL_CODE( 25, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_Playback_GetPlaybackLevelValue	PLAYBACK_IOCTL_CODE( 26, FILE_READ_ACCESS, ARG_VOID) // (void)
#define IOCTL_Playback_IsPlaying				PLAYBACK_IOCTL_CODE( 27, FILE_READ_ACCESS, ARG_VOID) // (void)
#define IOCTL_Playback_Start					PLAYBACK_IOCTL_CODE( 28, FILE_READ_ACCESS, ARG_VOID)	// (void)

#define fnPlayback_SetTFRMode				IOCTL_Playback_SetTFRMode 
#define fnPlayback_GetTFRMode				IOCTL_Playback_GetTFRMode 
#define fnPlayback_SetPLAYMODE				IOCTL_Playback_SetPLAYMODE 
#define fnPlayback_GetPLAYMODE				IOCTL_Playback_GetPLAYMODE 
#define fnPlayback_GetDTMF_VALID			IOCTL_Playback_GetDTMF_VALID 
#define fnPlayback_GetCPF_VALID				IOCTL_Playback_GetCPF_VALID 
#define fnPlayback_GetDTMF_DIGIT			IOCTL_Playback_GetDTMF_DIGIT 
#define fnPlayback_SetRate					IOCTL_Playback_SetRate 
#define fnPlayback_GetRate					IOCTL_Playback_GetRate 
#define fnPlayback_Start					IOCTL_Playback_Start 
#define fnPlayback_Continue					IOCTL_Playback_Continue 
#define fnPlayback_Stop						IOCTL_Playback_Stop 
#define fnPlayback_SetVolume				IOCTL_Playback_SetVolume 
#define fnPlayback_GetVolume				IOCTL_Playback_GetVolume 
#define fnPlayback_SetSyncMode				IOCTL_Playback_SetSyncMode 
#define fnPlayback_GetSyncMode				IOCTL_Playback_GetSyncMode 
#define fnPlayback_SetBufferChannelLimit	IOCTL_Playback_SetBufferChannelLimit 
#define fnPlayback_GetBufferChannelLimit	IOCTL_Playback_GetBufferChannelLimit 
#define fnPlayback_GetFrameSize				IOCTL_Playback_GetFrameSize 
#define fnPlayback_GetAvgPlaybackLevel		IOCTL_Playback_GetAvgPlaybackLevel 
#define fnPlayback_ContinueLogFrame			IOCTL_Playback_ContinueLogFrame
#define fnPlayback_Open						IOCTL_Playback_Open
#define fnPlayback_Close					IOCTL_Playback_Close
#define fnPlayback_SetMute					IOCTL_Playback_SetMute 
#define fnPlayback_GetMute					IOCTL_Playback_GetMute 
#define fnPlayback_GetBufferDepth			IOCTL_Playback_GetBufferDepth 
#define fnPlayback_GetPlaybackLevelValue	IOCTL_Playback_GetPlaybackLevelValue
#define fnPlayback_IsPlaying				IOCTL_Playback_IsPlaying

//==========================================================================
//--------------------------------------------------------------------------
//	Record support
//--------------------------------------------------------------------------
//
#define FILE_DEVICE_RECORD 0x8003

#define RECORD_IOCTL_CODE( fn, Access, ArgSize ) CTL_CODE( FILE_DEVICE_RECORD, (0x800 + ArgSize + fn ), METHOD_BUFFERED, Access )

#define	IOCTL_Record_SetTFRMode				RECORD_IOCTL_CODE( 0, FILE_READ_WRITE_ACCESS, ARG_DWORD) // (WORD wNew)
#define	IOCTL_Record_GetTFRMode				RECORD_IOCTL_CODE( 1, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_SetRECMODE				RECORD_IOCTL_CODE( 2, FILE_READ_WRITE_ACCESS, ARG_DWORD) // (WORD wNew)
#define	IOCTL_Record_GetRECMODE				RECORD_IOCTL_CODE( 3, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_GetPEAK				RECORD_IOCTL_CODE( 4, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_GetDTMF_VALID			RECORD_IOCTL_CODE( 5, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_GetCPF_VALID			RECORD_IOCTL_CODE( 6, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_GetDTMF_DIGIT			RECORD_IOCTL_CODE( 7, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_SetThresholdValue		RECORD_IOCTL_CODE( 8, FILE_READ_WRITE_ACCESS, ARG_DWORD) // (WORD wNew)
#define	IOCTL_Record_GetThresholdValue		RECORD_IOCTL_CODE( 9, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_GetRecordLevelValue	RECORD_IOCTL_CODE( 10, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_Start_Old				RECORD_IOCTL_CODE( 11, FILE_READ_ACCESS, ARG_VOID) // (void)
//#define	IOCTL_Record_Continue				RECORD_IOCTL_CODE( 12, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_Continue				CTL_CODE( FILE_DEVICE_RECORD, 0x80c, METHOD_NEITHER, FILE_READ_ACCESS ) // (void)
#define	IOCTL_Record_Stop					RECORD_IOCTL_CODE( 13, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_SetRate				RECORD_IOCTL_CODE( 14, FILE_READ_WRITE_ACCESS, ARG_DWORD) // (WORD wNew)
#define	IOCTL_Record_GetRate				RECORD_IOCTL_CODE( 15, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_SetVolume				RECORD_IOCTL_CODE( 16, FILE_READ_WRITE_ACCESS, ARG_DWORD) // (WORD wNew)
#define	IOCTL_Record_GetVolume				RECORD_IOCTL_CODE( 17, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_SetAGCMinGain			RECORD_IOCTL_CODE( 18, FILE_READ_WRITE_ACCESS, ARG_DWORD) // (WORD wNew)
#define	IOCTL_Record_GetAGCMinGain			RECORD_IOCTL_CODE( 19, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_SetAGCMaxGain			RECORD_IOCTL_CODE( 20, FILE_READ_WRITE_ACCESS, ARG_DWORD) // (WORD wNew)
#define	IOCTL_Record_GetAGCMaxGain			RECORD_IOCTL_CODE( 21, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_SetAGCStartGain		RECORD_IOCTL_CODE( 22, FILE_READ_WRITE_ACCESS, ARG_DWORD) // (WORD wNew)
#define	IOCTL_Record_GetAGCStartGain		RECORD_IOCTL_CODE( 23, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_SetAGCHoldTime			RECORD_IOCTL_CODE( 24, FILE_READ_WRITE_ACCESS, ARG_DWORD) // (WORD wNew)
#define	IOCTL_Record_GetAGCHoldTime			RECORD_IOCTL_CODE( 25, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_SetAGCAttackTime		RECORD_IOCTL_CODE( 26, FILE_READ_WRITE_ACCESS, ARG_DWORD) // (WORD wNew)
#define	IOCTL_Record_GetAGCAttackTime		RECORD_IOCTL_CODE( 27, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_SetAGCDecayTime		RECORD_IOCTL_CODE( 28, FILE_READ_WRITE_ACCESS, ARG_DWORD) // (WORD wNew)
#define	IOCTL_Record_GetAGCDecayTime		RECORD_IOCTL_CODE( 29, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_SetAGCAttackThreshold	RECORD_IOCTL_CODE( 30, FILE_READ_WRITE_ACCESS, ARG_DWORD) // (WORD wNew)
#define	IOCTL_Record_GetAGCAttackThreshold	RECORD_IOCTL_CODE( 31, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_SetAGCOnOff			RECORD_IOCTL_CODE( 32, FILE_READ_WRITE_ACCESS, ARG_DWORD) // (WORD wNew)
#define	IOCTL_Record_GetAGCOnOff			RECORD_IOCTL_CODE( 33, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_SetSyncMode			RECORD_IOCTL_CODE( 34, FILE_READ_WRITE_ACCESS, ARG_DWORD) // (WORD wNew)
#define	IOCTL_Record_GetSyncMode			RECORD_IOCTL_CODE( 35, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_SetBufferChannelLimit	RECORD_IOCTL_CODE( 36, FILE_READ_WRITE_ACCESS, ARG_DWORD) // (WORD wNew)
#define	IOCTL_Record_GetBufferChannelLimit	RECORD_IOCTL_CODE( 37, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_GetFrameSize			RECORD_IOCTL_CODE( 38, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_GetAvgRecordLevel		RECORD_IOCTL_CODE( 39, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_ContinueLogFrame		RECORD_IOCTL_CODE( 40, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_Open					RECORD_IOCTL_CODE( 41, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_Close					RECORD_IOCTL_CODE( 42, FILE_READ_ACCESS, ARG_DWORD) // (DWORD)
#define	IOCTL_Record_SetMute				RECORD_IOCTL_CODE( 43, FILE_READ_WRITE_ACCESS, ARG_DWORD) // (WORD wNew)
#define	IOCTL_Record_GetMute				RECORD_IOCTL_CODE( 44, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_EnableVAD				RECORD_IOCTL_CODE( 45, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_DisableVAD				RECORD_IOCTL_CODE( 46, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_SetDisableOnDTMFDetect		RECORD_IOCTL_CODE( 47, FILE_READ_WRITE_ACCESS, ARG_DWORD) // (WORD wNew)
#define	IOCTL_Record_GetDisableOnDTMFDetect		RECORD_IOCTL_CODE( 48, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_IsRecording			RECORD_IOCTL_CODE( 49, FILE_READ_ACCESS, ARG_VOID) // (void)
#define	IOCTL_Record_Start					RECORD_IOCTL_CODE( 50, FILE_READ_ACCESS, ARG_VOID) // (void)

#define fnRecord_SetTFRMode				IOCTL_Record_SetTFRMode 
#define fnRecord_GetTFRMode				IOCTL_Record_GetTFRMode 
#define fnRecord_SetRECMODE				IOCTL_Record_SetRECMODE 
#define fnRecord_GetRECMODE				IOCTL_Record_GetRECMODE 
#define fnRecord_GetPEAK				IOCTL_Record_GetPEAK 
#define fnRecord_GetDTMF_VALID			IOCTL_Record_GetDTMF_VALID 
#define fnRecord_GetCPF_VALID			IOCTL_Record_GetCPF_VALID 
#define fnRecord_GetDTMF_DIGIT			IOCTL_Record_GetDTMF_DIGIT 
#define fnRecord_SetThresholdValue		IOCTL_Record_SetThresholdValue 
#define fnRecord_GetThresholdValue		IOCTL_Record_GetThresholdValue 
#define fnRecord_GetRecordLevelValue	IOCTL_Record_GetRecordLevelValue 
#define fnRecord_Start					IOCTL_Record_Start 
#define fnRecord_Continue				IOCTL_Record_Continue 
#define fnRecord_Stop					IOCTL_Record_Stop 
#define fnRecord_SetRate				IOCTL_Record_SetRate 
#define fnRecord_GetRate				IOCTL_Record_GetRate 
#define fnRecord_SetVolume				IOCTL_Record_SetVolume 
#define fnRecord_GetVolume				IOCTL_Record_GetVolume 
#define fnRecord_SetAGCMinGain			IOCTL_Record_SetAGCMinGain 
#define fnRecord_GetAGCMinGain			IOCTL_Record_GetAGCMinGain 
#define fnRecord_SetAGCMaxGain			IOCTL_Record_SetAGCMaxGain 
#define fnRecord_GetAGCMaxGain			IOCTL_Record_GetAGCMaxGain 
#define fnRecord_SetAGCStartGain		IOCTL_Record_SetAGCStartGain 
#define fnRecord_GetAGCStartGain		IOCTL_Record_GetAGCStartGain 
#define fnRecord_SetAGCHoldTime			IOCTL_Record_SetAGCHoldTime 
#define fnRecord_GetAGCHoldTime			IOCTL_Record_GetAGCHoldTime 
#define fnRecord_SetAGCAttackTime		IOCTL_Record_SetAGCAttackTime 
#define fnRecord_GetAGCAttackTime		IOCTL_Record_GetAGCAttackTime 
#define fnRecord_SetAGCDecayTime		IOCTL_Record_SetAGCDecayTime 
#define fnRecord_GetAGCDecayTime		IOCTL_Record_GetAGCDecayTime 
#define fnRecord_SetAGCAttackThreshold	IOCTL_Record_SetAGCAttackThreshold 
#define fnRecord_GetAGCAttackThreshold	IOCTL_Record_GetAGCAttackThreshold 
#define fnRecord_SetAGCOnOff			IOCTL_Record_SetAGCOnOff 
#define fnRecord_GetAGCOnOff			IOCTL_Record_GetAGCOnOff 
#define fnRecord_SetSyncMode			IOCTL_Record_SetSyncMode 
#define fnRecord_GetSyncMode			IOCTL_Record_GetSyncMode 
#define fnRecord_SetBufferChannelLimit	IOCTL_Record_SetBufferChannelLimit 
#define fnRecord_GetBufferChannelLimit	IOCTL_Record_GetBufferChannelLimit 
#define fnRecord_GetFrameSize			IOCTL_Record_GetFrameSize 
#define fnRecord_GetAvgRecordLevel		IOCTL_Record_GetAvgRecordLevel 
#define fnRecord_SetMute				IOCTL_Record_SetMute 
#define fnRecord_GetMute				IOCTL_Record_GetMute 
#define fnRecord_ContinueLogFrame       IOCTL_Record_ContinueLogFrame
#define fnRecord_IsRecording	        IOCTL_Record_IsRecording

//==========================================================================
//--------------------------------------------------------------------------
//	Speakerphone support
//--------------------------------------------------------------------------
//
#define FILE_DEVICE_SPEAKERPHONE 0x8005

#define SPEAKERPHONE_IOCTL_CODE( fn, Access, ArgSize ) CTL_CODE( FILE_DEVICE_SPEAKERPHONE, (0x800 + ArgSize + fn ), METHOD_BUFFERED, Access )

#define IOCTL_Speakerphone_SetSpeakerVolume		SPEAKERPHONE_IOCTL_CODE( 0, FILE_READ_WRITE_ACCESS, ARG_DWORD) // (WORD wNew)
#define IOCTL_Speakerphone_GetSpeakerVolume		SPEAKERPHONE_IOCTL_CODE( 1, FILE_READ_ACCESS, ARG_VOID) // (void)
#define IOCTL_Speakerphone_AECOn				SPEAKERPHONE_IOCTL_CODE( 2, FILE_READ_ACCESS, ARG_VOID) // (void)
#define IOCTL_Speakerphone_AECOff				SPEAKERPHONE_IOCTL_CODE( 3, FILE_READ_ACCESS, ARG_VOID) // (void)
#define IOCTL_Speakerphone_AECAdvancedLoOn		SPEAKERPHONE_IOCTL_CODE( 4, FILE_READ_ACCESS, ARG_VOID) // (void)
#define IOCTL_Speakerphone_AECAdvancedHiOn		SPEAKERPHONE_IOCTL_CODE( 5, FILE_READ_ACCESS, ARG_VOID) // (void)
#define IOCTL_Speakerphone_AECAdvancedLoOff		SPEAKERPHONE_IOCTL_CODE( 6, FILE_READ_ACCESS, ARG_VOID) // (void)
#define IOCTL_Speakerphone_AECAdvancedHiOff		SPEAKERPHONE_IOCTL_CODE( 7, FILE_READ_ACCESS, ARG_VOID) // (void)
#define IOCTL_Speakerphone_SetAEC				SPEAKERPHONE_IOCTL_CODE( 8, FILE_READ_WRITE_ACCESS, ARG_DWORD) // (WORD wNew)
#define IOCTL_Speakerphone_GetAEC				SPEAKERPHONE_IOCTL_CODE( 9, FILE_READ_ACCESS, ARG_VOID) // (void)
#define IOCTL_Speakerphone_SetBaseFrameSize  SPEAKERPHONE_IOCTL_CODE( 10, FILE_READ_WRITE_ACCESS, ARG_DWORD) // (WORD wNew)
#define IOCTL_Speakerphone_GetBaseFrameSize				SPEAKERPHONE_IOCTL_CODE( 11, FILE_READ_ACCESS, ARG_VOID) // (void)

#define fnSpeakerphone_SetSpeakerVolume		IOCTL_Speakerphone_SetSpeakerVolume 
#define fnSpeakerphone_GetSpeakerVolume		IOCTL_Speakerphone_GetSpeakerVolume 
#define fnSpeakerphone_AECOn				IOCTL_Speakerphone_AECOn 
#define fnSpeakerphone_AECOff				IOCTL_Speakerphone_AECOff 
#define fnSpeakerphone_AECAdvancedLoOn		IOCTL_Speakerphone_AECAdvancedLoOn 
#define fnSpeakerphone_AECAdvancedHiOn		IOCTL_Speakerphone_AECAdvancedHiOn 
#define fnSpeakerphone_AECAdvancedLoOff		IOCTL_Speakerphone_AECAdvancedLoOff 
#define fnSpeakerphone_AECAdvancedHiOff		IOCTL_Speakerphone_AECAdvancedHiOff 
#define fnSpeakerphone_SetAEC				IOCTL_Speakerphone_SetAEC 
#define fnSpeakerphone_GetAEC				IOCTL_Speakerphone_GetAEC 

//==========================================================================
//--------------------------------------------------------------------------
//	Fax support
//--------------------------------------------------------------------------
//
#define FILE_DEVICE_FAX 0x800B

#define FAX_IOCTL_CODE( fn, Access, ArgSize ) CTL_CODE( FILE_DEVICE_FAX, (0x800 + ArgSize + fn ), METHOD_BUFFERED, Access )

#define IOCTL_Fax_Start						FAX_IOCTL_CODE( 0, FILE_READ_ACCESS, ARG_VOID) // (void)
#define IOCTL_Fax_Stop						FAX_IOCTL_CODE( 1, FILE_READ_ACCESS, ARG_VOID) // (void)
#define IOCTL_Fax_Write						FAX_IOCTL_CODE( 2, FILE_READ_WRITE_ACCESS, ARG_DWORD) // (WORD *buf)
#define IOCTL_Fax_Read						FAX_IOCTL_CODE( 3, FILE_READ_ACCESS, ARG_VOID) // (void)

#define fnFax_Start							IOCTL_Fax_Start 
#define fnFax_Stop							IOCTL_Fax_Stop 
#define fnFax_Fax_Write						IOCTL_Fax_Write 
#define fnFax_Read							IOCTL_Fax_Read 

//==========================================================================
//--------------------------------------------------------------------------
//	FSK support
//--------------------------------------------------------------------------
//
#define FILE_DEVICE_FSK 0x800C

#define FSK_IOCTL_CODE( fn, Access, ArgSize ) CTL_CODE( FILE_DEVICE_FSK, (0x800 + ArgSize + fn ), METHOD_BUFFERED, Access )

#define IOCTL_FSK_SetMsgData				FSK_IOCTL_CODE( 0, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (BYTE*)

#define	fnFSK_SetMsgData					IOCTL_FSK_SetMsgData

//==========================================================================
//--------------------------------------------------------------------------
//	Tone support
//--------------------------------------------------------------------------
//
#define FILE_DEVICE_TONE 0x800D

#define TONE_IOCTL_CODE( fn, Access, ArgSize ) CTL_CODE( FILE_DEVICE_TONE, (0x800 + ArgSize + fn ), METHOD_BUFFERED, Access )

#define IOCTL_Tone_PlayToneCadence		TONE_IOCTL_CODE( 0, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (BYTE*)

#define	fnTone_PlayToneCadence			IOCTL_Tone_PlayToneCadence

//==========================================================================
//--------------------------------------------------------------------------
//	VxD support
//
//	NOTE: These names will be changed in the future to a generic 'driver'
//        naming convention.
//--------------------------------------------------------------------------
//
#define FILE_DEVICE_VXD 0x8001

#define VXD_IOCTL_CODE( fn, Access, ArgSize ) CTL_CODE( FILE_DEVICE_VXD, (0x800 + ArgSize + fn ), METHOD_BUFFERED, Access )

#define IOCTL_VxD_SetCallback			VXD_IOCTL_CODE( 0, FILE_READ_WRITE_ACCESS, ARG_VOID)	// (FARPROC pfnCallback) - Callback address
#define IOCTL_VxD_GetInterruptEvents	VXD_IOCTL_CODE( 1, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_VxD_EnableInterrupts		VXD_IOCTL_CODE( 2, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_VxD_DisableInterrupts		VXD_IOCTL_CODE( 3, FILE_READ_ACCESS, ARG_VOID)	// (void)
#define IOCTL_VxD_AddPerformanceStat	VXD_IOCTL_CODE( 4, FILE_READ_WRITE_ACCESS, ARG_DWORD)	// (LPPERF_STAT lpPerfStat)
#define IOCTL_VxD_GetVersion			VXD_IOCTL_CODE( 5, FILE_READ_ACCESS, ARG_VOID)	// (void)

#define fnVxD_SetCallback				IOCTL_VxD_SetCallback
#define fnVxD_GetInterruptEvents		IOCTL_VxD_GetInterruptEvents
#define fnVxD_EnableInterrupts			IOCTL_VxD_EnableInterrupts
#define fnVxD_DisableInterrupts			IOCTL_VxD_DisableInterrupts
#define fnVxD_AddPerformanceStat		IOCTL_VxD_AddPerformanceStat
#define fnVxD_GetVersion				IOCTL_VxD_GetVersion

#endif

//	eof: QTIoctl.h