- Make ks and portcls compile under msvc
[reactos.git] / reactos / drivers / wdm / audio / backpln / portcls / private.h
index 7ff4554..0b3df66 100644 (file)
@@ -7,6 +7,8 @@
 #ifndef PORTCLS_PRIVATE_H
 #define PORTCLS_PRIVATE_H
 
+//#define _KS_NO_ANONYMOUS_STRUCTURES_
+
 #include <ntddk.h>
 #include <portcls.h>
 #define NDEBUG
 #define TAG(A, B, C, D) (ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24))
 #define TAG_PORTCLASS TAG('P', 'C', 'L', 'S')
 
-#ifdef _MSC_VER
-  #define STDCALL
-  #define DDKAPI
-#endif
+#define ASSERT_IRQL(x) ASSERT(KeGetCurrentIrql() <= (x))
 
 NTSTATUS
 NTAPI
@@ -61,9 +60,6 @@ NTSTATUS NewMiniportFmSynth(
     OUT PMINIPORT* OutMiniport,
     IN  REFCLSID ClassId);
 
-NTSTATUS NewPortMidi(
-    OUT PPORT* OutPort);
-
 NTSTATUS NewPortDMus(
     OUT PPORT* OutPort);
 
@@ -99,12 +95,70 @@ PDEVICE_OBJECT
 GetDeviceObjectFromWaveCyclic(
     IPortWavePci* iface);
 
+PDEVICE_OBJECT
+GetDeviceObjectFromPortWavePci(
+    IPortWavePci* iface);
+
+PMINIPORTWAVEPCI
+GetWavePciMiniport(
+    PPORTWAVEPCI Port);
+
+NTSTATUS 
+NewPortFilterDMus(
+    OUT PPORTFILTERDMUS * OutFilter);
+
+NTSTATUS NewPortPinDMus(
+    OUT PPORTPINDMUS * OutPin);
+
+VOID
+GetDMusMiniport(
+    IN IPortDMus * iface, 
+    IN PMINIPORTDMUS * Miniport,
+    IN PMINIPORTMIDI * MidiMiniport);
+
+#if (NTDDI_VERSION >= NTDDI_VISTA)
+
+NTSTATUS 
+NewPortFilterWaveRT(
+    OUT IPortFilterWaveRT ** OutFilter);
+
+NTSTATUS NewPortPinWaveRT(
+    OUT IPortPinWaveRT ** OutPin);
+
+PMINIPORTWAVERT
+GetWaveRTMiniport(
+    IN IPortWaveRT* iface);
+
+PDEVICE_OBJECT
+GetDeviceObjectFromPortWaveRT(
+    IPortWaveRT* iface);
+
+NTSTATUS
+NewPortWaveRTStream(
+    PPORTWAVERTSTREAM *OutStream);
+
+NTSTATUS
+NewPortWaveRT(
+    OUT PPORT* OutPort);
+
+
+#endif
+
+NTSTATUS 
+NewPortFilterTopology(
+    OUT IPortFilterTopology ** OutFilter);
+
+PMINIPORTTOPOLOGY
+GetTopologyMiniport(
+    PPORTTOPOLOGY Port);
 
 NTSTATUS
 NTAPI
 NewDispatchObject(
     IN PIRP Irp,
-    IN IIrpTarget * Target);
+    IN IIrpTarget * Target,
+    IN ULONG ObjectCreateItemCount,
+    IN PKSOBJECT_CREATE_ITEM ObjectCreateItem);
 
 PMINIPORTWAVECYCLIC
 GetWaveCyclicMiniport(
@@ -126,24 +180,6 @@ NTAPI
 NewIrpQueue(
     IN IIrpQueue **Queue);
 
-
-typedef struct
-{
-    LIST_ENTRY Entry;
-    KSOBJECT_HEADER ObjectHeader;
-}SUBDEVICE_ENTRY;
-
-typedef struct
-{
-    LIST_ENTRY Entry;
-    ISubdevice * FromSubDevice;
-    LPWSTR FromUnicodeString;
-    ULONG FromPin;
-    ISubdevice * ToSubDevice;
-    LPWSTR ToUnicodeString;
-    ULONG ToPin;
-}PHYSICAL_CONNECTION;
-
 NTSTATUS
 NTAPI
 TopologyPropertyHandler(
@@ -158,34 +194,6 @@ PinPropertyHandler(
     IN PKSIDENTIFIER  Request,
     IN OUT PVOID  Data);
 
-typedef struct
-{
-    KSDEVICE_HEADER KsDeviceHeader;
-    PDEVICE_OBJECT PhysicalDeviceObject;
-    PDEVICE_OBJECT PrevDeviceObject;
-    PCPFNSTARTDEVICE StartDevice;
-    ULONG_PTR Unused[4];
-    IAdapterPowerManagement * AdapterPowerManagement;
-    ULONG MaxSubDevices;
-    KSOBJECT_CREATE_ITEM * CreateItems;
-
-    PIO_WORKITEM StartWorkItem;
-    PIO_WORKITEM StopWorkItem;
-    PIO_WORKITEM CloseWorkItem;
-
-    IResourceList* resources;
-    LIST_ENTRY SubDeviceList;
-    LIST_ENTRY PhysicalConnectionList;
-
-} PCLASS_DEVICE_EXTENSION, *PPCLASS_DEVICE_EXTENSION;
-
-
-typedef struct
-{
-    KSSTREAM_HEADER Header;
-    PIRP Irp;
-}CONTEXT_WRITE, *PCONTEXT_WRITE;
-
 NTSTATUS
 NTAPI
 PcDmaMasterDescription(
@@ -249,26 +257,39 @@ PcPropertyHandler(
     IN PIRP Irp,
     IN PSUBDEVICE_DESCRIPTOR Descriptor);
 
+NTSTATUS
+NTAPI
+FastPropertyHandler(
+    IN PFILE_OBJECT  FileObject,
+    IN PKSPROPERTY UNALIGNED  Property,
+    IN ULONG  PropertyLength,
+    IN OUT PVOID UNALIGNED  Data,
+    IN ULONG  DataLength,
+    OUT PIO_STATUS_BLOCK  IoStatus,
+    IN ULONG  PropertySetsCount,
+    IN const KSPROPERTY_SET *PropertySet,
+    IN PSUBDEVICE_DESCRIPTOR Descriptor,
+    IN ISubdevice *SubDevice);
+
 PDEVICE_OBJECT
 GetDeviceObject(
     IPortWaveCyclic* iface);
 
+VOID
+NTAPI
+PcIoTimerRoutine(
+    IN PDEVICE_OBJECT  DeviceObject,
+    IN PVOID  Context);
+
 NTSTATUS
 NTAPI
-IPortWavePciStream_AddMapping(
-    IN IPortWavePciStream *iface,
-    IN PUCHAR Buffer,
-    IN ULONG BufferSize,
-    IN PIRP Irp);
+NewIUnregisterSubdevice(
+    OUT PUNREGISTERSUBDEVICE *OutDevice);
 
 NTSTATUS
 NTAPI
-NewIPortWavePciStream(
-    OUT PPORTWAVEPCISTREAM *Stream,
-    IN KSPIN_CONNECT *ConnectDetails,
-    IN PKSDATAFORMAT DataFormat,
-    IN PDEVICE_OBJECT DeviceObject,
-    IN ULONG FrameSize);
+NewIUnregisterPhysicalConnection(
+    OUT PUNREGISTERPHYSICALCONNECTION *OutConnection);
 
 #define DEFINE_KSPROPERTY_PINPROPOSEDATAFORMAT(PinSet,\
     PropGeneral, PropInstances, PropIntersection)\
@@ -287,4 +308,71 @@ DEFINE_KSPROPERTY_TABLE(PinSet) {\
     DEFINE_KSPROPERTY_ITEM_PIN_PROPOSEDATAFORMAT(PropGeneral)\
 }
 
+typedef struct
+{
+    LIST_ENTRY Entry;
+    UNICODE_STRING SymbolicLink;
+}SYMBOLICLINK_ENTRY, *PSYMBOLICLINK_ENTRY;
+
+
+typedef struct
+{
+    LIST_ENTRY Entry;
+    ISubdevice *SubDevice;
+    UNICODE_STRING Name;
+    LIST_ENTRY SymbolicLinkList;
+}SUBDEVICE_ENTRY, *PSUBDEVICE_ENTRY;
+
+typedef struct
+{
+    LIST_ENTRY Entry;
+    ISubdevice * FromSubDevice;
+    UNICODE_STRING FromUnicodeString;
+    ULONG FromPin;
+    ISubdevice * ToSubDevice;
+    UNICODE_STRING ToUnicodeString;
+    ULONG ToPin;
+}PHYSICAL_CONNECTION, *PPHYSICAL_CONNECTION;
+
+typedef struct
+{
+    KSDEVICE_HEADER KsDeviceHeader;
+    PDEVICE_OBJECT PhysicalDeviceObject;
+    PDEVICE_OBJECT PrevDeviceObject;
+    PCPFNSTARTDEVICE StartDevice;
+    ULONG_PTR Unused[4];
+    IAdapterPowerManagement * AdapterPowerManagement;
+    ULONG MaxSubDevices;
+    KSOBJECT_CREATE_ITEM * CreateItems;
+
+    IResourceList* resources;
+    LIST_ENTRY SubDeviceList;
+    LIST_ENTRY PhysicalConnectionList;
+
+    LIST_ENTRY TimerList;
+    KSPIN_LOCK TimerListLock;
+
+} PCLASS_DEVICE_EXTENSION, *PPCLASS_DEVICE_EXTENSION;
+
+
+typedef struct
+{
+    KSSTREAM_HEADER Header;
+    PIRP Irp;
+}CONTEXT_WRITE, *PCONTEXT_WRITE;
+
+typedef struct
+{
+    PVOID Pin;
+    PIO_WORKITEM WorkItem;
+    PIRP Irp;
+}CLOSESTREAM_CONTEXT, *PCLOSESTREAM_CONTEXT;
+
+typedef struct
+{
+    LIST_ENTRY Entry;
+    PIO_TIMER_ROUTINE pTimerRoutine;
+    PVOID Context;
+}TIMER_CONTEXT, *PTIMER_CONTEXT;
+
 #endif