summaryrefslogtreecommitdiffstats
path: root/public/sdk/inc/ntddwave.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--public/sdk/inc/ntddwave.h128
1 files changed, 128 insertions, 0 deletions
diff --git a/public/sdk/inc/ntddwave.h b/public/sdk/inc/ntddwave.h
new file mode 100644
index 000000000..3f77a41af
--- /dev/null
+++ b/public/sdk/inc/ntddwave.h
@@ -0,0 +1,128 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddwave.h
+
+Abstract:
+
+ This include file defines all constants and types for
+ accessing an NT wave device.
+
+Author:
+
+ NigelThompson (NigelT) 17-May-91
+
+Revision History:
+
+--*/
+
+#ifndef _NTDDWAVE_
+#define _NTDDWAVE_
+
+#include <ntddsnd.h> // general sound stuff
+
+//
+// Device Name - this string is the name of the device. It is the name
+// that when added to the name of the root of the device tree and with
+// the device number appended, gives the name of the device required for
+// a call to NtOpenFile.
+// So for example, if the root is \Device and the Device type is
+// WaveIn and the device number is 2, the full name is \Device\WaveIn2
+//
+
+#define DD_WAVE_IN_DEVICE_NAME "\\Device\\WaveIn"
+#define DD_WAVE_IN_DEVICE_NAME_U L"\\Device\\WaveIn"
+#define DD_WAVE_OUT_DEVICE_NAME "\\Device\\WaveOut"
+#define DD_WAVE_OUT_DEVICE_NAME_U L"\\Device\\WaveOut"
+
+//
+// WAVE device driver IOCTL set
+//
+
+#define IOCTL_WAVE_QUERY_FORMAT CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_WAVE_SET_FORMAT CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0002, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_WAVE_GET_CAPABILITIES CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_WAVE_SET_STATE CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0004, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_WAVE_GET_STATE CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0005, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_WAVE_GET_POSITION CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0006, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_WAVE_SET_VOLUME CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0007, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_WAVE_GET_VOLUME CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0008, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_WAVE_SET_PITCH CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0009, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_WAVE_GET_PITCH CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x000A, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_WAVE_SET_PLAYBACK_RATE CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x000B, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_WAVE_GET_PLAYBACK_RATE CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x000C, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_WAVE_PLAY CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x000D, METHOD_IN_DIRECT, FILE_WRITE_ACCESS)
+#define IOCTL_WAVE_RECORD CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x000E, METHOD_OUT_DIRECT, FILE_WRITE_ACCESS)
+#define IOCTL_WAVE_BREAK_LOOP CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x000F, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_WAVE_SET_LOW_PRIORITY CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0010, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+
+//
+// IOCTLs used in the debug build only
+//
+
+#if DBG
+
+#define IOCTL_WAVE_SET_DEBUG_LEVEL CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0040, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#endif // DBG
+
+//
+// Wave position structure
+//
+
+typedef struct _WAVE_DD_POSITION {
+ ULONG SampleCount; // Number of sound samples
+ ULONG ByteCount; // Number of bytes (in SampleCount samples)
+} WAVE_DD_POSITION, *PWAVE_DD_POSITION;
+
+//
+// Wave volume structure
+//
+
+typedef struct _WAVE_DD_VOLUME {
+ ULONG Left;
+ ULONG Right;
+} WAVE_DD_VOLUME, *PWAVE_DD_VOLUME;
+
+#define WAVE_DD_MAX_VOLUME 0xFFFFFFFF // Maximum volume
+
+//
+// Wave pitch shift structure
+//
+
+typedef struct _WAVE_DD_PITCH {
+ ULONG Pitch; // fixed point value 1.0 = 0x10000
+} WAVE_DD_PITCH, *PWAVE_DD_PITCH;
+
+//
+// Wave playback rate structure
+//
+
+typedef struct _WAVE_DD_PLAYBACK_RATE {
+ ULONG Rate; // fixed point value 1.0 = 0x10000
+} WAVE_DD_PLAYBACK_RATE, *PWAVE_DD_PLAYBACK_RATE;
+
+//
+// State flags used to set the state of a driver
+//
+
+#define WAVE_DD_STOP 0x0001
+#define WAVE_DD_PLAY 0x0002 // output devices only
+#define WAVE_DD_RECORD 0x0003 // input devices only
+#define WAVE_DD_RESET 0x0004
+
+//
+// States returned by the get state ioctl
+//
+
+#define WAVE_DD_IDLE 0x0000
+#define WAVE_DD_STOPPED 0x0001 // stopped
+#define WAVE_DD_PLAYING 0x0002 // output devices only
+#define WAVE_DD_RECORDING 0x0003 // input devices only
+
+#endif // _NTDDWAVE_
+
+