- Make ks and portcls compile under msvc
[reactos.git] / reactos / drivers / wdm / audio / backpln / portcls / private.h
index a858390..0b3df66 100644 (file)
@@ -7,9 +7,11 @@
 #ifndef PORTCLS_PRIVATE_H
 #define PORTCLS_PRIVATE_H
 
+//#define _KS_NO_ANONYMOUS_STRUCTURES_
+
 #include <ntddk.h>
 #include <portcls.h>
-#define YDEBUG
+#define NDEBUG
 #include <debug.h>
 
 #include <dmusicks.h>
 #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);
 
@@ -88,11 +84,81 @@ NTSTATUS NewPortFilterWaveCyclic(
 NTSTATUS NewPortPinWaveCyclic(
     OUT IPortPinWaveCyclic ** OutPin);
 
+NTSTATUS 
+NewPortFilterWavePci(
+    OUT IPortFilterWavePci ** OutFilter);
+
+NTSTATUS NewPortPinWavePci(
+    OUT IPortPinWavePci ** OutPin);
+
+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(
@@ -109,27 +175,10 @@ FreeItem(
     IN PVOID Item,
     IN ULONG Tag);
 
-NTSTATUS StringFromCLSID(
-    const CLSID *id,
-    LPWSTR idstr);
-
-
-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
+NewIrpQueue(
+    IN IIrpQueue **Queue);
 
 NTSTATUS
 NTAPI
@@ -145,24 +194,6 @@ PinPropertyHandler(
     IN PKSIDENTIFIER  Request,
     IN OUT PVOID  Data);
 
-typedef struct
-{
-    KSDEVICE_HEADER KsDeviceHeader;
-    PDEVICE_OBJECT PhysicalDeviceObject;
-    PDEVICE_OBJECT PrevDeviceObject;
-    PCPFNSTARTDEVICE StartDevice;
-    IAdapterPowerManagement * AdapterPowerManagement;
-    ULONG MaxSubDevices;
-    KSOBJECT_CREATE_ITEM * CreateItems;
-
-
-    IResourceList* resources;
-    LIST_ENTRY SubDeviceList;
-    LIST_ENTRY PhysicalConnectionList;
-
-} PCLASS_DEVICE_EXTENSION, *PPCLASS_DEVICE_EXTENSION;
-
-
 NTSTATUS
 NTAPI
 PcDmaMasterDescription(
@@ -226,5 +257,122 @@ 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
+NewIUnregisterSubdevice(
+    OUT PUNREGISTERSUBDEVICE *OutDevice);
+
+NTSTATUS
+NTAPI
+NewIUnregisterPhysicalConnection(
+    OUT PUNREGISTERPHYSICALCONNECTION *OutConnection);
+
+#define DEFINE_KSPROPERTY_PINPROPOSEDATAFORMAT(PinSet,\
+    PropGeneral, PropInstances, PropIntersection)\
+DEFINE_KSPROPERTY_TABLE(PinSet) {\
+    DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances),\
+    DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral),\
+    DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral),\
+    DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),\
+    DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),\
+    DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),\
+    DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),\
+    DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),\
+    DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),\
+    DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral),\
+    DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(PropGeneral),\
+    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