IN PDEVICE_OBJECT DeviceObject, \
IN PIRP Irp)PURE; \
\
- STDMETHOD_(NTSTATUS, Close)(THIS_ \
+ virtual NTSTATUS Close( \
IN PDEVICE_OBJECT DeviceObject, \
IN PIRP Irp)PURE; \
\
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 PIRP Irp,
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,
STDMETHOD_(NTSTATUS, ReleaseMappingWithTag)(THIS_
IN PVOID Tag) PURE;
- STDMETHOD_(BOOL, HasLastMappingFailed)(THIS) PURE;
+ STDMETHOD_(BOOLEAN, HasLastMappingFailed)(THIS) PURE;
STDMETHOD_(ULONG, GetCurrentIrpOffset)(THIS) PURE;
- STDMETHOD_(VOID, SetMinimumDataThreshold)(THIS_
- IN ULONG MinimumDataThreshold) PURE;
- STDMETHOD_(ULONG, GetMinimumDataThreshold)(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 PIRP Irp, \
STDMETHODIMP_(VOID) UpdateMapping(THIS_ \
IN ULONG BytesWritten); \
\
- STDMETHODIMP_(ULONG) NumMappings(THIS); \
- \
STDMETHODIMP_(ULONG) NumData(THIS); \
\
- STDMETHODIMP_(BOOL) MinimumDataAvailable(THIS); \
- \
STDMETHODIMP_(BOOL) CancelBuffers(THIS); \
\
- STDMETHODIMP_(VOID) UpdateFormat(THIS_ \
- IN PKSDATAFORMAT DataFormat); \
- \
STDMETHODIMP_(NTSTATUS) GetMappingWithTag(THIS_ \
IN PVOID Tag, \
OUT PPHYSICAL_ADDRESS PhysicalAddress, \
STDMETHODIMP_(NTSTATUS) ReleaseMappingWithTag( \
IN PVOID Tag); \
\
- STDMETHODIMP_(BOOL) HasLastMappingFailed(THIS); \
+ STDMETHODIMP_(BOOLEAN) HasLastMappingFailed(THIS); \
STDMETHODIMP_(ULONG) GetCurrentIrpOffset(THIS); \
- STDMETHODIMP_(VOID) SetMinimumDataThreshold( \
- IN ULONG MinimumDataThreshold); \
- STDMETHODIMP_(ULONG) GetMinimumDataThreshold(VOID)
+ STDMETHODIMP_(BOOLEAN) GetAcquiredTagRange(THIS_ \
+ IN PVOID * FirstTag, \
+ IN PVOID * LastTag);
+
+
/*****************************************************************************
* IKsWorkSink
#undef INTERFACE
#define INTERFACE IPortFilterWavePci
+struct IPortPinWavePci;
+
DECLARE_INTERFACE_(IPortFilterWavePci, IIrpTarget)
{
DEFINE_ABSTRACT_UNKNOWN()
STDMETHOD_(NTSTATUS, Init)(THIS_
IN PPORTWAVEPCI Port)PURE;
+
+ STDMETHOD_(NTSTATUS, FreePin)(THIS_
+ IN struct IPortPinWavePci* Pin)PURE;
};
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
*****************************************************************************
*/
+#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, \
IN PVOID Source, \
IN ULONG ByteCount)
+
+
+#endif
+
+
#define IMP_IDmaChannelSlaveEx \
IMP_IDmaChannelEx; \
STDMETHODIMP_(NTSTATUS) Start( \
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, \
IN PVOID Source, \
IN ULONG ByteCount) PURE;
+#endif
#undef INTERFACE
#define INTERFACE IDmaChannelInit