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