Merge 48064 from yarotows
[reactos.git] / reactos / drivers / wdm / audio / backpln / portcls / interfaces.hpp
index 1fa54f2..dc030ed 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,                    \
@@ -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
  *****************************************************************************
@@ -168,6 +170,19 @@ DECLARE_INTERFACE_(IIrpTarget, IUnknown)
 
 struct IIrpTargetFactory;
 
+typedef struct
+{
+    LIST_ENTRY Entry;
+    UNICODE_STRING SymbolicLink;
+}SYMBOLICLINK_ENTRY, *PSYMBOLICLINK_ENTRY;
+
+typedef struct
+{
+    LIST_ENTRY Entry;
+    ULONG FromPin;
+    KSPIN_PHYSICALCONNECTION Connection;
+}PHYSICAL_CONNECTION_ENTRY, *PPHYSICAL_CONNECTION_ENTRY;
+
 typedef struct
 {
     ULONG MaxGlobalInstanceCount;
@@ -186,22 +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
@@ -210,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,                       \
@@ -246,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,                       \
@@ -300,16 +320,13 @@ DECLARE_INTERFACE_(IIrpQueue, IUnknown)
 
     STDMETHOD_(NTSTATUS, Init)(THIS_
         IN KSPIN_CONNECT *ConnectDetails,
-        IN PKSDATAFORMAT DataFormat,
-        IN PDEVICE_OBJECT DeviceObject,
         IN ULONG FrameSize,
         IN ULONG Alignment,
         IN PVOID SilenceBuffer) 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,
@@ -318,17 +335,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,
@@ -339,61 +349,55 @@ 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 ULONG FrameSize,                            \
         IN ULONG Alignment,                            \
         IN PVOID SilenceBuffer);                       \
                                                        \
-    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_(BOOL) MinimumDataAvailable(THIS);   \
+    STDMETHODIMP_(ULONG) NumData(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
@@ -664,6 +668,10 @@ typedef IPortPinWavePci *PPORTPINWAVEPCI;
 #undef INTERFACE
 #define INTERFACE IPortFilterWaveRT
 
+#ifndef PPORTWAVERT
+typedef IPortWaveRT *PPORTWAVERT;
+#endif
+
 DECLARE_INTERFACE_(IPortFilterWaveRT, IIrpTarget)
 {
     DEFINE_ABSTRACT_UNKNOWN()
@@ -778,6 +786,8 @@ DECLARE_INTERFACE_(IPortPinWaveCyclic, IIrpTarget)
     STDMETHOD_(PMINIPORT, GetMiniport)(THIS) PURE;
 };
 
+typedef IPortPinWaveCyclic *PPORTPINWAVECYCLIC;
+
 #define IMP_IPortPinWaveCyclic                           \
     IMP_IIrpTarget;                                      \
     STDMETHODIMP_(NTSTATUS) Init(THIS_                   \
@@ -858,7 +868,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;
@@ -1088,4 +1098,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