Some preliminary stubbing of the Kernel Streaming components (portcls being moved from other directory)
Added: trunk/reactos/drivers/multimedia/
Added: trunk/reactos/drivers/multimedia/README
Added: trunk/reactos/drivers/multimedia/avtest/
Added: trunk/reactos/drivers/multimedia/avtest/avtest.xml
Added: trunk/reactos/drivers/multimedia/avtest/entry.c
Added: trunk/reactos/drivers/multimedia/directory.xml
Added: trunk/reactos/drivers/multimedia/ks/
Added: trunk/reactos/drivers/multimedia/ks/avstream.c
Added: trunk/reactos/drivers/multimedia/ks/connect.c
Added: trunk/reactos/drivers/multimedia/ks/ks.def
Added: trunk/reactos/drivers/multimedia/ks/ks.xml
Added: trunk/reactos/drivers/multimedia/ks/stubs.c
Added: trunk/reactos/drivers/multimedia/ks.h
Added: trunk/reactos/drivers/multimedia/wdmaud/
Added: trunk/reactos/drivers/multimedia/wdmaud/entry.c
Added: trunk/reactos/drivers/multimedia/wdmaud/wdmaud.xml

Added: trunk/reactos/drivers/multimedia/README
--- trunk/reactos/drivers/multimedia/README	2005-11-24 13:22:13 UTC (rev 19524)
+++ trunk/reactos/drivers/multimedia/README	2005-11-24 13:30:51 UTC (rev 19525)
@@ -0,0 +1,17 @@
+This is a directory for the kernel streaming components, along with multimedia
+kernel-mode drivers.
+
+Platform components:
+- ks.sys     Kernel Streaming (and AvStream)
+- sysaudio   Filter graph builder (topology?)
+- portcls    Port Class
+- wdmaud     Kernel-mode portion of the MME (Win 3.1-style) driver
+
+Optional drivers:
+- sndblst    Sound Blaster (+ Pro / 16) compatible driver
+- mpu401     MPU-401 MIDI compatible driver
+
+Much of this code exists only as stubs for future implementation.
+
+-Andrew Greenwood 
+
Property changes on: trunk/reactos/drivers/multimedia/README
___________________________________________________________________
Name: svn:executable
   + *

Added: trunk/reactos/drivers/multimedia/avtest/avtest.xml
--- trunk/reactos/drivers/multimedia/avtest/avtest.xml	2005-11-24 13:22:13 UTC (rev 19524)
+++ trunk/reactos/drivers/multimedia/avtest/avtest.xml	2005-11-24 13:30:51 UTC (rev 19525)
@@ -0,0 +1,8 @@
+<module name="avtest" type="kernelmodedriver" installbase="system32/drivers" installname="avtest.sys" warnings="true">
+	<include base="avtest">.</include>
+	<include base="avtest">..</include>
+	<define name="__USE_W32API" />
+	<library>ks</library>
+	<library>ntoskrnl</library>
+	<file>entry.c</file>
+</module>
Property changes on: trunk/reactos/drivers/multimedia/avtest/avtest.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: trunk/reactos/drivers/multimedia/avtest/entry.c
--- trunk/reactos/drivers/multimedia/avtest/entry.c	2005-11-24 13:22:13 UTC (rev 19524)
+++ trunk/reactos/drivers/multimedia/avtest/entry.c	2005-11-24 13:30:51 UTC (rev 19525)
@@ -0,0 +1,83 @@
+#include <debug.h>
+#include <ks.h>
+
+/* Where do we go? */
+#ifndef SIZEOF_ARRAY
+	#define SIZEOF_ARRAY(array) \
+		(sizeof(array) / sizeof(array[0]))
+#endif
+
+/* Not in the DDK but hey! */
+#define DEFINE_KSFILTER_DISPATCH(name) \
+	const KSFILTER_DISPATCH name =
+
+/* To be put in KS.H */
+#define DEFINE_KSFILTER_DESCRIPTOR(name) \
+	const KSFILTER_DESCRIPTOR name =
+
+#define DEFINE_KSFILTER_DESCRIPTOR_TABLE(name) \
+	const KSFILTER_DESCRIPTOR* const name[] =
+
+
+
+NTSTATUS FilterCreate(
+	IN OUT PKSFILTER Filter,
+	IN PIRP Irp)
+{
+	return STATUS_SUCCESS;
+}
+
+NTSTATUS FilterClose(
+	IN OUT PKSFILTER Filter,
+	IN PIRP Irp)
+{
+	return STATUS_SUCCESS;
+}
+
+NTSTATUS Process(
+	IN PKSFILTER Filter,
+	IN PKSPROCESSPIN_INDEXENTRY ProcessPinsIndex)
+{
+	return STATUS_SUCCESS;
+}
+
+
+DEFINE_KSFILTER_DISPATCH(FilterDispatch)
+{
+	FilterCreate,
+	FilterClose,
+	Process,
+	NULL	// Reset
+};
+
+DEFINE_KSFILTER_DESCRIPTOR(FilterDesc)
+{
+};
+
+DEFINE_KSFILTER_DESCRIPTOR_TABLE(FilterDescs)
+{
+	&FilterDesc
+};
+
+
+
+const KSDEVICE_DESCRIPTOR DeviceDescriptor =
+{
+	NULL,
+	SIZEOF_ARRAY(FilterDescs),
+	FilterDescs
+};
+
+
+/* Funcs */
+
+NTSTATUS STDCALL
+DriverEntry(
+	IN PDRIVER_OBJECT DriverObject,
+	IN PUNICODE_STRING RegistryPathName)
+{
+	DPRINT1("AVStream test component loaded!\n");
+
+	return KsInitializeDriver(DriverObject, RegistryPathName,
+							&DeviceDescriptor);
+}
Property changes on: trunk/reactos/drivers/multimedia/avtest/entry.c
___________________________________________________________________
Name: svn:executable
   + *

Added: trunk/reactos/drivers/multimedia/directory.xml
--- trunk/reactos/drivers/multimedia/directory.xml	2005-11-24 13:22:13 UTC (rev 19524)
+++ trunk/reactos/drivers/multimedia/directory.xml	2005-11-24 13:30:51 UTC (rev 19525)
@@ -0,0 +1,24 @@
+<!--
+    Kernel Streaming
+
+    This is mostly incomplete at the moment.
+-->
+
+<directory name="portcls">
+    <xi:include href="portcls/portcls.xml" />
+</directory>
+
+<!--directory name="wdmaud">
+    <xi:include href="wdmaud/wdmaud.xml" />
+</directory-->
+
+<!--directory name="ks">
+	<xi:include href="ks/ks.xml" />
+</directory>
+<directory name="portcls">
+	<xi:include href="portcls/portcls.xml" />
+</directory>
+<directory name="avtest">
+	<xi:include href="avtest/avtest.xml" />
+</directory-->
+
Property changes on: trunk/reactos/drivers/multimedia/directory.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: trunk/reactos/drivers/multimedia/ks/avstream.c
--- trunk/reactos/drivers/multimedia/ks/avstream.c	2005-11-24 13:22:13 UTC (rev 19524)
+++ trunk/reactos/drivers/multimedia/ks/avstream.c	2005-11-24 13:30:51 UTC (rev 19525)
@@ -0,0 +1,16 @@
+#include <ks.h>
+#include <debug.h>
+
+
+NTSTATUS NTAPI
+KsInitializeDriver(
+	IN PDRIVER_OBJECT DriverObject,
+	IN PUNICODE_STRING RegistryPath,
+	IN const KSDEVICE_DESCRIPTOR* Descriptor OPTIONAL)
+{
+	DPRINT("KsInitializeDriver\n");
+
+	/* This should set up IRPs etc. */
+
+	return STATUS_NOT_IMPLEMENTED;
+}
Property changes on: trunk/reactos/drivers/multimedia/ks/avstream.c
___________________________________________________________________
Name: svn:executable
   + *

Added: trunk/reactos/drivers/multimedia/ks/connect.c
--- trunk/reactos/drivers/multimedia/ks/connect.c	2005-11-24 13:22:13 UTC (rev 19524)
+++ trunk/reactos/drivers/multimedia/ks/connect.c	2005-11-24 13:30:51 UTC (rev 19525)
@@ -0,0 +1,57 @@
+/*
+	ReactOS Kernel Streaming component
+
+	Written (or rather, stubbed!) by Andrew Greenwood
+	September 2005
+*/
+
+#include <ks.h>
+
+KSDDKAPI NTSTATUS NTAPI
+KsCreatePin(
+	IN HANDLE FilterHandle,
+	IN PKSPIN_CONNECT Connect,
+	IN ACCESS_MASK DesiredAccess,
+	OUT PHANDLE ConnectionHandle)
+{
+}
+
+KSDDKAPI NTSTATUS NTAPI
+KsHandleSizedListQuery(
+	IN PIRP Irp,
+	IN ULONG DataItemsCount,
+	IN ULONG DataItemSize,
+	IN const VOID* DataItems)
+{
+}
+
+KSDDKAPI NTSTATUS NTAPI
+KsPinDataIntersection(
+	IN PIRP Irp,
+	IN PKSP_PIN Pin,
+	OUT PVOID Data,
+	IN ULONG DescriptorsCount,
+	IN const KSPIN_DESCRIPTOR* Descriptor,
+	IN PFNKSINTERSECTHANDLER IntersectHandler)
+{
+}
+
+KSDDKAPI NTSTATUS NTAPI
+KsPinPropertyHandler(
+	IN PIRP Irp,
+	IN PKSPROPERTY Property,
+	IN OUT PVOID Data,
+	IN ULONG DescriptorsCount,
+	IN const KSPIN_DESCRIPTOR* Descriptor)
+{
+}
+
+KSDDKAPI NTSTATUS NTAPI
+KsValidateConnectRequest(
+	IN PIRP Irp,
+	IN ULONG DescriptorsCount,
+	IN KSPIN_DESCRIPTOR* Descriptor,
+	OUT PKSPIN_CONNECT* Connect)
+{
+}
+
Property changes on: trunk/reactos/drivers/multimedia/ks/connect.c
___________________________________________________________________
Name: svn:executable
   + *

Added: trunk/reactos/drivers/multimedia/ks/ks.def
--- trunk/reactos/drivers/multimedia/ks/ks.def	2005-11-24 13:22:13 UTC (rev 19524)
+++ trunk/reactos/drivers/multimedia/ks/ks.def	2005-11-24 13:30:51 UTC (rev 19525)
@@ -0,0 +1,7 @@
+; ks.sys - Kernel Streaming
+
+LIBRARY ks.sys
+
+EXPORTS
+KsInitializeDriver@12
+
Property changes on: trunk/reactos/drivers/multimedia/ks/ks.def
___________________________________________________________________
Name: svn:executable
   + *

Added: trunk/reactos/drivers/multimedia/ks/ks.xml
--- trunk/reactos/drivers/multimedia/ks/ks.xml	2005-11-24 13:22:13 UTC (rev 19524)
+++ trunk/reactos/drivers/multimedia/ks/ks.xml	2005-11-24 13:30:51 UTC (rev 19525)
@@ -0,0 +1,9 @@
+<module name="ks" type="kernelmodedriver" installbase="system32/drivers" installname="ks.sys" warnings="true">
+	<include base="ks">.</include>
+	<include base="ks">..</include>
+	<importlibrary definition="ks.def" />
+	<library>ntoskrnl</library>
+	<define name="__USE_W32API" />
+	<!--file>connect.c</file-->
+	<file>avstream.c</file>
+</module>
Property changes on: trunk/reactos/drivers/multimedia/ks/ks.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: trunk/reactos/drivers/multimedia/ks/stubs.c
--- trunk/reactos/drivers/multimedia/ks/stubs.c	2005-11-24 13:22:13 UTC (rev 19524)
+++ trunk/reactos/drivers/multimedia/ks/stubs.c	2005-11-24 13:30:51 UTC (rev 19525)
@@ -0,0 +1,112 @@
+#include "ks.h"
+
+
+typedef struct _KSDEVICE_DESCRIPTOR
+{
+} KSDEVICE_DESCRIPTOR, *PKSDEVICE_DESCRIPTOR;
+
+typedef struct _KSDEVICE
+{
+} KSDEVICE, *PKSDEVICE;
+
+
+NTSTATUS
+KsAddDevice(
+	IN PDRIVER_OBJECT DriverObject,
+	IN PDEVICE_OBJECT PhysicalDeviceObject)
+{
+	/* KsCreateDevice(DriverObject, PhysicalDeviceObject, ...); */
+
+	return STATUS_NOT_IMPLEMENTED;
+}
+
+
+
+NTSTATUS
+KsInitializeDriver(
+	IN PDRIVER_OBJECT DriverObject,
+	IN PUNICODE_STRING RegistryPath,
+	IN const KSDEVICE_DESCRIPTOR* Descriptor OPTIONAL)
+{
+	return STATUS_NOT_IMPLEMENTED;
+}
+
+NTSTATUS
+KsInitializeDevice(
+	IN PDEVICE_OBJECT FunctionalDeviceObject,
+	IN PDEVICE_OBJECT PhysicalDeviceObject,
+	IN PDEVICE_OBJECT NextDeviceObject,
+	IN const KSDEVICE_DESCRIPTOR* Descriptor OPTIONAL)
+{
+	return STATUS_NOT_IMPLEMENTED;
+}
+
+
+NTSTATUS
+KsCreateDevice(
+	IN PDRIVER_OBJECT DriverObject,
+	IN PDEVICE_OBJECT PhysicalDeviceObject,
+	IN const KSDEVICE_DESCRIPTOR* Descriptor OPTIONAL,
+	IN ULONG ExtensionSize OPTIONAL,
+	OUT PKSDEVICE* Device OPTIONAL)
+{
+	return STATUS_NOT_IMPLEMENTED;
+}
+
+
+NTSTATUS
+KsTerminateDevice(
+	IN PDEVICE_OBJECT DeviceObject)
+{
+	return STATUS_NOT_IMPLEMENTED;
+}
+
+
+
+VOID
+KsAcquireDevice(
+	IN PKSDEVICE Device)
+{
+	/* Acquire device mutex */
+}
+
+VOID
+KsReleaseDevice(
+	IN PKSDEVICE Device)
+{
+	/* Releases device mutex and exits critical region */
+}
+
+VOID
+KsAcquireControl(
+	IN PVOID Object)
+{
+	/* Acquire filter control mutex for Object */
+	/* Object should be pointed to a KSFILTER or KSPIN */
+}
+
+
+PKSDEVICE
+KsGetDevice(
+	IN PVOID Object)
+{
+	/* ? */
+	return 0;
+}
+
+// inline
+/*
+PKSDEVICE __inline
+KsFilterGetDevice(
+	IN PKSFILTER Filter)
+{
+	return KsGetDevice((PVOID) Filter);
+}
+
+PKSDEVICE __inline
+KsPinGetDevice(
+	IN PKSPIN Pin)
+{
+	return KsGetDevice((PVOID) Pin);
+}
+*/
Property changes on: trunk/reactos/drivers/multimedia/ks/stubs.c
___________________________________________________________________
Name: svn:executable
   + *

Added: trunk/reactos/drivers/multimedia/ks.h
--- trunk/reactos/drivers/multimedia/ks.h	2005-11-24 13:22:13 UTC (rev 19524)
+++ trunk/reactos/drivers/multimedia/ks.h	2005-11-24 13:30:51 UTC (rev 19525)
@@ -0,0 +1,352 @@
+/*
+	Kernel Streaming
+
+	Part of the ReactOS project
+	(See ReactOS licence for usage restrictions/permissions)
+
+	This file created by Andrew Greenwood.
+
+	Started September 12th, 2005.
+
+	You may notice some structs are empty. These are just placeholders and
+	should be fleshed-out when functions are implemented that require the
+	use of such structs.
+*/
+
+#ifndef __INCLUDES_REACTOS_KS_H__
+#define __INCLUDES_REACTOS_KS_H__
+
+#include <ddk/ntddk.h>
+
+/* What's this meant to be?! */
+#define KSDDKAPI
+
+
+/* Some unimplemented structs :) */
+
+typedef struct _BUS_INTERFACE_REFERENCE
+{
+} BUS_INTERFACE_REFERENCE, *PBUS_INTERFACE_REFERENCE;
+
+typedef struct _KSPIN_DESCRIPTOR
+{
+} KSPIN_DESCRIPTOR, *PKSPIN_DESCRIPTOR;
+
+typedef struct _KSPIN_DESCRIPTOR_EX
+{
+} KSPIN_DESCRIPTOR_EX, *PKSPIN_DESCRIPTOR_EX;
+
+
+/* This is just to shut the compiler up so DON'T USE IT! */
+typedef void (*PFNKSINTERSECTHANDLER)(void);
+
+
+
+typedef struct _KS_COMPRESSION
+{
+	ULONG RatioNumerator;
+	ULONG RatioDenominator;
+	ULONG RatioConstantMargin;
+} KS_COMPRESSION, *PKS_COMPRESSION;
+
+typedef struct _KS_FRAMING_RANGE
+{
+	ULONG MinFrameSize;
+	ULONG MaxFrameSize;
+	ULONG Stepping;
+} KS_FRAMING_RANGE, *PKS_FRAMING_RANGE;
+
+typedef struct _KS_FRAMING_RANGE_WEIGHTED
+{
+	/* Obsolete */
+} KS_FRAMING_RANGE_WEIGHTED, *PKS_FRAMING_RANGE_WEIGHTED;
+
+typedef struct _KS_FRAMING_ITEM
+{
+	GUID MemoryType;
+	GUID BusType;
+	ULONG MemoryFlags;
+	ULONG BusFlags;
+	ULONG Flags;
+	ULONG Frames;
+	ULONG FileAlignment;
+	ULONG MemoryTypeWeight;
+	KS_FRAMING_RANGE PhysicalRange;
+	KS_FRAMING_RANGE_WEIGHTED FramingRange;
+} KS_FRAMING_ITEM, *PKS_FRAMING_ITEM;
+
+
+
+typedef struct _KSALLOCATOR_FRAMING
+{
+	union
+	{
+		ULONG OptionFlags;
+		ULONG RequirementsFlags;
+	};
+	POOL_TYPE PoolType;
+	ULONG Frames;
+	ULONG FrameSize;
+	ULONG FileAlignment;
+	ULONG Reserved;
+} KSALLOCATOR_FRAMING, *PKSALLOCATOR_FRAMING;
+
+typedef struct _KSALLOCATOR_FRAMING_EX
+{
+	ULONG CountItems;
+	ULONG PinFlags;
+	KS_COMPRESSION OutputCompression;
+	ULONG PinWeight;
+	KS_FRAMING_ITEM FramingItem[1];
+} KSALLOCATOR_FRAMING_EX, *PKSALLOCATOR_FRAMING_EX;
+
+
+
+typedef struct _KSATTRIBUTE
+{
+	ULONG Size;
+	ULONG Flags;
+	GUID Attribute;
+} KSATTRIBUTE, *PKSATTRIBUTE;
+
+
+/*
+typedef struct _KSBUFFER_ITEM
+{
+	KSDPC_ITEM DpcItem;
+	LIST_ENTRY BufferList;
+} KSBUFFER_ITEM, *PKSBUFFER_ITEM;
+*/
+
+
+typedef struct _KSIDENTIFIER
+{
+	GUID Set;
+	ULONG Id;
+	ULONG Flags;
+} KSIDENTIFIER;
+
+typedef KSIDENTIFIER KSPIN_MEDIUM, *PKSPIN_MEDIUM;
+typedef KSIDENTIFIER KSPIN_INTERFACE, *PKSPIN_INTERFACE;
+typedef KSIDENTIFIER KSPROPERTY, *PKSPROPERTY;
+
+typedef struct _KSPRIORITY
+{
+	ULONG PriorityClass;
+	ULONG PrioritySubClass;
+} KSPRIORITY, *PKSPRIORITY;
+
+typedef struct _KSPIN_CONNECT
+{
+	KSPIN_INTERFACE Interface;
+	KSPIN_MEDIUM Medium;
+	ULONG PinId;
+	HANDLE PinToHandle;
+	KSPRIORITY Priority;
+} KSPIN_CONNECT, *PKSPIN_CONNECT;
+
+typedef struct _KSP_PIN
+{
+	KSPROPERTY Property;
+	ULONG PinId;
+	ULONG Reserved;
+} KSP_PIN, *PKSP_PIN;
+
+
+typedef struct _KSDEVICE
+{
+	/* TODO */
+} KSDEVICE, *PKSDEVICE;
+
+
+/* Device dispatch routines */
+
+typedef NTSTATUS
+	(*PFNKSDEVICECREATE)
+		(
+			IN PKSDEVICE Device
+		);
+
+typedef NTSTATUS 
+	(*PFNKSDEVICEPNPSTART)
+		(
+			IN PKSDEVICE Device,
+			IN PIRP Irp,
+			IN PCM_RESOURCE_LIST TranslatedResourceList OPTIONAL,
+			IN PCM_RESOURCE_LIST UntranslatedResourceList OPTIONAL
+		);
+
+typedef NTSTATUS
+	(*PFNKSDEVICE)
+		(
+			IN PKSDEVICE Device
+		);
+
+typedef NTSTATUS
+	(*PFNKSDEVICEIRP)
+		(
+			IN PKSDEVICE Device,
+			IN PIRP Irp
+		);
+
+typedef VOID
+	(*PFNKSDEVICEIRPVOID)
+		(
+			IN PKSDEVICE Device,
+			IN PIRP Irp
+		);
+
+typedef NTSTATUS
+	(*PFNKSDEVICEQUERYCAPABILITIES)
+		(
+			IN PKSDEVICE Device,
+			IN PIRP Irp,
+			IN OUT PDEVICE_CAPABILITIES Capabilities
+		);
+
+typedef NTSTATUS
+	(*PFNKSDEVICEQUERYPOWER)
+		(
+			IN PKSDEVICE Device,
+			IN PIRP Irp,
+			IN DEVICE_POWER_STATE DeviceTo,
+			IN DEVICE_POWER_STATE DeviceFrom,
+			IN SYSTEM_POWER_STATE SystemTo,
+			IN SYSTEM_POWER_STATE SystemFrom,
+			IN POWER_ACTION Action
+		);
+
+typedef VOID
+	(*PFNKSDEVICESETPOWER)
+		(
+			IN PKSDEVICE Device,
+			IN PIRP Irp,
+			IN DEVICE_POWER_STATE To,
+			IN DEVICE_POWER_STATE From
+		);
+
+typedef struct _KSDEVICE_DISPATCH
+{
+	PFNKSDEVICECREATE Add;
+	PFNKSDEVICEPNPSTART Start;
+	PFNKSDEVICE PostStart;
+	PFNKSDEVICEIRP QueryStop;
+	PFNKSDEVICEIRPVOID CancelStop;
+	PFNKSDEVICEIRPVOID Stop;
+	PFNKSDEVICEIRP QueryRemove;
+	PFNKSDEVICEIRPVOID CancelRemove;
+	PFNKSDEVICEIRPVOID Remove;
+	PFNKSDEVICEQUERYCAPABILITIES QueryCapabilities;
+	PFNKSDEVICEIRPVOID SurpriseRemoval;
+	PFNKSDEVICEQUERYPOWER Querypower;
+	PFNKSDEVICESETPOWER SetPower;
+} KSDEVICE_DISPATCH, *PKSDEVICE_DISPATCH;
+
+
+
+/* Some more unimplemented stuff */
+
+typedef struct _KSFILTER
+{
+} KSFILTER, *PKSFILTER;
+
+typedef struct _KSPROCESSPIN_INDEXENTRY
+{
+} KSPROCESSPIN_INDEXENTRY, *PKSPROCESSPIN_INDEXENTRY;
+
+
+/* Filter dispatch routines */
+
+typedef NTSTATUS
+	(*PFNKSFILTERIRP)
+		(
+			IN PKSFILTER Filter,
+			IN PIRP Irp
+		);
+
+typedef NTSTATUS
+	(*PFNKSFILTERPROCESS)
+		(
+			IN PKSFILTER FIlter,
+			IN PKSPROCESSPIN_INDEXENTRY ProcessPinsIndex
+		);
+
+typedef NTSTATUS
+	(*PFNKSFILTERVOID)
+		(
+			IN PKSFILTER Filter
+		);
+
+typedef struct _KSFILTER_DISPATCH
+{
+	PFNKSFILTERIRP Create;
+	PFNKSFILTERIRP Close;
+	PFNKSFILTERPROCESS Process;
+	PFNKSFILTERVOID Reset;
+} KSFILTER_DISPATCH, *PKSFILTER_DISPATCH;
+
+
+
+/* TODO! */
+
+typedef struct _KSAUTOMATION_TABLE
+{
+} KSAUTOMATION_TABLE, *PKSAUTOMATION_TABLE;
+
+typedef struct _KSNODE_DESCRIPTOR
+{
+} KSNODE_DESCRIPTOR, *PKSNODE_DESCRIPTOR;
+
+typedef struct _KSTOPOLOGY_CONNECTION
+{
+} KSTOPOLOGY_CONNECTION, *PKSTOPOLOGY_CONNECTION;
+
+typedef struct _KSCOMPONENTID
+{
+} KSCOMPONENTID, *PKSCOMPONENTID;
+
+
+/* Descriptors (filter, device, ...) */
+
+typedef struct _KSFILTER_DESCRIPTOR
+{
+	const KSFILTER_DISPATCH* Dispatch;
+	const KSAUTOMATION_TABLE* AutomationTable;
+	ULONG Version;
+	ULONG Flags;
+	const GUID* ReferenceGuid;
+	ULONG PinDescriptorsCount;
+	ULONG PinDescriptorSize;
+	const KSPIN_DESCRIPTOR_EX* PinDescriptors;
+	ULONG CategoriesCount;
+	const GUID* Categories;
+	ULONG NodeDescriptorsCount;
+	ULONG NodeDescriptorSize;
+	const KSNODE_DESCRIPTOR* NodeDescriptors;
+	ULONG ConnectionsCount;
+	const KSTOPOLOGY_CONNECTION* Connections;
+	const KSCOMPONENTID* ComponentId;
+} KSFILTER_DESCRIPTOR, *PKSFILTER_DESCRIPTOR;
+
+typedef struct _KSDEVICE_DESCRIPTOR
+{
+	const KSDEVICE_DISPATCH* Dispatch;
+	ULONG FilterDescriptorsCount;
+	const KSFILTER_DESCRIPTOR* const* FilterDescriptors;
+	ULONG Version; /* Doesn't appear to be in the documentation */
+} KSDEVICE_DESCRIPTOR, *PKSDEVICE_DESCRIPTOR;
+
+
+
+
+/*
+	API functions
+*/
+
+NTSTATUS NTAPI
+KsInitializeDriver(
+	IN PDRIVER_OBJECT DriverObject,
+	IN PUNICODE_STRING RegistryPath,
+	IN const KSDEVICE_DESCRIPTOR* Descriptor OPTIONAL);
+
+#endif
Property changes on: trunk/reactos/drivers/multimedia/ks.h
___________________________________________________________________
Name: svn:executable
   + *

Added: trunk/reactos/drivers/multimedia/wdmaud/entry.c
--- trunk/reactos/drivers/multimedia/wdmaud/entry.c	2005-11-24 13:22:13 UTC (rev 19524)
+++ trunk/reactos/drivers/multimedia/wdmaud/entry.c	2005-11-24 13:30:51 UTC (rev 19525)
@@ -0,0 +1,59 @@
+/*
+    This doesn't do much yet...
+*/
+
+#include <debug.h>
+
+#define InPassiveIrql() \
+    (KeGetCurrentIrql() == IRQL_PASSIVE_LEVEL)
+
+
+NTSTATUS AudioDeviceControl(
+    IN PDEVICE_OBJECT device,
+    IN PIRP irp
+)
+{
+    return STATUS_SUCCESS;
+}
+
+
+NTSTATUS AudioAddDevice(
+    IN PDRIVER_OBJECT driver,
+    IN PDEVICE_OBJECT device
+)
+{
+    DPRINT("AudioAddDevice called\n");
+
+    if ( ! IsPassiveIrql() )
+    {
+        /* What do we do?! */
+        /* RtlAssert("FAIL", __FILE__, __LINE__, "?" */
+    }
+    
+    return STATUS_SUCCESS;
+}
+
+VOID AudioUnload(
+    IN PDRIVER_OBJECT driver
+)
+{
+    DPRINT("AudioUnload called\n");
+}
+
+
+
+NTSTATUS STDCALL
+DriverEntry(
+    IN PDRIVER_OBJECT driver,
+    IN PUNICODE_STRING registry_path
+)
+{
+    DPRINT("Wdmaud.sys loaded\n");
+
+    driver->DriverExtension->AddDevice = AudioAddDevice;
+    driver->DriverUnload = AudioUnload;
+
+    driver->MajorFunction[IRP_MJ_DEVICE_CONTROL] = AudioDeviceControl;
+
+    return STATUS_SUCCESS;
+}
Property changes on: trunk/reactos/drivers/multimedia/wdmaud/entry.c
___________________________________________________________________
Name: svn:executable
   + *

Added: trunk/reactos/drivers/multimedia/wdmaud/wdmaud.xml
--- trunk/reactos/drivers/multimedia/wdmaud/wdmaud.xml	2005-11-24 13:22:13 UTC (rev 19524)
+++ trunk/reactos/drivers/multimedia/wdmaud/wdmaud.xml	2005-11-24 13:30:51 UTC (rev 19525)
@@ -0,0 +1,7 @@
+<module name="wdmaud_kernel" type="kernelmodedriver" installbase="system32/drivers" installname="wdmaud.sys" warnings="true">
+	<include base="wdmaud">.</include>
+	<include base="wdmaud">..</include>
+	<define name="__USE_W32API" />
+	<library>ntoskrnl</library>
+	<file>entry.c</file>
+</module>
Property changes on: trunk/reactos/drivers/multimedia/wdmaud/wdmaud.xml
___________________________________________________________________
Name: svn:executable
   + *