2008-12-28 17:28:23 +00:00
|
|
|
#ifndef INTERFACES_H__
|
|
|
|
#define INTERFACES_H__
|
|
|
|
|
2009-01-17 11:19:27 +00:00
|
|
|
DEFINE_GUID(IID_IIrpTarget, 0xB4C90A60, 0x5791, 0x11D0, 0xF9, 0x86, 0x00, 0xA0, 0xC9, 0x11, 0xB5, 0x44);
|
|
|
|
DEFINE_GUID(IID_ISubdevice, 0xB4C90A61, 0x5791, 0x11D0, 0xF9, 0x86, 0x00, 0xA0, 0xC9, 0x11, 0xB5, 0x44);
|
|
|
|
DEFINE_GUID(IID_IIrpTargetFactory, 0xB4C90A62, 0x5791, 0x11D0, 0xF9, 0x86, 0x00, 0xA0, 0xC9, 0x11, 0xB5, 0x44);
|
2008-12-28 17:28:23 +00:00
|
|
|
|
2008-12-29 08:55:12 +00:00
|
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
* IIrpTarget
|
|
|
|
*****************************************************************************
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define DEFINE_ABSTRACT_IRPTARGET() \
|
|
|
|
STDMETHOD_(NTSTATUS, NewIrpTarget)(THIS_ \
|
|
|
|
OUT struct IIrpTarget **OutTarget, \
|
|
|
|
IN WCHAR * Name, \
|
|
|
|
IN PUNKNOWN Unknown, \
|
|
|
|
IN POOL_TYPE PoolType, \
|
2009-02-18 18:00:08 +00:00
|
|
|
IN PDEVICE_OBJECT DeviceObject, \
|
2008-12-29 08:55:12 +00:00
|
|
|
IN PIRP Irp, \
|
|
|
|
IN KSOBJECT_CREATE *CreateObject) PURE; \
|
|
|
|
\
|
|
|
|
STDMETHOD_(NTSTATUS, DeviceIoControl)(THIS_ \
|
|
|
|
IN PDEVICE_OBJECT DeviceObject, \
|
|
|
|
IN PIRP Irp)PURE; \
|
|
|
|
\
|
|
|
|
STDMETHOD_(NTSTATUS, Read)(THIS_ \
|
|
|
|
IN PDEVICE_OBJECT DeviceObject, \
|
|
|
|
IN PIRP Irp)PURE; \
|
|
|
|
\
|
|
|
|
STDMETHOD_(NTSTATUS, Write)(THIS_ \
|
|
|
|
IN PDEVICE_OBJECT DeviceObject, \
|
|
|
|
IN PIRP Irp)PURE; \
|
|
|
|
\
|
|
|
|
STDMETHOD_(NTSTATUS, Flush)(THIS_ \
|
|
|
|
IN PDEVICE_OBJECT DeviceObject, \
|
|
|
|
IN PIRP Irp)PURE; \
|
|
|
|
\
|
|
|
|
STDMETHOD_(NTSTATUS, Close)(THIS_ \
|
|
|
|
IN PDEVICE_OBJECT DeviceObject, \
|
|
|
|
IN PIRP Irp)PURE; \
|
|
|
|
\
|
|
|
|
STDMETHOD_(NTSTATUS, QuerySecurity)(THIS_ \
|
|
|
|
IN PDEVICE_OBJECT DeviceObject, \
|
|
|
|
IN PIRP Irp)PURE; \
|
|
|
|
\
|
|
|
|
STDMETHOD_(NTSTATUS, SetSecurity)(THIS_ \
|
|
|
|
IN PDEVICE_OBJECT DeviceObject, \
|
|
|
|
IN PIRP Irp)PURE; \
|
|
|
|
\
|
2009-04-21 09:56:20 +00:00
|
|
|
STDMETHOD_(BOOLEAN, FastDeviceIoControl)(THIS_ \
|
2008-12-29 08:55:12 +00:00
|
|
|
IN PFILE_OBJECT FileObject, \
|
|
|
|
IN BOOLEAN Wait, \
|
|
|
|
IN PVOID InputBuffer, \
|
|
|
|
IN ULONG InputBufferLength, \
|
|
|
|
OUT PVOID OutputBuffer, \
|
|
|
|
IN ULONG OutputBufferLength, \
|
|
|
|
IN ULONG IoControlCode, \
|
|
|
|
OUT PIO_STATUS_BLOCK StatusBlock, \
|
|
|
|
IN PDEVICE_OBJECT DeviceObject)PURE; \
|
|
|
|
\
|
2009-04-21 09:56:20 +00:00
|
|
|
STDMETHOD_(BOOLEAN, FastRead)(THIS_ \
|
2008-12-29 08:55:12 +00:00
|
|
|
IN PFILE_OBJECT FileObject, \
|
|
|
|
IN PLARGE_INTEGER FileOffset, \
|
|
|
|
IN ULONG Length, \
|
|
|
|
IN BOOLEAN Wait, \
|
|
|
|
IN ULONG LockKey, \
|
|
|
|
IN PVOID Buffer, \
|
|
|
|
OUT PIO_STATUS_BLOCK StatusBlock, \
|
|
|
|
IN PDEVICE_OBJECT DeviceObject)PURE; \
|
|
|
|
\
|
2009-04-21 09:56:20 +00:00
|
|
|
STDMETHOD_(BOOLEAN, FastWrite)(THIS_ \
|
2008-12-29 08:55:12 +00:00
|
|
|
IN PFILE_OBJECT FileObject, \
|
|
|
|
IN PLARGE_INTEGER FileOffset, \
|
|
|
|
IN ULONG Length, \
|
|
|
|
IN BOOLEAN Wait, \
|
|
|
|
IN ULONG LockKey, \
|
|
|
|
IN PVOID Buffer, \
|
|
|
|
OUT PIO_STATUS_BLOCK StatusBlock, \
|
|
|
|
IN PDEVICE_OBJECT DeviceObject)PURE;
|
|
|
|
|
|
|
|
#undef INTERFACE
|
|
|
|
#define INTERFACE IIrpTarget
|
|
|
|
|
|
|
|
DECLARE_INTERFACE_(IIrpTarget, IUnknown)
|
|
|
|
{
|
|
|
|
DEFINE_ABSTRACT_UNKNOWN()
|
|
|
|
|
|
|
|
DEFINE_ABSTRACT_IRPTARGET()
|
|
|
|
};
|
|
|
|
|
2008-12-28 17:28:23 +00:00
|
|
|
/*****************************************************************************
|
|
|
|
* ISubdevice
|
|
|
|
*****************************************************************************
|
|
|
|
*/
|
2008-12-29 08:55:12 +00:00
|
|
|
|
2008-12-28 17:28:23 +00:00
|
|
|
struct IIrpTargetFactory;
|
2008-12-29 08:55:12 +00:00
|
|
|
|
2009-02-22 18:58:51 +00:00
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
ULONG MaxGlobalInstanceCount;
|
|
|
|
ULONG MaxFilterInstanceCount;
|
|
|
|
ULONG MinFilterInstanceCount;
|
2009-02-24 18:38:39 +00:00
|
|
|
ULONG CurrentPinInstanceCount;
|
2009-02-22 18:58:51 +00:00
|
|
|
|
|
|
|
}PIN_INSTANCE_INFO, *PPIN_INSTANCE_INFO;
|
|
|
|
|
|
|
|
|
2009-02-15 13:29:01 +00:00
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
ULONG PinDescriptorCount;
|
|
|
|
ULONG PinDescriptorSize;
|
|
|
|
KSPIN_DESCRIPTOR * KsPinDescriptor;
|
2009-02-22 18:58:51 +00:00
|
|
|
PIN_INSTANCE_INFO * Instances;
|
2009-02-15 13:29:01 +00:00
|
|
|
}KSPIN_FACTORY;
|
|
|
|
|
2009-02-18 18:00:08 +00:00
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
ULONG MaxKsPropertySetCount;
|
|
|
|
ULONG FreeKsPropertySetOffset;
|
|
|
|
PKSPROPERTY_SET Properties;
|
|
|
|
}KSPROPERTY_SET_LIST;
|
|
|
|
|
2009-01-18 23:46:09 +00:00
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
ULONG InterfaceCount;
|
|
|
|
GUID *Interfaces;
|
2009-02-15 13:29:01 +00:00
|
|
|
KSPIN_FACTORY Factory;
|
2009-02-18 18:00:08 +00:00
|
|
|
KSPROPERTY_SET_LIST FilterPropertySet;
|
2009-02-23 11:13:35 +00:00
|
|
|
|
|
|
|
PPCFILTER_DESCRIPTOR DeviceDescriptor;
|
2009-01-18 23:46:09 +00:00
|
|
|
}SUBDEVICE_DESCRIPTOR, *PSUBDEVICE_DESCRIPTOR;
|
2008-12-28 17:28:23 +00:00
|
|
|
|
|
|
|
#undef INTERFACE
|
|
|
|
#define INTERFACE ISubdevice
|
|
|
|
|
|
|
|
DECLARE_INTERFACE_(ISubdevice, IUnknown)
|
|
|
|
{
|
|
|
|
STDMETHOD_(NTSTATUS, QueryInterface)(THIS_
|
|
|
|
REFIID InterfaceId,
|
|
|
|
PVOID* Interface
|
|
|
|
) PURE;
|
|
|
|
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
|
|
|
|
STDMETHOD_(ULONG,Release)(THIS) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, NewIrpTarget)(THIS_
|
2008-12-29 08:55:12 +00:00
|
|
|
OUT IIrpTarget **OutTarget,
|
2008-12-28 17:28:23 +00:00
|
|
|
IN WCHAR * Name,
|
|
|
|
IN PUNKNOWN Unknown,
|
|
|
|
IN POOL_TYPE PoolType,
|
2009-02-18 18:00:08 +00:00
|
|
|
IN PDEVICE_OBJECT DeviceObject,
|
2008-12-28 17:28:23 +00:00
|
|
|
IN PIRP Irp,
|
|
|
|
IN KSOBJECT_CREATE *CreateObject) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, ReleaseChildren)(THIS) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, GetDescriptor)(THIS_
|
2009-01-18 23:46:09 +00:00
|
|
|
IN SUBDEVICE_DESCRIPTOR **) PURE;
|
2008-12-28 17:28:23 +00:00
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, DataRangeIntersection)(THIS_
|
|
|
|
IN ULONG PinId,
|
|
|
|
IN PKSDATARANGE DataRange,
|
|
|
|
IN PKSDATARANGE MatchingDataRange,
|
|
|
|
IN ULONG OutputBufferLength,
|
|
|
|
OUT PVOID ResultantFormat OPTIONAL,
|
|
|
|
OUT PULONG ResultantFormatLength) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, PowerChangeNotify)(THIS_
|
|
|
|
IN POWER_STATE PowerState) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, PinCount)(THIS_
|
|
|
|
IN ULONG PinId,
|
|
|
|
IN OUT PULONG FilterNecessary,
|
|
|
|
IN OUT PULONG FilterCurrent,
|
|
|
|
IN OUT PULONG FilterPossible,
|
|
|
|
IN OUT PULONG GlobalCurrent,
|
|
|
|
IN OUT PULONG GlobalPossible)PURE;
|
|
|
|
|
2008-12-29 08:55:12 +00:00
|
|
|
};
|
|
|
|
|
2009-03-06 19:06:21 +00:00
|
|
|
/*****************************************************************************
|
|
|
|
* IIrpQueue
|
|
|
|
*****************************************************************************
|
|
|
|
*/
|
|
|
|
|
|
|
|
#undef INTERFACE
|
|
|
|
#define INTERFACE IIrpQueue
|
|
|
|
|
|
|
|
DECLARE_INTERFACE_(IIrpQueue, IUnknown)
|
|
|
|
{
|
|
|
|
DEFINE_ABSTRACT_UNKNOWN()
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, Init)(THIS_
|
|
|
|
IN KSPIN_CONNECT *ConnectDetails,
|
2009-03-08 16:25:28 +00:00
|
|
|
IN PKSDATAFORMAT DataFormat,
|
2009-03-14 18:57:51 +00:00
|
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
|
|
IN ULONG FrameSize);
|
2009-03-06 19:06:21 +00:00
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, AddMapping)(THIS_
|
|
|
|
IN PUCHAR Buffer,
|
|
|
|
IN ULONG BufferSize,
|
|
|
|
IN PIRP Irp);
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, GetMapping)(THIS_
|
|
|
|
OUT PUCHAR * Buffer,
|
|
|
|
OUT PULONG BufferSize);
|
|
|
|
|
|
|
|
STDMETHOD_(VOID, UpdateMapping)(THIS_
|
|
|
|
IN ULONG BytesWritten);
|
|
|
|
|
|
|
|
STDMETHOD_(ULONG, NumMappings)(THIS);
|
|
|
|
|
|
|
|
STDMETHOD_(ULONG, MinMappings)(THIS);
|
|
|
|
|
2009-03-08 16:25:28 +00:00
|
|
|
STDMETHOD_(BOOL, MinimumDataAvailable)(THIS);
|
2009-03-06 19:06:21 +00:00
|
|
|
|
2009-03-09 18:05:56 +00:00
|
|
|
STDMETHOD_(BOOL, CancelBuffers)(THIS);
|
|
|
|
|
2009-03-11 18:00:11 +00:00
|
|
|
STDMETHOD_(VOID, UpdateFormat)(THIS_
|
|
|
|
IN PKSDATAFORMAT DataFormat);
|
|
|
|
|
2009-03-14 18:57:51 +00:00
|
|
|
STDMETHOD_(NTSTATUS, GetMappingWithTag)(THIS_
|
|
|
|
IN PVOID Tag,
|
|
|
|
OUT PPHYSICAL_ADDRESS PhysicalAddress,
|
|
|
|
OUT PVOID *VirtualAddress,
|
|
|
|
OUT PULONG ByteCount,
|
|
|
|
OUT PULONG Flags);
|
2009-03-11 18:00:11 +00:00
|
|
|
|
2009-03-14 18:57:51 +00:00
|
|
|
STDMETHOD_(VOID, ReleaseMappingWithTag)(THIS_
|
|
|
|
IN PVOID Tag);
|
2009-03-06 19:06:21 +00:00
|
|
|
|
2009-03-14 18:57:51 +00:00
|
|
|
};
|
2009-03-06 19:06:21 +00:00
|
|
|
|
|
|
|
|
2008-12-29 08:55:12 +00:00
|
|
|
/*****************************************************************************
|
|
|
|
* IKsWorkSink
|
|
|
|
*****************************************************************************
|
|
|
|
*/
|
|
|
|
#undef INTERFACE
|
|
|
|
#define INTERFACE IKsWorkSink
|
|
|
|
|
|
|
|
DECLARE_INTERFACE_(IKsWorkSink, IUnknown)
|
|
|
|
{
|
|
|
|
DEFINE_ABSTRACT_UNKNOWN()
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, Work)(THIS);
|
|
|
|
};
|
|
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
* IIrpStreamNotify
|
|
|
|
*****************************************************************************
|
|
|
|
*/
|
|
|
|
#undef INTERFACE
|
|
|
|
#define INTERFACE IIrpStreamNotify
|
|
|
|
|
|
|
|
struct IRPSTREAMPOSITION;
|
|
|
|
|
|
|
|
DECLARE_INTERFACE_(IIrpStreamNotify, IUnknown)
|
|
|
|
{
|
|
|
|
DEFINE_ABSTRACT_UNKNOWN()
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, IrpSubmitted)(THIS_
|
|
|
|
IN PIRP Irp,
|
|
|
|
IN BOOLEAN WAIT)PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, GetPosition)(THIS_
|
|
|
|
OUT struct IRPSTREAMPOSITION * Position)PURE;
|
|
|
|
};
|
|
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
* IKsShellTransport
|
|
|
|
*****************************************************************************
|
|
|
|
*/
|
|
|
|
|
|
|
|
#undef INTERFACE
|
|
|
|
#define INTERFACE IKsShellTransport
|
|
|
|
|
|
|
|
#define DEFINE_ABSTRACT_IKSSHELLTRANSPORT() \
|
|
|
|
STDMETHOD_(NTSTATUS, TransferKsIrp)(THIS_ \
|
|
|
|
IN PIRP Irp, \
|
|
|
|
OUT IKsShellTransport ** Transport) PURE; \
|
|
|
|
\
|
|
|
|
STDMETHOD_(NTSTATUS, Connect)(THIS_ \
|
|
|
|
IN IKsShellTransport * StartTransport, \
|
|
|
|
OUT IKsShellTransport ** EndTransport, \
|
|
|
|
IN KSPIN_DATAFLOW DataFlow)PURE; \
|
|
|
|
\
|
|
|
|
STDMETHOD_(NTSTATUS, SetDeviceState)(THIS_ \
|
|
|
|
IN KSSTATE State1, \
|
|
|
|
IN KSSTATE State2, \
|
|
|
|
OUT IKsShellTransport ** EndTransport)PURE; \
|
|
|
|
\
|
|
|
|
STDMETHOD_(NTSTATUS, SetResetState)(THIS_ \
|
|
|
|
IN KSRESET State1, \
|
|
|
|
OUT IKsShellTransport ** EndTransport)PURE;
|
|
|
|
|
|
|
|
|
|
|
|
DECLARE_INTERFACE_(IKsShellTransport, IUnknown)
|
|
|
|
{
|
|
|
|
DEFINE_ABSTRACT_UNKNOWN()
|
|
|
|
|
|
|
|
DEFINE_ABSTRACT_IKSSHELLTRANSPORT()
|
|
|
|
};
|
|
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
* IIrpStream
|
|
|
|
*****************************************************************************
|
|
|
|
*/
|
|
|
|
struct IRPSTREAM_POSITION;
|
|
|
|
struct IRPSTREAMPACKETINFO;
|
|
|
|
|
|
|
|
#define DEFINE_ABSTRACT_IRPSTREAM() \
|
|
|
|
STDMETHOD_(NTSTATUS, TransferKsIrp)(THIS_ \
|
|
|
|
IN PIRP Irp, \
|
|
|
|
OUT IKsShellTransport ** Transport) PURE; \
|
|
|
|
\
|
|
|
|
STDMETHOD_(NTSTATUS, Connect)(THIS_ \
|
|
|
|
IN IKsShellTransport * StartTransport, \
|
|
|
|
OUT IKsShellTransport ** EndTransport, \
|
|
|
|
IN KSPIN_DATAFLOW DataFlow)PURE; \
|
|
|
|
\
|
|
|
|
STDMETHOD_(NTSTATUS, SetDeviceState)(THIS_ \
|
|
|
|
IN KSSTATE State1, \
|
|
|
|
IN KSSTATE State2, \
|
|
|
|
OUT IKsShellTransport ** EndTransport)PURE; \
|
|
|
|
\
|
|
|
|
STDMETHOD_(NTSTATUS, SetResetState)(THIS_ \
|
|
|
|
IN KSRESET State1, \
|
|
|
|
OUT IKsShellTransport ** EndTransport)PURE; \
|
|
|
|
\
|
|
|
|
STDMETHOD_(NTSTATUS, GetPosition)(THIS_ \
|
|
|
|
IN OUT struct IRPSTREAM_POSITION * Position) PURE; \
|
|
|
|
\
|
|
|
|
STDMETHOD_(NTSTATUS, Init)(THIS_ \
|
|
|
|
IN BOOLEAN Wait, \
|
|
|
|
KSPIN_CONNECT *ConnectDetails, \
|
|
|
|
PDEVICE_OBJECT DeviceObject, \
|
|
|
|
PDMA_ADAPTER DmaAdapter) PURE; \
|
|
|
|
\
|
|
|
|
STDMETHOD_(NTSTATUS, CancelAllIrps)(THIS_ \
|
|
|
|
ULONG Wait)PURE; \
|
|
|
|
\
|
|
|
|
STDMETHOD_(VOID, TerminatePacket)(THIS); \
|
|
|
|
\
|
|
|
|
STDMETHOD_(NTSTATUS, ChangeOptionsFlag)(THIS_ \
|
|
|
|
ULONG Unknown1, \
|
|
|
|
ULONG Unknown2, \
|
|
|
|
ULONG Unknown3, \
|
|
|
|
ULONG Unknown4)PURE; \
|
|
|
|
\
|
|
|
|
STDMETHOD_(NTSTATUS, GetPacketInfo)(THIS_ \
|
|
|
|
struct IRPSTREAMPACKETINFO * Info1, \
|
|
|
|
struct IRPSTREAMPACKETINFO * Info2)PURE; \
|
|
|
|
\
|
|
|
|
STDMETHOD_(NTSTATUS, SetPacketOffsets)(THIS_ \
|
|
|
|
ULONG Unknown1, \
|
|
|
|
ULONG Unknown2)PURE; \
|
|
|
|
\
|
|
|
|
STDMETHOD_(NTSTATUS, RegisterNotifySink)(THIS_ \
|
|
|
|
IN IIrpStreamNotify * NotifyStream)PURE;
|
2008-12-28 17:28:23 +00:00
|
|
|
|
2008-12-29 08:55:12 +00:00
|
|
|
|
|
|
|
|
|
|
|
#undef INTERFACE
|
|
|
|
#define INTERFACE IIrpStream
|
|
|
|
|
|
|
|
DECLARE_INTERFACE_(IIrpStream, IUnknown)
|
|
|
|
{
|
|
|
|
DEFINE_ABSTRACT_UNKNOWN()
|
|
|
|
|
|
|
|
DEFINE_ABSTRACT_IRPSTREAM()
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
* IIrpStreamPhysical
|
|
|
|
*****************************************************************************
|
|
|
|
*/
|
|
|
|
#undef INTERFACE
|
|
|
|
#define INTERFACE IIrpStreamPhysical
|
|
|
|
|
|
|
|
DECLARE_INTERFACE_(IIrpStreamPhysical, IIrpStream)
|
|
|
|
{
|
|
|
|
DEFINE_ABSTRACT_UNKNOWN()
|
|
|
|
|
|
|
|
DEFINE_ABSTRACT_IRPSTREAM()
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, GetMapping)(THIS_
|
|
|
|
IN PVOID Tag,
|
|
|
|
OUT PPHYSICAL_ADDRESS PhysicalAddress,
|
|
|
|
OUT PVOID * VirtualAddress,
|
|
|
|
OUT PULONG ByteCount,
|
|
|
|
OUT PULONG Flags)PURE;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
* IIrpStreamVirtual
|
|
|
|
*****************************************************************************
|
|
|
|
*/
|
|
|
|
#undef INTERFACE
|
|
|
|
#define INTERFACE IIrpStreamVirtual
|
|
|
|
|
|
|
|
DECLARE_INTERFACE_(IIrpStreamVirtual, IIrpStream)
|
|
|
|
{
|
|
|
|
DEFINE_ABSTRACT_UNKNOWN()
|
|
|
|
|
|
|
|
DEFINE_ABSTRACT_IRPSTREAM()
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, GetLockedRegion)(THIS_
|
|
|
|
OUT PULONG OutSize,
|
|
|
|
OUT PVOID * OutBuffer)PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, Copy)(THIS_
|
|
|
|
IN BOOLEAN Wait,
|
|
|
|
OUT ULONG Size,
|
|
|
|
IN PULONG Buffer,
|
|
|
|
OUT PVOID Result)PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, Complete)(THIS_
|
|
|
|
IN ULONG Unknown1,
|
|
|
|
IN PULONG Data)PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(ULONG, GetIrpStreamPositionLock)(THIS);
|
2008-12-28 17:28:23 +00:00
|
|
|
};
|
2008-12-29 08:55:12 +00:00
|
|
|
|
2009-04-19 18:32:53 +00:00
|
|
|
/*****************************************************************************
|
|
|
|
* IPortFilterWavePci
|
|
|
|
*****************************************************************************
|
|
|
|
*/
|
|
|
|
|
|
|
|
#undef INTERFACE
|
|
|
|
#define INTERFACE IPortFilterWavePci
|
|
|
|
|
|
|
|
DECLARE_INTERFACE_(IPortFilterWavePci, IIrpTarget)
|
|
|
|
{
|
|
|
|
DEFINE_ABSTRACT_UNKNOWN()
|
|
|
|
|
|
|
|
DEFINE_ABSTRACT_IRPTARGET()
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, Init)(THIS_
|
|
|
|
IN PPORTWAVEPCI Port)PURE;
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef IPortFilterWavePci *PPORTFILTERWAVEPCI;
|
|
|
|
|
|
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
* IPortPinWavePci
|
|
|
|
*****************************************************************************
|
|
|
|
*/
|
|
|
|
|
|
|
|
#undef INTERFACE
|
|
|
|
#define INTERFACE IPortPinWavePci
|
|
|
|
|
|
|
|
DECLARE_INTERFACE_(IPortPinWavePci, IIrpTarget)
|
|
|
|
{
|
|
|
|
DEFINE_ABSTRACT_UNKNOWN()
|
|
|
|
|
|
|
|
DEFINE_ABSTRACT_IRPTARGET()
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, Init)(THIS_
|
|
|
|
IN PPORTWAVEPCI Port,
|
|
|
|
IN PPORTFILTERWAVEPCI Filter,
|
|
|
|
IN KSPIN_CONNECT * ConnectDetails,
|
|
|
|
IN KSPIN_DESCRIPTOR * PinDescriptor,
|
|
|
|
IN PDEVICE_OBJECT DeviceObject) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(PVOID, GetIrpStream)(THIS);
|
|
|
|
STDMETHOD_(PMINIPORT, GetMiniport)(THIS);
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef IPortPinWavePci *PPORTPINWAVEPCI;
|
2008-12-29 08:55:12 +00:00
|
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
* IPortFilterWaveCyclic
|
|
|
|
*****************************************************************************
|
|
|
|
*/
|
|
|
|
|
2008-12-28 17:28:23 +00:00
|
|
|
#undef INTERFACE
|
2008-12-29 08:55:12 +00:00
|
|
|
#define INTERFACE IPortFilterWaveCyclic
|
2008-12-28 17:28:23 +00:00
|
|
|
|
2008-12-29 08:55:12 +00:00
|
|
|
DECLARE_INTERFACE_(IPortFilterWaveCyclic, IIrpTarget)
|
|
|
|
{
|
|
|
|
DEFINE_ABSTRACT_UNKNOWN()
|
|
|
|
|
|
|
|
DEFINE_ABSTRACT_IRPTARGET()
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, Init)(THIS_
|
|
|
|
IN PPORTWAVECYCLIC Port)PURE;
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef IPortFilterWaveCyclic *PPORTFILTERWAVECYCLIC;
|
|
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
* IPortPinWaveCyclic
|
|
|
|
*****************************************************************************
|
|
|
|
*/
|
|
|
|
|
|
|
|
#undef INTERFACE
|
|
|
|
#define INTERFACE IPortPinWaveCyclic
|
|
|
|
|
|
|
|
DECLARE_INTERFACE_(IPortPinWaveCyclic, IIrpTarget)
|
|
|
|
{
|
|
|
|
DEFINE_ABSTRACT_UNKNOWN()
|
|
|
|
|
|
|
|
DEFINE_ABSTRACT_IRPTARGET()
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, Init)(THIS_
|
|
|
|
IN PPORTWAVECYCLIC Port,
|
|
|
|
IN PPORTFILTERWAVECYCLIC Filter,
|
|
|
|
IN KSPIN_CONNECT * ConnectDetails,
|
|
|
|
IN KSPIN_DESCRIPTOR * PinDescriptor) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(ULONG, GetCompletedPosition)(THIS);
|
|
|
|
STDMETHOD_(ULONG, GetCycleCount)(THIS);
|
|
|
|
STDMETHOD_(ULONG, GetDeviceBufferSize)(THIS);
|
|
|
|
STDMETHOD_(PVOID, GetIrpStream)(THIS);
|
|
|
|
STDMETHOD_(PMINIPORT, GetMiniport)(THIS);
|
|
|
|
};
|
2008-12-28 17:28:23 +00:00
|
|
|
|
|
|
|
#endif
|