#ifndef WDMAUD_H__
#define WDMAUD_H__
+#include <pseh/pseh2.h>
#include <ntddk.h>
#include <portcls.h>
#include <ks.h>
-#define YDEBUG
+#define NDEBUG
#include <debug.h>
#include <ksmedia.h>
+#include <mmsystem.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <wchar.h>
-
-#ifndef MAXPNAMELEN
-#define MAXPNAMELEN 32
-#endif
-
-#ifndef WAVEOUTCAPS
+#include "interface.h"
typedef struct
{
- USHORT wMid;
- USHORT wPid;
- ULONG vDriverVersion;
- WCHAR szPname[MAXPNAMELEN];
- ULONG dwFormats;
- USHORT wChannels;
- USHORT wReserved1;
- ULONG dwSupport;
-} WAVEOUTCAPS;
-
-#endif
-
-#ifndef AUXCAPS
-
-typedef struct {
- USHORT wMid;
- USHORT wPid;
- ULONG vDriverVersion;
- WCHAR szPname[MAXPNAMELEN];
- USHORT wTechnology;
- USHORT wReserved1;
- ULONG dwSupport;
-} AUXCAPS;
-
-#endif
-
-#ifndef WAVEINCAPS
-
-typedef struct
-{
- USHORT wMid;
- USHORT wPid;
- ULONG vDriverVersion;
- WCHAR szPname[MAXPNAMELEN];
- ULONG dwFormats;
- USHORT wChannels;
- USHORT wReserved1;
-} WAVEINCAPS;
-#endif
+ HANDLE Handle;
+ SOUND_DEVICE_TYPE Type;
+ ULONG FilterId;
+ ULONG PinId;
+}WDMAUD_HANDLE, *PWDMAUD_HANDLE;
-#include "interface.h"
typedef struct
{
HANDLE hProcess;
- HANDLE hSysAudio;
- PFILE_OBJECT FileObject;
+ ULONG NumPins;
+ WDMAUD_HANDLE * hPins;
}WDMAUD_CLIENT, *PWDMAUD_CLIENT;
KSPIN_LOCK Lock;
ULONG NumSysAudioDevices;
LIST_ENTRY SysAudioDeviceList;
+ HANDLE hSysAudio;
+ PFILE_OBJECT FileObject;
}WDMAUD_DEVICE_EXTENSION, *PWDMAUD_DEVICE_EXTENSION;
+typedef struct
+{
+ KSSTREAM_HEADER Header;
+ PIRP Irp;
+}CONTEXT_WRITE, *PCONTEXT_WRITE;
+
NTSTATUS
WdmAudRegisterDeviceInterface(
IN PDEVICE_OBJECT PhysicalDeviceObject,
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
+NTSTATUS
+NTAPI
+WdmAudWrite(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PIRP Irp);
+
+NTSTATUS
+WdmAudControlOpenMixer(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PIRP Irp,
+ IN PWDMAUD_DEVICE_INFO DeviceInfo,
+ IN PWDMAUD_CLIENT ClientInfo);
+
+ULONG
+GetNumOfMixerDevices(
+ IN PDEVICE_OBJECT DeviceObject);
+
+NTSTATUS
+SetIrpIoStatus(
+ IN PIRP Irp,
+ IN NTSTATUS Status,
+ IN ULONG Length);
+
+NTSTATUS
+WdmAudOpenSysAudioDevice(
+ IN LPWSTR DeviceName,
+ OUT PHANDLE Handle);
+
+NTSTATUS
+FindProductName(
+ IN LPWSTR PnpName,
+ IN ULONG ProductNameSize,
+ OUT LPWSTR ProductName);
+
+NTSTATUS
+WdmAudMixerCapabilities(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PWDMAUD_DEVICE_INFO DeviceInfo,
+ IN PWDMAUD_CLIENT ClientInfo);
+
#endif