- Implement setting / getting volume level
[reactos.git] / reactos / drivers / wdm / audio / legacy / wdmaud / wdmaud.h
index 55f663e..0b91e15 100644 (file)
@@ -33,28 +33,60 @@ typedef struct
 
 }WDMAUD_CLIENT, *PWDMAUD_CLIENT;
 
+typedef struct
+{
+    LIST_ENTRY Entry;
+    ULONG dwControlID;
+}MIXERCONTROL_DATA, *LPMIXERCONTROL_DATA;
+
+typedef struct
+{
+    MIXERCONTROL_DATA Header;
+    LONG SignedMinimum;
+    LONG SignedMaximum;
+    LONG SteppingDelta;
+    ULONG InputSteppingDelta;
+    ULONG ValuesCount;
+    PLONG Values;
+}MIXERVOLUME_DATA, *LPMIXERVOLUME_DATA;
+
+
+
 typedef struct
 {
     LIST_ENTRY Entry;
     ULONG PinId;
-    PFILE_OBJECT FileObject;
+    ULONG DeviceIndex;
     MIXERLINEW Line;
     LPMIXERCONTROLW LineControls;
+    PULONG          NodeIds;
+    LIST_ENTRY LineControlsExtraData;
 }MIXERLINE_EXT, *LPMIXERLINE_EXT;
 
 
 typedef struct
 {
-    HANDLE        hMixer;
-    PFILE_OBJECT  MixerFileObject;
-
     MIXERCAPSW    MixCaps;
 
     LIST_ENTRY    LineList;
-
+    ULONG ControlId;
 }MIXER_INFO, *LPMIXER_INFO;
 
 
+typedef struct
+{
+    LIST_ENTRY Entry;
+    ULONG FilterId;
+    ULONG PinId;
+    ULONG bInput;
+    union
+    {
+        WAVEOUTCAPSW OutCaps;
+        WAVEINCAPSW  InCaps;
+    }u;
+}WAVE_INFO, *LPWAVE_INFO;
+
+
 typedef struct
 {
     LIST_ENTRY Entry;
@@ -77,6 +109,12 @@ typedef struct
     ULONG MixerInfoCount;
     LPMIXER_INFO MixerInfo;
 
+    ULONG WaveInDeviceCount;
+    LIST_ENTRY WaveInList;
+
+    ULONG WaveOutDeviceCount;
+    LIST_ENTRY WaveOutList;
+
 
 }WDMAUD_DEVICE_EXTENSION, *PWDMAUD_DEVICE_EXTENSION;
 
@@ -86,6 +124,16 @@ typedef struct
     PIRP Irp;
 }CONTEXT_WRITE, *PCONTEXT_WRITE;
 
+NTSTATUS
+NTAPI
+OpenWavePin(
+    IN PWDMAUD_DEVICE_EXTENSION DeviceExtension,
+    IN ULONG FilterId,
+    IN ULONG PinId,
+    IN LPWAVEFORMATEX WaveFormatEx,
+    IN ACCESS_MASK DesiredAccess,
+    OUT PHANDLE PinHandle);
+
 NTSTATUS
 WdmAudRegisterDeviceInterface(
     IN PDEVICE_OBJECT PhysicalDeviceObject,
@@ -120,6 +168,14 @@ WdmAudControlOpenMixer(
     IN  PWDMAUD_DEVICE_INFO DeviceInfo,
     IN  PWDMAUD_CLIENT ClientInfo);
 
+NTSTATUS
+WdmAudControlOpenWave(
+    IN  PDEVICE_OBJECT DeviceObject,
+    IN  PIRP Irp,
+    IN  PWDMAUD_DEVICE_INFO DeviceInfo,
+    IN  PWDMAUD_CLIENT ClientInfo);
+
+
 ULONG
 GetNumOfMixerDevices(
     IN  PDEVICE_OBJECT DeviceObject);
@@ -148,6 +204,13 @@ WdmAudMixerCapabilities(
     IN  PWDMAUD_CLIENT ClientInfo,
     IN PWDMAUD_DEVICE_EXTENSION DeviceExtension);
 
+NTSTATUS
+WdmAudWaveCapabilities(
+    IN PDEVICE_OBJECT DeviceObject,
+    IN  PWDMAUD_DEVICE_INFO DeviceInfo,
+    IN  PWDMAUD_CLIENT ClientInfo,
+    IN PWDMAUD_DEVICE_EXTENSION DeviceExtension);
+
 NTSTATUS
 NTAPI
 WdmAudFrameSize(
@@ -192,5 +255,26 @@ NTSTATUS
 WdmAudMixerInitialize(
     IN PDEVICE_OBJECT DeviceObject);
 
+NTSTATUS
+NTAPI
+WdmAudWaveInitialize(
+    IN PDEVICE_OBJECT DeviceObject);
+
+NTSTATUS
+ClosePin(
+    IN  PWDMAUD_CLIENT ClientInfo,
+    IN  ULONG FilterId,
+    IN  ULONG PinId,
+    IN  SOUND_DEVICE_TYPE DeviceType);
+
+NTSTATUS
+InsertPinHandle(
+    IN  PWDMAUD_CLIENT ClientInfo,
+    IN  ULONG FilterId,
+    IN  ULONG PinId,
+    IN  SOUND_DEVICE_TYPE DeviceType,
+    IN  HANDLE PinHandle,
+    IN  ULONG FreeIndex);
+
 
 #endif