[PORTCLS]
[reactos.git] / reactos / drivers / wdm / audio / backpln / portcls / interfaces.hpp
index b7d9f84..8e3f705 100644 (file)
@@ -11,10 +11,10 @@ DEFINE_GUID(IID_IIrpTargetFactory, 0xB4C90A62, 0x5791, 0x11D0, 0xF9, 0x86, 0x00,
  *****************************************************************************
  */
 
-#define IMP_IIrpTarget                                      \
+#define IMP_IIrpTarget                                     \
     STDMETHODIMP_(NTSTATUS) NewIrpTarget(THIS_             \
         OUT struct IIrpTarget **OutTarget,                 \
-        IN WCHAR * Name,                                   \
+        IN PCWSTR Name,                                    \
         IN PUNKNOWN Unknown,                               \
         IN POOL_TYPE PoolType,                             \
         IN PDEVICE_OBJECT DeviceObject,                    \
@@ -25,23 +25,23 @@ DEFINE_GUID(IID_IIrpTargetFactory, 0xB4C90A62, 0x5791, 0x11D0, 0xF9, 0x86, 0x00,
         IN PDEVICE_OBJECT DeviceObject,                    \
         IN PIRP Irp);                                      \
                                                            \
-    STDMETHODIMP_(NTSTATUS) Read(THIS_                       \
+    STDMETHODIMP_(NTSTATUS) Read(THIS_                     \
         IN PDEVICE_OBJECT DeviceObject,                    \
-        IN PIRP Irp);                                  \
+        IN PIRP Irp);                                      \
                                                            \
-    STDMETHODIMP_(NTSTATUS) Write(THIS_                      \
+    STDMETHODIMP_(NTSTATUS) Write(THIS_                    \
         IN PDEVICE_OBJECT DeviceObject,                    \
-        IN PIRP Irp);                                  \
+        IN PIRP Irp);                                      \
                                                            \
-    STDMETHODIMP_(NTSTATUS) Flush(THIS_                      \
+    STDMETHODIMP_(NTSTATUS) Flush(THIS_                    \
         IN PDEVICE_OBJECT DeviceObject,                    \
-        IN PIRP Irp);                                  \
+        IN PIRP Irp);                                      \
                                                            \
-    STDMETHODIMP_(NTSTATUS) Close(THIS_                      \
+    STDMETHODIMP_(NTSTATUS) Close(THIS_                    \
         IN PDEVICE_OBJECT DeviceObject,                    \
-        IN PIRP Irp);                                  \
+        IN PIRP Irp);                                      \
                                                            \
-    STDMETHODIMP_(NTSTATUS) QuerySecurity(THIS_           \
+    STDMETHODIMP_(NTSTATUS) QuerySecurity(THIS_            \
         IN PDEVICE_OBJECT DeviceObject,                    \
         IN PIRP Irp);                                      \
                                                            \
@@ -83,7 +83,7 @@ DEFINE_GUID(IID_IIrpTargetFactory, 0xB4C90A62, 0x5791, 0x11D0, 0xF9, 0x86, 0x00,
 #define DEFINE_ABSTRACT_IRPTARGET()                        \
     STDMETHOD_(NTSTATUS, NewIrpTarget)(THIS_               \
         OUT struct IIrpTarget **OutTarget,                 \
-        IN WCHAR * Name,                                   \
+        IN PCWSTR Name,                                    \
         IN PUNKNOWN Unknown,                               \
         IN POOL_TYPE PoolType,                             \
         IN PDEVICE_OBJECT DeviceObject,                    \
@@ -106,7 +106,7 @@ DEFINE_GUID(IID_IIrpTargetFactory, 0xB4C90A62, 0x5791, 0x11D0, 0xF9, 0x86, 0x00,
         IN PDEVICE_OBJECT DeviceObject,                    \
         IN PIRP Irp)PURE;                                  \
                                                            \
-    STDMETHOD_(NTSTATUS, Close)(THIS_                      \
+    virtual NTSTATUS Close(                      \
         IN PDEVICE_OBJECT DeviceObject,                    \
         IN PIRP Irp)PURE;                                  \
                                                            \
@@ -118,7 +118,7 @@ DEFINE_GUID(IID_IIrpTargetFactory, 0xB4C90A62, 0x5791, 0x11D0, 0xF9, 0x86, 0x00,
         IN PDEVICE_OBJECT DeviceObject,                    \
         IN PIRP Irp)PURE;                                  \
                                                            \
-    STDMETHOD_(BOOLEAN, FastDeviceIoControl)(THIS_        \
+    STDMETHOD_(BOOLEAN, FastDeviceIoControl)(THIS_         \
         IN PFILE_OBJECT FileObject,                        \
         IN BOOLEAN Wait,                                   \
         IN PVOID InputBuffer,                              \
@@ -161,6 +161,8 @@ DECLARE_INTERFACE_(IIrpTarget, IUnknown)
     DEFINE_ABSTRACT_IRPTARGET()
 };
 
+typedef IIrpTarget *PIRPTARGET;
+
 /*****************************************************************************
  * ISubdevice
  *****************************************************************************
@@ -199,25 +201,27 @@ typedef struct
     PIN_INSTANCE_INFO * Instances;
 }KSPIN_FACTORY;
 
-typedef struct
-{
-    ULONG MaxKsPropertySetCount;
-    ULONG FreeKsPropertySetOffset;
-    PKSPROPERTY_SET Properties;
-}KSPROPERTY_SET_LIST;
-
 typedef struct
 {
     ULONG InterfaceCount;
     GUID *Interfaces;
     KSPIN_FACTORY Factory;
-    KSPROPERTY_SET_LIST FilterPropertySet;
+    ULONG FilterPropertySetCount;
+    PKSPROPERTY_SET FilterPropertySet;
+
+    ULONG EventSetCount;
+    PKSEVENT_SET EventSet;
+    PLIST_ENTRY EventList;
+    PKSPIN_LOCK EventListLock;
 
     PPCFILTER_DESCRIPTOR DeviceDescriptor;
     KSTOPOLOGY*  Topology;
     LIST_ENTRY SymbolicLinkList;
     LIST_ENTRY PhysicalConnectionList;
     UNICODE_STRING RefString;
+    PUNKNOWN UnknownMiniport;
+    PUNKNOWN UnknownStream;
+    PVOID PortPin;
 }SUBDEVICE_DESCRIPTOR, *PSUBDEVICE_DESCRIPTOR;
 
 #undef INTERFACE
@@ -226,7 +230,7 @@ typedef struct
 #define DEFINE_ABSTRACT_ISUBDEVICE()                          \
     STDMETHOD_(NTSTATUS, NewIrpTarget)(THIS_                  \
         OUT IIrpTarget **OutTarget,                           \
-        IN WCHAR * Name,                                      \
+        IN PCWSTR Name,                                       \
         IN PUNKNOWN Unknown,                                  \
         IN POOL_TYPE PoolType,                                \
         IN PDEVICE_OBJECT DeviceObject,                       \
@@ -262,7 +266,7 @@ typedef struct
 #define IMP_ISubdevice                                        \
     STDMETHODIMP_(NTSTATUS) NewIrpTarget(                     \
         OUT IIrpTarget **OutTarget,                           \
-        IN WCHAR * Name,                                      \
+        IN PCWSTR Name,                                       \
         IN PUNKNOWN Unknown,                                  \
         IN POOL_TYPE PoolType,                                \
         IN PDEVICE_OBJECT DeviceObject,                       \
@@ -315,17 +319,15 @@ DECLARE_INTERFACE_(IIrpQueue, IUnknown)
     DEFINE_ABSTRACT_UNKNOWN()
 
     STDMETHOD_(NTSTATUS, Init)(THIS_
-        IN KSPIN_CONNECT *ConnectDetails,
-        IN PKSDATAFORMAT DataFormat,
-        IN PDEVICE_OBJECT DeviceObject,
+        IN PKSPIN_CONNECT ConnectDetails,
+        IN PKSPIN_DESCRIPTOR Descriptor,
         IN ULONG FrameSize,
         IN ULONG Alignment,
-        IN PVOID SilenceBuffer) PURE;
+        IN ULONG TagSupportEnabled) PURE;
 
     STDMETHOD_(NTSTATUS, AddMapping)(THIS_
-        IN PUCHAR Buffer,
-        IN ULONG BufferSize,
-        IN PIRP Irp) PURE;
+        IN PIRP Irp,
+        OUT PULONG Data) PURE;
 
     STDMETHOD_(NTSTATUS, GetMapping)(THIS_
         OUT PUCHAR * Buffer,
@@ -334,17 +336,10 @@ DECLARE_INTERFACE_(IIrpQueue, IUnknown)
     STDMETHOD_(VOID, UpdateMapping)(THIS_
         IN ULONG BytesWritten) PURE;
 
-    STDMETHOD_(ULONG, NumMappings)(THIS) PURE;
-
     STDMETHOD_(ULONG, NumData)(THIS) PURE;
 
-    STDMETHOD_(BOOL, MinimumDataAvailable)(THIS) PURE;
-
     STDMETHOD_(BOOL, CancelBuffers)(THIS) PURE;
 
-    STDMETHOD_(VOID, UpdateFormat)(THIS_
-        IN PKSDATAFORMAT DataFormat) PURE;
-
     STDMETHOD_(NTSTATUS, GetMappingWithTag)(THIS_
         IN PVOID Tag,
         OUT PPHYSICAL_ADDRESS  PhysicalAddress,
@@ -355,61 +350,56 @@ DECLARE_INTERFACE_(IIrpQueue, IUnknown)
     STDMETHOD_(NTSTATUS, ReleaseMappingWithTag)(THIS_
         IN PVOID Tag) PURE;
 
-    STDMETHOD_(BOOL, HasLastMappingFailed)(THIS) PURE;
-    STDMETHOD_(VOID, PrintQueueStatus)(THIS) PURE;
-    STDMETHOD_(VOID, SetMinimumDataThreshold)(THIS_
-        IN ULONG MinimumDataThreshold) PURE;
-    STDMETHOD_(ULONG, GetMinimumDataThreshold)(THIS) PURE;
+    STDMETHOD_(BOOLEAN, HasLastMappingFailed)(THIS) PURE;
+    STDMETHOD_(ULONG, GetCurrentIrpOffset)(THIS) PURE;
+
+    STDMETHOD_(BOOLEAN, GetAcquiredTagRange)(THIS_
+        IN PVOID * FirstTag,
+        IN PVOID * LastTag) PURE;
+
 };
 
 
 #define IMP_IIrpQueue                                  \
     STDMETHODIMP_(NTSTATUS) Init(THIS_                 \
-        IN KSPIN_CONNECT *ConnectDetails,              \
-        IN PKSDATAFORMAT DataFormat,                   \
-        IN PDEVICE_OBJECT DeviceObject,                \
+        IN PKSPIN_CONNECT ConnectDetails,              \
+        IN PKSPIN_DESCRIPTOR Descriptor,               \
         IN ULONG FrameSize,                            \
         IN ULONG Alignment,                            \
-        IN PVOID SilenceBuffer);                       \
+        IN ULONG TagSupportEnabled);                   \
                                                        \
-    STDMETHODIMP_(NTSTATUS) AddMapping(THIS_          \
-        IN PUCHAR Buffer,                              \
-        IN ULONG BufferSize,                           \
-        IN PIRP Irp);                                  \
+    STDMETHODIMP_(NTSTATUS) AddMapping(THIS_           \
+        IN PIRP Irp,                                   \
+        OUT PULONG Data);                              \
                                                        \
-    STDMETHODIMP_(NTSTATUS) GetMapping(THIS_          \
+    STDMETHODIMP_(NTSTATUS) GetMapping(THIS_           \
         OUT PUCHAR * Buffer,                           \
         OUT PULONG BufferSize);                        \
                                                        \
-    STDMETHODIMP_(VOID) UpdateMapping(THIS_           \
+    STDMETHODIMP_(VOID) UpdateMapping(THIS_            \
         IN ULONG BytesWritten);                        \
                                                        \
-    STDMETHODIMP_(ULONG) NumMappings(THIS);           \
-                                                       \
-    STDMETHODIMP_(ULONG) NumData(THIS);               \
+    STDMETHODIMP_(ULONG) NumData(THIS);                \
                                                        \
-    STDMETHODIMP_(BOOL) MinimumDataAvailable(THIS);   \
+    STDMETHODIMP_(BOOL) CancelBuffers(THIS);           \
                                                        \
-    STDMETHODIMP_(BOOL) CancelBuffers(THIS);          \
-                                                       \
-    STDMETHODIMP_(VOID) UpdateFormat(THIS_            \
-        IN PKSDATAFORMAT DataFormat);                  \
-                                                       \
-    STDMETHODIMP_(NTSTATUS) GetMappingWithTag(THIS_   \
+    STDMETHODIMP_(NTSTATUS) GetMappingWithTag(THIS_    \
         IN PVOID Tag,                                  \
         OUT PPHYSICAL_ADDRESS  PhysicalAddress,        \
         OUT PVOID  *VirtualAddress,                    \
         OUT PULONG  ByteCount,                         \
         OUT PULONG  Flags);                            \
                                                        \
-    STDMETHODIMP_(NTSTATUS) ReleaseMappingWithTag(    \
+    STDMETHODIMP_(NTSTATUS) ReleaseMappingWithTag(     \
         IN PVOID Tag);                                 \
                                                        \
-    STDMETHODIMP_(BOOL) HasLastMappingFailed(THIS);   \
-    STDMETHODIMP_(VOID) PrintQueueStatus(THIS);       \
-    STDMETHODIMP_(VOID) SetMinimumDataThreshold(      \
-        IN ULONG MinimumDataThreshold);                \
-    STDMETHODIMP_(ULONG) GetMinimumDataThreshold(VOID)
+    STDMETHODIMP_(BOOLEAN) HasLastMappingFailed(THIS); \
+    STDMETHODIMP_(ULONG) GetCurrentIrpOffset(THIS);    \
+    STDMETHODIMP_(BOOLEAN) GetAcquiredTagRange(THIS_      \
+        IN PVOID * FirstTag,                           \
+        IN PVOID * LastTag);
+
+
 
 /*****************************************************************************
  * IKsWorkSink
@@ -611,6 +601,8 @@ DECLARE_INTERFACE_(IIrpStreamVirtual, IIrpStream)
 #undef INTERFACE
 #define INTERFACE IPortFilterWavePci
 
+struct IPortPinWavePci;
+
 DECLARE_INTERFACE_(IPortFilterWavePci, IIrpTarget)
 {
     DEFINE_ABSTRACT_UNKNOWN()
@@ -619,6 +611,9 @@ DECLARE_INTERFACE_(IPortFilterWavePci, IIrpTarget)
 
     STDMETHOD_(NTSTATUS, Init)(THIS_
         IN PPORTWAVEPCI Port)PURE;
+
+    STDMETHOD_(NTSTATUS, FreePin)(THIS_
+        IN struct IPortPinWavePci* Pin)PURE;
 };
 
 typedef IPortFilterWavePci *PPORTFILTERWAVEPCI;
@@ -626,7 +621,10 @@ typedef IPortFilterWavePci *PPORTFILTERWAVEPCI;
 #define IMP_IPortFilterPci           \
     IMP_IIrpTarget;                         \
     STDMETHODIMP_(NTSTATUS) Init(THIS_      \
-        IN PPORTWAVEPCI Port)
+        IN PPORTWAVEPCI Port);              \
+    STDMETHODIMP_(NTSTATUS) FreePin(THIS_   \
+        IN struct IPortPinWavePci* Pin)
+
 
 /*****************************************************************************
  * IPortPinWavePci
@@ -680,6 +678,10 @@ typedef IPortPinWavePci *PPORTPINWAVEPCI;
 #undef INTERFACE
 #define INTERFACE IPortFilterWaveRT
 
+#ifndef PPORTWAVERT
+typedef IPortWaveRT *PPORTWAVERT;
+#endif
+
 DECLARE_INTERFACE_(IPortFilterWaveRT, IIrpTarget)
 {
     DEFINE_ABSTRACT_UNKNOWN()
@@ -794,6 +796,8 @@ DECLARE_INTERFACE_(IPortPinWaveCyclic, IIrpTarget)
     STDMETHOD_(PMINIPORT, GetMiniport)(THIS) PURE;
 };
 
+typedef IPortPinWaveCyclic *PPORTPINWAVECYCLIC;
+
 #define IMP_IPortPinWaveCyclic                           \
     IMP_IIrpTarget;                                      \
     STDMETHODIMP_(NTSTATUS) Init(THIS_                   \
@@ -874,7 +878,7 @@ DECLARE_INTERFACE_(IPortPinDMus, IIrpTarget)
         IN PPORTFILTERDMUS Filter,             \
         IN KSPIN_CONNECT * ConnectDetails,     \
         IN KSPIN_DESCRIPTOR * PinDescriptor,   \
-        IN PDEVICE_OBJECT DeviceObject);        \
+        IN PDEVICE_OBJECT DeviceObject);       \
     STDMETHODIMP_(VOID) Notify(THIS)
 
 typedef IPortPinDMus *PPORTPINDMUS;
@@ -884,6 +888,38 @@ typedef IPortPinDMus *PPORTPINDMUS;
  *****************************************************************************
  */
 
+#ifdef _MSC_VER
+
+#define IMP_IDmaChannelEx                                                 \
+    STDMETHODIMP_(NTSTATUS) AllocateBuffer(                               \
+        IN  ULONG BufferSize,                                             \
+        IN  PPHYSICAL_ADDRESS PhysicalAddressConstraint OPTIONAL);        \
+                                                                          \
+    STDMETHODIMP_(void) FreeBuffer(void);                                 \
+    STDMETHODIMP_(ULONG) TransferCount(void);                             \
+    STDMETHODIMP_(ULONG) MaximumBufferSize(void);                         \
+    STDMETHODIMP_(ULONG) AllocatedBufferSize(void);                       \
+    STDMETHODIMP_(ULONG) BufferSize(void);                                \
+                                                                          \
+    STDMETHODIMP_(void) SetBufferSize(                                    \
+        IN  ULONG BufferSize);                                            \
+                                                                          \
+    STDMETHODIMP_(PVOID) SystemAddress(void);                             \
+    STDMETHODIMP_(PHYSICAL_ADDRESS) PhysicalAddress();                    \
+    STDMETHODIMP_(PADAPTER_OBJECT) GetAdapterObject(void);                \
+                                                                          \
+    STDMETHODIMP_(void) CopyTo(                                           \
+        IN  PVOID Destination,                                            \
+        IN  PVOID Source,                                                 \
+        IN  ULONG ByteCount);                                             \
+                                                                          \
+    STDMETHODIMP_(void) CopyFrom(                                         \
+        IN  PVOID Destination,                                            \
+        IN  PVOID Source,                                                 \
+        IN  ULONG ByteCount)
+
+#else
+
 #define IMP_IDmaChannelEx                                                 \
     STDMETHODIMP_(NTSTATUS) AllocateBuffer(                               \
         IN  ULONG BufferSize,                                             \
@@ -913,6 +949,11 @@ typedef IPortPinDMus *PPORTPINDMUS;
         IN  PVOID Source,                                                 \
         IN  ULONG ByteCount)
 
+
+
+#endif
+
+
 #define IMP_IDmaChannelSlaveEx                 \
     IMP_IDmaChannelEx;                         \
     STDMETHODIMP_(NTSTATUS) Start(             \
@@ -931,6 +972,37 @@ typedef IPortPinDMus *PPORTPINDMUS;
         IN  PDEVICE_DESCRIPTION DeviceDescription, \
         IN  PDEVICE_OBJECT DeviceObject)
 
+#ifdef _MSC_VER
+
+#define DEFINE_ABSTRACT_DMACHANNEL_EX() \
+    STDMETHOD_(NTSTATUS, AllocateBuffer)( THIS_ \
+        IN  ULONG BufferSize, \
+        IN  PPHYSICAL_ADDRESS PhysicalAddressConstraint OPTIONAL) PURE; \
+\
+    STDMETHOD_(void, FreeBuffer)( THIS ) PURE; \
+    STDMETHOD_(ULONG, TransferCount)( THIS ) PURE; \
+    STDMETHOD_(ULONG, MaximumBufferSize)( THIS ) PURE; \
+    STDMETHOD_(ULONG, AllocatedBufferSize)( THIS ) PURE; \
+    STDMETHOD_(ULONG, BufferSize)( THIS ) PURE; \
+\
+    STDMETHOD_(void, SetBufferSize)( THIS_ \
+        IN  ULONG BufferSize) PURE; \
+\
+    STDMETHOD_(PVOID, SystemAddress)( THIS ) PURE; \
+    STDMETHOD_(PHYSICAL_ADDRESS, PhysicalAddress)( THIS) PURE;  \
+    STDMETHOD_(PADAPTER_OBJECT, GetAdapterObject)( THIS ) PURE; \
+\
+    STDMETHOD_(void, CopyTo)( THIS_ \
+        IN  PVOID Destination, \
+        IN  PVOID Source, \
+        IN  ULONG ByteCount) PURE; \
+\
+    STDMETHOD_(void, CopyFrom)( THIS_ \
+        IN  PVOID Destination, \
+        IN  PVOID Source, \
+        IN  ULONG ByteCount) PURE;
+#else
+
 #define DEFINE_ABSTRACT_DMACHANNEL_EX() \
     STDMETHOD_(NTSTATUS, AllocateBuffer)( THIS_ \
         IN  ULONG BufferSize, \
@@ -960,6 +1032,7 @@ typedef IPortPinDMus *PPORTPINDMUS;
         IN  PVOID Source, \
         IN  ULONG ByteCount) PURE;
 
+#endif
 #undef INTERFACE
 #define INTERFACE IDmaChannelInit
 
@@ -1104,4 +1177,15 @@ DECLARE_INTERFACE_(IPortWaveRTStreamInit, IUnknown)
         IN      ULONG             Index                                   \
     )
 
+#ifndef IMP_IPortClsVersion
+
+#define IMP_IPortClsVersion \
+    STDMETHODIMP_(DWORD) GetVersion(void);
+
+#endif
+
+#ifdef IMP_IPortWaveRT
+#define IMP_IPortWaveRT IMP_IPort
+#endif
+
 #endif