mirror of
https://github.com/reactos/reactos.git
synced 2025-04-18 19:47:14 +00:00
Some preliminary stubbing of the Kernel Streaming components (portcls being moved from other directory)
svn path=/trunk/; revision=19525
This commit is contained in:
parent
aa70297ede
commit
b0d0ca15fb
12 changed files with 751 additions and 0 deletions
17
reactos/drivers/multimedia/README
Executable file
17
reactos/drivers/multimedia/README
Executable file
|
@ -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
|
||||
|
8
reactos/drivers/multimedia/avtest/avtest.xml
Executable file
8
reactos/drivers/multimedia/avtest/avtest.xml
Executable file
|
@ -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>
|
83
reactos/drivers/multimedia/avtest/entry.c
Executable file
83
reactos/drivers/multimedia/avtest/entry.c
Executable file
|
@ -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);
|
||||
}
|
24
reactos/drivers/multimedia/directory.xml
Executable file
24
reactos/drivers/multimedia/directory.xml
Executable file
|
@ -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-->
|
||||
|
352
reactos/drivers/multimedia/ks.h
Executable file
352
reactos/drivers/multimedia/ks.h
Executable file
|
@ -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
|
16
reactos/drivers/multimedia/ks/avstream.c
Executable file
16
reactos/drivers/multimedia/ks/avstream.c
Executable file
|
@ -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;
|
||||
}
|
57
reactos/drivers/multimedia/ks/connect.c
Executable file
57
reactos/drivers/multimedia/ks/connect.c
Executable file
|
@ -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)
|
||||
{
|
||||
}
|
||||
|
7
reactos/drivers/multimedia/ks/ks.def
Executable file
7
reactos/drivers/multimedia/ks/ks.def
Executable file
|
@ -0,0 +1,7 @@
|
|||
; ks.sys - Kernel Streaming
|
||||
|
||||
LIBRARY ks.sys
|
||||
|
||||
EXPORTS
|
||||
KsInitializeDriver@12
|
||||
|
9
reactos/drivers/multimedia/ks/ks.xml
Executable file
9
reactos/drivers/multimedia/ks/ks.xml
Executable file
|
@ -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>
|
112
reactos/drivers/multimedia/ks/stubs.c
Executable file
112
reactos/drivers/multimedia/ks/stubs.c
Executable file
|
@ -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);
|
||||
}
|
||||
*/
|
59
reactos/drivers/multimedia/wdmaud/entry.c
Executable file
59
reactos/drivers/multimedia/wdmaud/entry.c
Executable file
|
@ -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;
|
||||
}
|
7
reactos/drivers/multimedia/wdmaud/wdmaud.xml
Executable file
7
reactos/drivers/multimedia/wdmaud/wdmaud.xml
Executable file
|
@ -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>
|
Loading…
Reference in a new issue