diff --git a/reactos/drivers/drivers.rbuild b/reactos/drivers/drivers.rbuild
index b14abb51ce3..64494d84238 100644
--- a/reactos/drivers/drivers.rbuild
+++ b/reactos/drivers/drivers.rbuild
@@ -38,6 +38,9 @@
+
+
+
diff --git a/reactos/drivers/wdm/audio/backpln/portcls/miniport/IMiniport.cpp b/reactos/drivers/wdm/audio/backpln/portcls/Miniport.cpp
similarity index 96%
rename from reactos/drivers/wdm/audio/backpln/portcls/miniport/IMiniport.cpp
rename to reactos/drivers/wdm/audio/backpln/portcls/Miniport.cpp
index f3a5e6c27d6..26769c62722 100644
--- a/reactos/drivers/wdm/audio/backpln/portcls/miniport/IMiniport.cpp
+++ b/reactos/drivers/wdm/audio/backpln/portcls/Miniport.cpp
@@ -10,7 +10,7 @@
http://www.osronline.com/ddkx/stream/audmp-routines_64vn.htm
*/
-#include "../private.h"
+#include "private.h"
#include
NTSTATUS
diff --git a/reactos/drivers/wdm/audio/backpln/portcls/miniport/IMiniportDMus.cpp b/reactos/drivers/wdm/audio/backpln/portcls/MiniportDMus.cpp
similarity index 100%
rename from reactos/drivers/wdm/audio/backpln/portcls/miniport/IMiniportDMus.cpp
rename to reactos/drivers/wdm/audio/backpln/portcls/MiniportDMus.cpp
diff --git a/reactos/drivers/wdm/audio/backpln/portcls/miniport/IMiniportMidi.cpp b/reactos/drivers/wdm/audio/backpln/portcls/MiniportMidi.cpp
similarity index 97%
rename from reactos/drivers/wdm/audio/backpln/portcls/miniport/IMiniportMidi.cpp
rename to reactos/drivers/wdm/audio/backpln/portcls/MiniportMidi.cpp
index 6b2e71d4bc1..16e688ac0c8 100644
--- a/reactos/drivers/wdm/audio/backpln/portcls/miniport/IMiniportMidi.cpp
+++ b/reactos/drivers/wdm/audio/backpln/portcls/MiniportMidi.cpp
@@ -9,7 +9,7 @@
REFERENCE:
http://www.osronline.com/ddkx/stream/audmp-routines_1fsj.htm
*/
-#include "../private.h"
+#include "private.h"
#include
NTSTATUS
diff --git a/reactos/drivers/wdm/audio/backpln/portcls/miniport/IMiniportTopology.cpp b/reactos/drivers/wdm/audio/backpln/portcls/MiniportTopology.cpp
similarity index 100%
rename from reactos/drivers/wdm/audio/backpln/portcls/miniport/IMiniportTopology.cpp
rename to reactos/drivers/wdm/audio/backpln/portcls/MiniportTopology.cpp
diff --git a/reactos/drivers/wdm/audio/backpln/portcls/miniport/IMiniportWaveCyclic.cpp b/reactos/drivers/wdm/audio/backpln/portcls/MiniportWaveCyclic.cpp
similarity index 100%
rename from reactos/drivers/wdm/audio/backpln/portcls/miniport/IMiniportWaveCyclic.cpp
rename to reactos/drivers/wdm/audio/backpln/portcls/MiniportWaveCyclic.cpp
diff --git a/reactos/drivers/wdm/audio/backpln/portcls/miniport/IMiniportWavePci.cpp b/reactos/drivers/wdm/audio/backpln/portcls/MiniportWavePci.cpp
similarity index 100%
rename from reactos/drivers/wdm/audio/backpln/portcls/miniport/IMiniportWavePci.cpp
rename to reactos/drivers/wdm/audio/backpln/portcls/MiniportWavePci.cpp
diff --git a/reactos/drivers/wdm/audio/backpln/portcls/port/IPort.cpp b/reactos/drivers/wdm/audio/backpln/portcls/Port.cpp
similarity index 100%
rename from reactos/drivers/wdm/audio/backpln/portcls/port/IPort.cpp
rename to reactos/drivers/wdm/audio/backpln/portcls/Port.cpp
diff --git a/reactos/drivers/wdm/audio/backpln/portcls/miniport/factory.cpp b/reactos/drivers/wdm/audio/backpln/portcls/PortDMus.cpp
similarity index 100%
rename from reactos/drivers/wdm/audio/backpln/portcls/miniport/factory.cpp
rename to reactos/drivers/wdm/audio/backpln/portcls/PortDMus.cpp
diff --git a/reactos/drivers/wdm/audio/backpln/portcls/port/IPortMidi.cpp b/reactos/drivers/wdm/audio/backpln/portcls/PortMidi.cpp
similarity index 97%
rename from reactos/drivers/wdm/audio/backpln/portcls/port/IPortMidi.cpp
rename to reactos/drivers/wdm/audio/backpln/portcls/PortMidi.cpp
index f2b12170a78..6690434c5fd 100644
--- a/reactos/drivers/wdm/audio/backpln/portcls/port/IPortMidi.cpp
+++ b/reactos/drivers/wdm/audio/backpln/portcls/PortMidi.cpp
@@ -11,12 +11,14 @@
IPortMidi inherits from IPort. This file contains specific
extensions.
*/
-#include "../private.h"
+#include "private.h"
#include
#include
#include "port.h"
+#if 0
+
/*
IPort Methods
*/
@@ -72,3 +74,5 @@ CPortMidi::RegisterServiceGroup(IN PSERVICEGROUP ServiceGroup)
{
return STATUS_UNSUCCESSFUL;
}
+
+#endif
diff --git a/reactos/drivers/wdm/audio/backpln/portcls/port/IPortTopology.cpp b/reactos/drivers/wdm/audio/backpln/portcls/PortTopology.cpp
similarity index 100%
rename from reactos/drivers/wdm/audio/backpln/portcls/port/IPortTopology.cpp
rename to reactos/drivers/wdm/audio/backpln/portcls/PortTopology.cpp
diff --git a/reactos/drivers/wdm/audio/backpln/portcls/port/IPortWaveCyclic.cpp b/reactos/drivers/wdm/audio/backpln/portcls/PortWaveCyclic.cpp
similarity index 100%
rename from reactos/drivers/wdm/audio/backpln/portcls/port/IPortWaveCyclic.cpp
rename to reactos/drivers/wdm/audio/backpln/portcls/PortWaveCyclic.cpp
diff --git a/reactos/drivers/wdm/audio/backpln/portcls/port/IPortWavePci.cpp b/reactos/drivers/wdm/audio/backpln/portcls/PortWavePci.cpp
similarity index 100%
rename from reactos/drivers/wdm/audio/backpln/portcls/port/IPortWavePci.cpp
rename to reactos/drivers/wdm/audio/backpln/portcls/PortWavePci.cpp
diff --git a/reactos/drivers/wdm/audio/backpln/portcls/helper/ResourceList.c b/reactos/drivers/wdm/audio/backpln/portcls/ResourceList.c
similarity index 99%
rename from reactos/drivers/wdm/audio/backpln/portcls/helper/ResourceList.c
rename to reactos/drivers/wdm/audio/backpln/portcls/ResourceList.c
index df7275dcd0d..14caaa00959 100644
--- a/reactos/drivers/wdm/audio/backpln/portcls/helper/ResourceList.c
+++ b/reactos/drivers/wdm/audio/backpln/portcls/ResourceList.c
@@ -9,7 +9,7 @@
* 27 Jan 07 Created
*/
-#include "../private.h"
+#include "private.h"
#include
#include
diff --git a/reactos/drivers/wdm/audio/backpln/portcls/port/IPortDMus.cpp b/reactos/drivers/wdm/audio/backpln/portcls/miniport_factory.cpp
similarity index 100%
rename from reactos/drivers/wdm/audio/backpln/portcls/port/IPortDMus.cpp
rename to reactos/drivers/wdm/audio/backpln/portcls/miniport_factory.cpp
diff --git a/reactos/drivers/wdm/audio/backpln/portcls/port/port.h b/reactos/drivers/wdm/audio/backpln/portcls/port.h
similarity index 94%
rename from reactos/drivers/wdm/audio/backpln/portcls/port/port.h
rename to reactos/drivers/wdm/audio/backpln/portcls/port.h
index dd950b3844c..c10e47951e7 100644
--- a/reactos/drivers/wdm/audio/backpln/portcls/port/port.h
+++ b/reactos/drivers/wdm/audio/backpln/portcls/port.h
@@ -17,9 +17,11 @@
#ifndef PORT_PRIVATE_H
#define PORT_PRIVATE_H
+#include "private.h"
#include
#include
+#if 0
typedef struct CPort
{
union
@@ -31,5 +33,6 @@ typedef struct CPort
LONG m_ref_count;
PUNKNOWN m_outer_unknown;
} CPort;
+#endif
#endif
diff --git a/reactos/drivers/wdm/audio/backpln/portcls/port/factory.c b/reactos/drivers/wdm/audio/backpln/portcls/port_factory.c
similarity index 98%
rename from reactos/drivers/wdm/audio/backpln/portcls/port/factory.c
rename to reactos/drivers/wdm/audio/backpln/portcls/port_factory.c
index eb6f9d35053..49e864ad930 100644
--- a/reactos/drivers/wdm/audio/backpln/portcls/port/factory.c
+++ b/reactos/drivers/wdm/audio/backpln/portcls/port_factory.c
@@ -7,7 +7,7 @@
#define INITGUID
-#include "../private.h"
+#include "private.h"
#include
#include
#include
diff --git a/reactos/drivers/wdm/audio/backpln/portcls/portcls.rbuild b/reactos/drivers/wdm/audio/backpln/portcls/portcls.rbuild
index c0879b77bc9..76bcc0dad4f 100644
--- a/reactos/drivers/wdm/audio/backpln/portcls/portcls.rbuild
+++ b/reactos/drivers/wdm/audio/backpln/portcls/portcls.rbuild
@@ -1,11 +1,19 @@
- -fno-exceptions
- -fno-rtti
-
+
+
+
+
+
+
+
../include
+
ntoskrnl
ks
drmk
@@ -15,13 +23,28 @@
irp.c
drm.c
stubs.c
+ undoc.c
- helper/ResourceList.c
+ ResourceList.c
- port/factory.c
+ port_factory.c
+ Port.cpp
+ PortDMus.cpp
+ PortMidi.cpp
+ PortTopology.cpp
+ PortWaveCyclic.cpp
+ PortWavePci.cpp
+
+ miniport_factory.cpp
+ Miniport.cpp
+ MiniportDMus.cpp
+ MiniportMidi.cpp
+ MiniportTopology.cpp
+ MiniportWaveCyclic.cpp
+ MiniportWavePci.cpp
portcls.rc
diff --git a/reactos/drivers/wdm/audio/backpln/portcls/undoc.c b/reactos/drivers/wdm/audio/backpln/portcls/undoc.c
index fbb6091a52f..29cd2bf3cd4 100644
--- a/reactos/drivers/wdm/audio/backpln/portcls/undoc.c
+++ b/reactos/drivers/wdm/audio/backpln/portcls/undoc.c
@@ -2,6 +2,7 @@
Undocumented PortCls exports
*/
+#include "private.h"
#include
PORTCLASSAPI NTSTATUS
diff --git a/reactos/drivers/wdm/audio/directory.rbuild b/reactos/drivers/wdm/audio/directory.rbuild
index 3616a73f4a7..cf2749841ac 100644
--- a/reactos/drivers/wdm/audio/directory.rbuild
+++ b/reactos/drivers/wdm/audio/directory.rbuild
@@ -9,4 +9,7 @@
-
\ No newline at end of file
+
+
+
+
diff --git a/reactos/drivers/wdm/audio/sysaudio/main.c b/reactos/drivers/wdm/audio/sysaudio/main.c
new file mode 100644
index 00000000000..9a70aefa8e4
--- /dev/null
+++ b/reactos/drivers/wdm/audio/sysaudio/main.c
@@ -0,0 +1,132 @@
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS Kernel Streaming
+ * FILE: drivers/wdm/audio/sysaudio/main.c
+ * PURPOSE: System Audio graph builder
+ * PROGRAMMER: Andrew Greenwood
+ *
+ * HISTORY:
+ * 8 Jul 07 Started basic implementation
+ */
+
+#include
+/* #include */
+#include
+
+NTSTATUS
+NTAPI
+SysAudio_Create(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PIRP Irp)
+{
+ DPRINT("SysAudio_Create called\n");
+
+ /* TODO */
+
+ /* Complete the request */
+ Irp->IoStatus.Status = STATUS_SUCCESS;
+ Irp->IoStatus.Information = 0;
+ IoCompleteRequest(Irp, IO_NO_INCREMENT);
+ return STATUS_SUCCESS;
+}
+
+VOID
+NTAPI
+SysAudio_Unload(IN PDRIVER_OBJECT DriverObject)
+{
+ PDEVICE_OBJECT DeviceObject;
+
+ DPRINT("SysAudio_Unload called\n");
+
+ /* Get DO and DE */
+ DeviceObject = DriverObject->DeviceObject;
+/* DeviceExtension = DeviceObject->DeviceExtension;*/
+
+ /* Delete the object */
+ IoDeleteDevice(DeviceObject);
+}
+
+#if 0
+VOID
+NTAPI
+SysAudio_StartIo(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PIRP Irp)
+{
+ /* TODO */
+
+ DPRINT("SysAudio_StartIo called\n");
+
+ /* Complete the request and start the next packet */
+ Irp->IoStatus.Status = Status;
+ Irp->IoStatus.Information = 0;
+ IoStartNextPacket(DeviceObject, TRUE);
+ IoCompleteRequest(Irp, IO_NO_INCREMENT);
+}
+#endif
+
+NTSTATUS NTAPI
+SysAudio_AddDevice(
+ IN PDRIVER_OBJECT DriverObject,
+ IN PDEVICE_OBJECT PhysicalDeviceObject)
+{
+ NTSTATUS status;
+ UNICODE_STRING DeviceName = RTL_CONSTANT_STRING(L"\\Device\\sysaudio");
+ UNICODE_STRING SymlinkName = RTL_CONSTANT_STRING(L"\\DosDevices\\sysaudio");
+ PDEVICE_OBJECT DeviceObject;
+
+ DPRINT("SysAudio_AddDevice called\n");
+
+ status = IoCreateDevice(DriverObject,
+ 0, /* Extension size */
+ &DeviceName,
+ FILE_DEVICE_SOUND, /* is this right? */
+ 0, /* Characteristics */
+ FALSE,
+ &DeviceObject);
+
+ if ( ! NT_SUCCESS(status) )
+ {
+ DPRINT("Failed to create \\Device\\sysaudio !\n");
+ return status;
+ }
+
+ status = IoCreateSymbolicLink(&SymlinkName, &DeviceName);
+
+ if ( ! NT_SUCCESS(status) )
+ {
+ IoDeleteDevice(DeviceObject);
+
+ DPRINT("Failed to create \\DosDevices\\sysaudio symlink!\n");
+ return status;
+ }
+
+ DPRINT("Device created successfully\n");
+
+ return STATUS_SUCCESS;
+}
+
+NTSTATUS NTAPI
+DriverEntry(
+ IN PDRIVER_OBJECT DriverObject,
+ IN PUNICODE_STRING RegistryPath)
+{
+ DPRINT("System audio graph builder (sysaudio) started\n");
+
+ DriverObject->DriverExtension->AddDevice = SysAudio_AddDevice;
+
+ DriverObject->MajorFunction[IRP_MJ_CREATE] = SysAudio_Create;
+
+/* We'd want to handle this but does KS need to know? */
+/* DriverObject->MajorFunction[IRP_MJ_PNP] = KsDefaultDispatchPnp;*/
+
+/* We don't want to handle this though - pass to KS */
+/* DriverObject->MajorFunction[IRP_MJ_POWER] = KsDefaultDispatchPower;*/
+
+ DriverObject->DriverUnload = SysAudio_Unload;
+/* DriverObject->DriverStartIo = SysAudio_StartIo; */
+
+ /* Hmm, shouldn't KS.SYS be involved in some way? */
+
+ return STATUS_SUCCESS;
+}
diff --git a/reactos/drivers/wdm/audio/sysaudio/sysaudio.rbuild b/reactos/drivers/wdm/audio/sysaudio/sysaudio.rbuild
new file mode 100644
index 00000000000..ad480031e3b
--- /dev/null
+++ b/reactos/drivers/wdm/audio/sysaudio/sysaudio.rbuild
@@ -0,0 +1,11 @@
+
+ .
+ ntoskrnl
+
+
+
+
+ main.c
+
+ sysaudio.rc
+
diff --git a/reactos/drivers/wdm/audio/sysaudio/sysaudio.rc b/reactos/drivers/wdm/audio/sysaudio/sysaudio.rc
new file mode 100644
index 00000000000..f3821b5a968
--- /dev/null
+++ b/reactos/drivers/wdm/audio/sysaudio/sysaudio.rc
@@ -0,0 +1,5 @@
+#define REACTOS_VERSION_DLL
+#define REACTOS_STR_FILE_DESCRIPTION "System audio graph builder\0"
+#define REACTOS_STR_INTERNAL_NAME "portcls\0"
+#define REACTOS_STR_ORIGINAL_FILENAME "portcls.sys\0"
+#include