2010-02-26 11:43:19 +00:00
|
|
|
#pragma once
|
2009-01-26 10:05:46 +00:00
|
|
|
|
2009-02-10 07:44:43 +00:00
|
|
|
#if !defined(DEFINE_ABSTRACT_UNKNOWN)
|
|
|
|
|
|
|
|
#define DEFINE_ABSTRACT_UNKNOWN() \
|
|
|
|
STDMETHOD_(NTSTATUS, QueryInterface)(THIS_ \
|
|
|
|
REFIID InterfaceId, \
|
|
|
|
PVOID* Interface)PURE; \
|
|
|
|
STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
|
|
|
|
STDMETHOD_(ULONG,Release)(THIS) PURE;
|
|
|
|
#endif
|
2009-01-26 10:05:46 +00:00
|
|
|
|
2009-07-28 16:18:05 +00:00
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
LIST_ENTRY Entry;
|
|
|
|
LIST_ENTRY ObjectList;
|
|
|
|
PRKMUTEX BagMutex;
|
|
|
|
PVOID DeviceHeader;
|
|
|
|
}KSIOBJECT_BAG, *PKSIOBJECT_BAG;
|
|
|
|
|
|
|
|
|
allocators.c
- Implement IKsAllocator interface and use it in new implemented KsCreateAllocator, KsCreateDefaultAllocatorEx, KsValidateAllocatorFramingEx
api.c
- Implement KsSetDevicePnpAndBaseObject, KsQueryDevicePnpObject, KsSetTargetState, KsSetTargetDeviceObject, KsSetPowerDispatch, KsFreeDeviceHeader, KsFreeObjectHeader, KsAllocateObjectCreateItem, KsFreeObjectCreateItem, KsFreeObjectCreateItemsByContext, KsCreateDefaultSecurity
clocks.c
- Implement KsCreateClock, KsCreateDefaultClock, partly implement KsAllocateDefaultClockEx, KsFreeDefaultClock, KsGetDefaultClockState, KsSetDefaultClockState, KsGetDefaultClockTime, KsSetDefaultClockTime
device.c
- Partly implement IKsDevice interface in order to let AVStream client devices initialize
- Implement KsInitializeDevice
- Implement registering of device interface for AVStream drivers
driver.c
- Implement KsGetDeviceForDeviceObject
- Set device flags for ks
- Store Address for client drivers device extension
filter.c
- Implement IKsFilter & IKsControl interface
- Handle KSPROPERTY requests
filterfactory.c
- Implement IKsFilterFactory interface
- Implement KsCreateFilterFactory, KsFilterFactorySetDeviceClassesState, KsFilterFactoryGetSymbolicLink, KsFilterFactoryAddCreateItem
- Add KsFilterFactoryUpdateCacheData
image.c
- Implement KsLoadResource
irp.c
- Implement KsDispatchQuerySecurity, KsDispatchSetSecurity, KsWriteFile, KsDefaultIoCompletion
svn path=/trunk/; revision=42109
2009-07-20 23:26:57 +00:00
|
|
|
/*****************************************************************************
|
|
|
|
* IKsAllocator
|
|
|
|
*****************************************************************************
|
|
|
|
*/
|
|
|
|
|
|
|
|
#undef INTERFACE
|
|
|
|
#define INTERFACE IKsAllocator
|
|
|
|
|
|
|
|
DECLARE_INTERFACE_(IKsAllocator, IUnknown)
|
|
|
|
{
|
|
|
|
DEFINE_ABSTRACT_UNKNOWN()
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, DispatchDeviceIoControl)(THIS_
|
|
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
|
|
IN PIRP Irp) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, Close)(THIS) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, AllocateFrame)(THIS_
|
|
|
|
IN PVOID * OutFrame) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(VOID, FreeFrame)(THIS_
|
|
|
|
IN PVOID OutFrame) PURE;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
* IKsPin
|
|
|
|
*****************************************************************************
|
|
|
|
*/
|
|
|
|
|
|
|
|
#undef INTERFACE
|
|
|
|
#define INTERFACE IKsClock
|
|
|
|
|
|
|
|
DECLARE_INTERFACE_(IKsClock, IUnknown)
|
|
|
|
{
|
|
|
|
DEFINE_ABSTRACT_UNKNOWN()
|
|
|
|
};
|
|
|
|
|
- Start Implementing IKsPin interface
- Increment PinInstanceCount when a pin has succcessfully been created
- Implement KsPinAcquireProcessingMutex, KsPinGetConnectedPinDeviceObject, KsPinGetConnectedFileObject, KsPinGetConnectedPinInterface, KsPinGetNextSiblingPin, KsPinGetParentFilter, KsPinRegisterFrameReturnCallback, KsPinRegisterHandshakeCallback, KsPinRegisterIrpCompletionCallback, KsPinRegisterPowerCallbacks, KsPinReleaseProcessingMutex
- Initialize pin dispatch table
- Add create items for allocator, clock, node create requests
- AVStream clients should now be able to instantiated pins, streaming not yet supported
svn path=/trunk/; revision=42283
2009-07-29 09:48:36 +00:00
|
|
|
/*****************************************************************************
|
|
|
|
* IKsTransport
|
|
|
|
*****************************************************************************
|
|
|
|
*/
|
|
|
|
|
|
|
|
#undef INTERFACE
|
|
|
|
#define INTERFACE IKsTransport
|
|
|
|
|
|
|
|
DECLARE_INTERFACE_(IKsTransport, IUnknown)
|
|
|
|
{
|
|
|
|
DEFINE_ABSTRACT_UNKNOWN()
|
|
|
|
};
|
|
|
|
|
|
|
|
|
allocators.c
- Implement IKsAllocator interface and use it in new implemented KsCreateAllocator, KsCreateDefaultAllocatorEx, KsValidateAllocatorFramingEx
api.c
- Implement KsSetDevicePnpAndBaseObject, KsQueryDevicePnpObject, KsSetTargetState, KsSetTargetDeviceObject, KsSetPowerDispatch, KsFreeDeviceHeader, KsFreeObjectHeader, KsAllocateObjectCreateItem, KsFreeObjectCreateItem, KsFreeObjectCreateItemsByContext, KsCreateDefaultSecurity
clocks.c
- Implement KsCreateClock, KsCreateDefaultClock, partly implement KsAllocateDefaultClockEx, KsFreeDefaultClock, KsGetDefaultClockState, KsSetDefaultClockState, KsGetDefaultClockTime, KsSetDefaultClockTime
device.c
- Partly implement IKsDevice interface in order to let AVStream client devices initialize
- Implement KsInitializeDevice
- Implement registering of device interface for AVStream drivers
driver.c
- Implement KsGetDeviceForDeviceObject
- Set device flags for ks
- Store Address for client drivers device extension
filter.c
- Implement IKsFilter & IKsControl interface
- Handle KSPROPERTY requests
filterfactory.c
- Implement IKsFilterFactory interface
- Implement KsCreateFilterFactory, KsFilterFactorySetDeviceClassesState, KsFilterFactoryGetSymbolicLink, KsFilterFactoryAddCreateItem
- Add KsFilterFactoryUpdateCacheData
image.c
- Implement KsLoadResource
irp.c
- Implement KsDispatchQuerySecurity, KsDispatchSetSecurity, KsWriteFile, KsDefaultIoCompletion
svn path=/trunk/; revision=42109
2009-07-20 23:26:57 +00:00
|
|
|
/*****************************************************************************
|
|
|
|
* IKsPin
|
|
|
|
*****************************************************************************
|
|
|
|
*/
|
|
|
|
|
|
|
|
#undef INTERFACE
|
|
|
|
#define INTERFACE IKsPin
|
|
|
|
|
- Start Implementing IKsPin interface
- Increment PinInstanceCount when a pin has succcessfully been created
- Implement KsPinAcquireProcessingMutex, KsPinGetConnectedPinDeviceObject, KsPinGetConnectedFileObject, KsPinGetConnectedPinInterface, KsPinGetNextSiblingPin, KsPinGetParentFilter, KsPinRegisterFrameReturnCallback, KsPinRegisterHandshakeCallback, KsPinRegisterIrpCompletionCallback, KsPinRegisterPowerCallbacks, KsPinReleaseProcessingMutex
- Initialize pin dispatch table
- Add create items for allocator, clock, node create requests
- AVStream clients should now be able to instantiated pins, streaming not yet supported
svn path=/trunk/; revision=42283
2009-07-29 09:48:36 +00:00
|
|
|
struct KSPTRANSPORTCONFIG;
|
|
|
|
|
allocators.c
- Implement IKsAllocator interface and use it in new implemented KsCreateAllocator, KsCreateDefaultAllocatorEx, KsValidateAllocatorFramingEx
api.c
- Implement KsSetDevicePnpAndBaseObject, KsQueryDevicePnpObject, KsSetTargetState, KsSetTargetDeviceObject, KsSetPowerDispatch, KsFreeDeviceHeader, KsFreeObjectHeader, KsAllocateObjectCreateItem, KsFreeObjectCreateItem, KsFreeObjectCreateItemsByContext, KsCreateDefaultSecurity
clocks.c
- Implement KsCreateClock, KsCreateDefaultClock, partly implement KsAllocateDefaultClockEx, KsFreeDefaultClock, KsGetDefaultClockState, KsSetDefaultClockState, KsGetDefaultClockTime, KsSetDefaultClockTime
device.c
- Partly implement IKsDevice interface in order to let AVStream client devices initialize
- Implement KsInitializeDevice
- Implement registering of device interface for AVStream drivers
driver.c
- Implement KsGetDeviceForDeviceObject
- Set device flags for ks
- Store Address for client drivers device extension
filter.c
- Implement IKsFilter & IKsControl interface
- Handle KSPROPERTY requests
filterfactory.c
- Implement IKsFilterFactory interface
- Implement KsCreateFilterFactory, KsFilterFactorySetDeviceClassesState, KsFilterFactoryGetSymbolicLink, KsFilterFactoryAddCreateItem
- Add KsFilterFactoryUpdateCacheData
image.c
- Implement KsLoadResource
irp.c
- Implement KsDispatchQuerySecurity, KsDispatchSetSecurity, KsWriteFile, KsDefaultIoCompletion
svn path=/trunk/; revision=42109
2009-07-20 23:26:57 +00:00
|
|
|
DECLARE_INTERFACE_(IKsPin, IUnknown)
|
|
|
|
{
|
|
|
|
DEFINE_ABSTRACT_UNKNOWN()
|
- Start Implementing IKsPin interface
- Increment PinInstanceCount when a pin has succcessfully been created
- Implement KsPinAcquireProcessingMutex, KsPinGetConnectedPinDeviceObject, KsPinGetConnectedFileObject, KsPinGetConnectedPinInterface, KsPinGetNextSiblingPin, KsPinGetParentFilter, KsPinRegisterFrameReturnCallback, KsPinRegisterHandshakeCallback, KsPinRegisterIrpCompletionCallback, KsPinRegisterPowerCallbacks, KsPinReleaseProcessingMutex
- Initialize pin dispatch table
- Add create items for allocator, clock, node create requests
- AVStream clients should now be able to instantiated pins, streaming not yet supported
svn path=/trunk/; revision=42283
2009-07-29 09:48:36 +00:00
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, TransferKsIrp)(THIS_
|
|
|
|
IN PIRP Irp,
|
|
|
|
IN IKsTransport **OutTransport) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(VOID, DiscardKsIrp)(THIS_
|
|
|
|
IN PIRP Irp,
|
|
|
|
IN IKsTransport * *OutTransport) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, Connect)(THIS_
|
|
|
|
IN IKsTransport * TransportIn,
|
|
|
|
OUT IKsTransport ** OutTransportIn,
|
|
|
|
OUT IKsTransport * *OutTransportOut,
|
|
|
|
IN KSPIN_DATAFLOW DataFlow) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, SetDeviceState)(THIS_
|
|
|
|
IN KSSTATE OldState,
|
|
|
|
IN KSSTATE NewState,
|
|
|
|
IN IKsTransport * *OutTransport) PURE;
|
|
|
|
|
2021-06-11 12:29:21 +00:00
|
|
|
STDMETHOD_(VOID, SetResetState)(THIS_
|
- Start Implementing IKsPin interface
- Increment PinInstanceCount when a pin has succcessfully been created
- Implement KsPinAcquireProcessingMutex, KsPinGetConnectedPinDeviceObject, KsPinGetConnectedFileObject, KsPinGetConnectedPinInterface, KsPinGetNextSiblingPin, KsPinGetParentFilter, KsPinRegisterFrameReturnCallback, KsPinRegisterHandshakeCallback, KsPinRegisterIrpCompletionCallback, KsPinRegisterPowerCallbacks, KsPinReleaseProcessingMutex
- Initialize pin dispatch table
- Add create items for allocator, clock, node create requests
- AVStream clients should now be able to instantiated pins, streaming not yet supported
svn path=/trunk/; revision=42283
2009-07-29 09:48:36 +00:00
|
|
|
IN KSRESET ResetState,
|
|
|
|
OUT IKsTransport * * OutTransportOut) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, GetTransportConfig)(THIS_
|
|
|
|
IN struct KSPTRANSPORTCONFIG * TransportConfig,
|
|
|
|
OUT IKsTransport ** OutTransportIn,
|
|
|
|
OUT IKsTransport ** OutTransportOut) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, SetTransportConfig)(THIS_
|
|
|
|
IN struct KSPTRANSPORTCONFIG const * TransportConfig,
|
|
|
|
OUT IKsTransport ** OutTransportIn,
|
|
|
|
OUT IKsTransport ** OutTransportOut) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, ResetTransportConfig)(THIS_
|
|
|
|
OUT IKsTransport ** OutTransportIn,
|
|
|
|
OUT IKsTransport ** OutTransportOut) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(PKSPIN, GetStruct)(THIS) PURE;
|
|
|
|
STDMETHOD_(PKSPROCESSPIN, GetProcessPin)(THIS) PURE;
|
|
|
|
STDMETHOD_(NTSTATUS, AttemptBypass)(THIS) PURE;
|
|
|
|
STDMETHOD_(NTSTATUS, AttemptUnbypass)(THIS) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(VOID, GenerateConnectionEvents)(THIS_
|
|
|
|
IN ULONG EventMask) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, ClientSetDeviceState)(THIS_
|
|
|
|
IN KSSTATE StateIn,
|
|
|
|
IN KSSTATE StateOut) PURE;
|
allocators.c
- Implement IKsAllocator interface and use it in new implemented KsCreateAllocator, KsCreateDefaultAllocatorEx, KsValidateAllocatorFramingEx
api.c
- Implement KsSetDevicePnpAndBaseObject, KsQueryDevicePnpObject, KsSetTargetState, KsSetTargetDeviceObject, KsSetPowerDispatch, KsFreeDeviceHeader, KsFreeObjectHeader, KsAllocateObjectCreateItem, KsFreeObjectCreateItem, KsFreeObjectCreateItemsByContext, KsCreateDefaultSecurity
clocks.c
- Implement KsCreateClock, KsCreateDefaultClock, partly implement KsAllocateDefaultClockEx, KsFreeDefaultClock, KsGetDefaultClockState, KsSetDefaultClockState, KsGetDefaultClockTime, KsSetDefaultClockTime
device.c
- Partly implement IKsDevice interface in order to let AVStream client devices initialize
- Implement KsInitializeDevice
- Implement registering of device interface for AVStream drivers
driver.c
- Implement KsGetDeviceForDeviceObject
- Set device flags for ks
- Store Address for client drivers device extension
filter.c
- Implement IKsFilter & IKsControl interface
- Handle KSPROPERTY requests
filterfactory.c
- Implement IKsFilterFactory interface
- Implement KsCreateFilterFactory, KsFilterFactorySetDeviceClassesState, KsFilterFactoryGetSymbolicLink, KsFilterFactoryAddCreateItem
- Add KsFilterFactoryUpdateCacheData
image.c
- Implement KsLoadResource
irp.c
- Implement KsDispatchQuerySecurity, KsDispatchSetSecurity, KsWriteFile, KsDefaultIoCompletion
svn path=/trunk/; revision=42109
2009-07-20 23:26:57 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
* IKsQueue
|
|
|
|
*****************************************************************************
|
|
|
|
*/
|
|
|
|
|
|
|
|
#undef INTERFACE
|
|
|
|
#define INTERFACE IKsQueue
|
|
|
|
|
|
|
|
DECLARE_INTERFACE_(IKsQueue, IUnknown)
|
|
|
|
{
|
|
|
|
DEFINE_ABSTRACT_UNKNOWN()
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
* IKsFilterFactory
|
|
|
|
*****************************************************************************
|
|
|
|
*/
|
|
|
|
|
|
|
|
#undef INTERFACE
|
|
|
|
#define INTERFACE IKsFilter
|
|
|
|
|
|
|
|
struct KSPROCESSPIPESECTION;
|
|
|
|
|
|
|
|
|
|
|
|
DECLARE_INTERFACE_(IKsFilter, IUnknown)
|
|
|
|
{
|
|
|
|
DEFINE_ABSTRACT_UNKNOWN()
|
|
|
|
|
|
|
|
STDMETHOD_(PKSFILTER, GetStruct)(THIS) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(BOOL, DoAllNecessaryPinsExist)(THIS) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, CreateNode)(THIS_
|
|
|
|
IN PIRP Irp,
|
|
|
|
IN IKsPin * Pin,
|
|
|
|
IN PLIST_ENTRY ListEntry) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, BindProcessPinsToPipeSection)(THIS_
|
|
|
|
IN struct KSPROCESSPIPESECTION *Section,
|
|
|
|
IN PVOID Create,
|
|
|
|
IN PKSPIN KsPin,
|
|
|
|
OUT IKsPin **Pin,
|
|
|
|
OUT PKSGATE *OutGate) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, UnbindProcessPinsFromPipeSection)(THIS_
|
|
|
|
IN struct KSPROCESSPIPESECTION *Section) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, AddProcessPin)(THIS_
|
|
|
|
IN PKSPROCESSPIN ProcessPin) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, RemoveProcessPin)(THIS_
|
|
|
|
IN PKSPROCESSPIN ProcessPin) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(BOOL, ReprepareProcessPipeSection)(THIS_
|
|
|
|
IN struct KSPROCESSPIPESECTION *PipeSection,
|
|
|
|
IN PULONG Data) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(VOID, DeliverResetState)(THIS_
|
|
|
|
IN struct KSPROCESSPIPESECTION *PipeSection,
|
|
|
|
IN KSRESET ResetState) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(BOOL, IsFrameHolding)(THIS);
|
|
|
|
|
|
|
|
STDMETHOD_(VOID, RegisterForCopyCallbacks)(THIS_
|
|
|
|
IKsQueue * Queue,
|
|
|
|
IN BOOL Enable) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(PKSPROCESSPIN_INDEXENTRY, GetProcessDispatch)(THIS);
|
|
|
|
};
|
|
|
|
|
2009-01-26 10:05:46 +00:00
|
|
|
/*****************************************************************************
|
|
|
|
* IKsFilterFactory
|
|
|
|
*****************************************************************************
|
|
|
|
*/
|
|
|
|
|
|
|
|
#undef INTERFACE
|
|
|
|
#define INTERFACE IKsFilterFactory
|
|
|
|
|
|
|
|
DECLARE_INTERFACE_(IKsFilterFactory, IUnknown)
|
|
|
|
{
|
2009-02-10 07:44:43 +00:00
|
|
|
DEFINE_ABSTRACT_UNKNOWN()
|
2009-01-26 10:05:46 +00:00
|
|
|
|
allocators.c
- Implement IKsAllocator interface and use it in new implemented KsCreateAllocator, KsCreateDefaultAllocatorEx, KsValidateAllocatorFramingEx
api.c
- Implement KsSetDevicePnpAndBaseObject, KsQueryDevicePnpObject, KsSetTargetState, KsSetTargetDeviceObject, KsSetPowerDispatch, KsFreeDeviceHeader, KsFreeObjectHeader, KsAllocateObjectCreateItem, KsFreeObjectCreateItem, KsFreeObjectCreateItemsByContext, KsCreateDefaultSecurity
clocks.c
- Implement KsCreateClock, KsCreateDefaultClock, partly implement KsAllocateDefaultClockEx, KsFreeDefaultClock, KsGetDefaultClockState, KsSetDefaultClockState, KsGetDefaultClockTime, KsSetDefaultClockTime
device.c
- Partly implement IKsDevice interface in order to let AVStream client devices initialize
- Implement KsInitializeDevice
- Implement registering of device interface for AVStream drivers
driver.c
- Implement KsGetDeviceForDeviceObject
- Set device flags for ks
- Store Address for client drivers device extension
filter.c
- Implement IKsFilter & IKsControl interface
- Handle KSPROPERTY requests
filterfactory.c
- Implement IKsFilterFactory interface
- Implement KsCreateFilterFactory, KsFilterFactorySetDeviceClassesState, KsFilterFactoryGetSymbolicLink, KsFilterFactoryAddCreateItem
- Add KsFilterFactoryUpdateCacheData
image.c
- Implement KsLoadResource
irp.c
- Implement KsDispatchQuerySecurity, KsDispatchSetSecurity, KsWriteFile, KsDefaultIoCompletion
svn path=/trunk/; revision=42109
2009-07-20 23:26:57 +00:00
|
|
|
STDMETHOD_(KSFILTERFACTORY*, GetStruct)(THIS) PURE;
|
2009-01-26 10:05:46 +00:00
|
|
|
|
allocators.c
- Implement IKsAllocator interface and use it in new implemented KsCreateAllocator, KsCreateDefaultAllocatorEx, KsValidateAllocatorFramingEx
api.c
- Implement KsSetDevicePnpAndBaseObject, KsQueryDevicePnpObject, KsSetTargetState, KsSetTargetDeviceObject, KsSetPowerDispatch, KsFreeDeviceHeader, KsFreeObjectHeader, KsAllocateObjectCreateItem, KsFreeObjectCreateItem, KsFreeObjectCreateItemsByContext, KsCreateDefaultSecurity
clocks.c
- Implement KsCreateClock, KsCreateDefaultClock, partly implement KsAllocateDefaultClockEx, KsFreeDefaultClock, KsGetDefaultClockState, KsSetDefaultClockState, KsGetDefaultClockTime, KsSetDefaultClockTime
device.c
- Partly implement IKsDevice interface in order to let AVStream client devices initialize
- Implement KsInitializeDevice
- Implement registering of device interface for AVStream drivers
driver.c
- Implement KsGetDeviceForDeviceObject
- Set device flags for ks
- Store Address for client drivers device extension
filter.c
- Implement IKsFilter & IKsControl interface
- Handle KSPROPERTY requests
filterfactory.c
- Implement IKsFilterFactory interface
- Implement KsCreateFilterFactory, KsFilterFactorySetDeviceClassesState, KsFilterFactoryGetSymbolicLink, KsFilterFactoryAddCreateItem
- Add KsFilterFactoryUpdateCacheData
image.c
- Implement KsLoadResource
irp.c
- Implement KsDispatchQuerySecurity, KsDispatchSetSecurity, KsWriteFile, KsDefaultIoCompletion
svn path=/trunk/; revision=42109
2009-07-20 23:26:57 +00:00
|
|
|
STDMETHOD_(NTSTATUS, SetDeviceClassesState)(THIS_
|
2009-01-26 10:05:46 +00:00
|
|
|
IN BOOLEAN Enable)PURE;
|
allocators.c
- Implement IKsAllocator interface and use it in new implemented KsCreateAllocator, KsCreateDefaultAllocatorEx, KsValidateAllocatorFramingEx
api.c
- Implement KsSetDevicePnpAndBaseObject, KsQueryDevicePnpObject, KsSetTargetState, KsSetTargetDeviceObject, KsSetPowerDispatch, KsFreeDeviceHeader, KsFreeObjectHeader, KsAllocateObjectCreateItem, KsFreeObjectCreateItem, KsFreeObjectCreateItemsByContext, KsCreateDefaultSecurity
clocks.c
- Implement KsCreateClock, KsCreateDefaultClock, partly implement KsAllocateDefaultClockEx, KsFreeDefaultClock, KsGetDefaultClockState, KsSetDefaultClockState, KsGetDefaultClockTime, KsSetDefaultClockTime
device.c
- Partly implement IKsDevice interface in order to let AVStream client devices initialize
- Implement KsInitializeDevice
- Implement registering of device interface for AVStream drivers
driver.c
- Implement KsGetDeviceForDeviceObject
- Set device flags for ks
- Store Address for client drivers device extension
filter.c
- Implement IKsFilter & IKsControl interface
- Handle KSPROPERTY requests
filterfactory.c
- Implement IKsFilterFactory interface
- Implement KsCreateFilterFactory, KsFilterFactorySetDeviceClassesState, KsFilterFactoryGetSymbolicLink, KsFilterFactoryAddCreateItem
- Add KsFilterFactoryUpdateCacheData
image.c
- Implement KsLoadResource
irp.c
- Implement KsDispatchQuerySecurity, KsDispatchSetSecurity, KsWriteFile, KsDefaultIoCompletion
svn path=/trunk/; revision=42109
2009-07-20 23:26:57 +00:00
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, Initialize)(THIS_
|
|
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
|
|
IN const KSFILTER_DESCRIPTOR *Descriptor,
|
|
|
|
IN PWSTR RefString OPTIONAL,
|
|
|
|
IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL,
|
|
|
|
IN ULONG CreateItemFlags,
|
|
|
|
IN PFNKSFILTERFACTORYPOWER SleepCallback OPTIONAL,
|
|
|
|
IN PFNKSFILTERFACTORYPOWER WakeCallback OPTIONAL,
|
|
|
|
OUT PKSFILTERFACTORY *FilterFactory OPTIONAL)PURE;
|
2009-01-26 10:05:46 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
* IKsPowerNotify
|
|
|
|
*****************************************************************************
|
|
|
|
*/
|
|
|
|
|
|
|
|
#undef INTERFACE
|
|
|
|
#define INTERFACE IKsPowerNotify
|
|
|
|
|
|
|
|
DECLARE_INTERFACE_(IKsPowerNotify, IUnknown)
|
|
|
|
{
|
2009-02-10 07:44:43 +00:00
|
|
|
DEFINE_ABSTRACT_UNKNOWN()
|
2009-01-26 10:05:46 +00:00
|
|
|
|
2009-02-10 07:44:43 +00:00
|
|
|
STDMETHOD_(VOID,Sleep)(THIS_
|
2009-01-26 10:05:46 +00:00
|
|
|
IN DEVICE_POWER_STATE State) PURE;
|
|
|
|
|
2009-02-10 07:44:43 +00:00
|
|
|
STDMETHOD_(VOID,Wake)(THIS) PURE;
|
2009-01-26 10:05:46 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
* IKsDevice
|
|
|
|
*****************************************************************************
|
|
|
|
*/
|
|
|
|
|
|
|
|
#undef INTERFACE
|
|
|
|
#define INTERFACE IKsDevice
|
|
|
|
|
|
|
|
struct KSPOWER_ENTRY;
|
|
|
|
|
|
|
|
DECLARE_INTERFACE_(IKsDevice, IUnknown)
|
|
|
|
{
|
2009-02-10 07:44:43 +00:00
|
|
|
DEFINE_ABSTRACT_UNKNOWN()
|
2009-01-26 10:05:46 +00:00
|
|
|
|
2009-02-10 07:44:43 +00:00
|
|
|
STDMETHOD_(KSDEVICE*,GetStruct)(THIS) PURE;
|
2009-01-26 10:05:46 +00:00
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, InitializeObjectBag)(THIS_
|
2009-07-28 16:18:05 +00:00
|
|
|
IN PKSIOBJECT_BAG Bag,
|
|
|
|
IN PRKMUTEX Mutex) PURE;
|
2009-01-26 10:05:46 +00:00
|
|
|
|
2009-02-10 07:44:43 +00:00
|
|
|
STDMETHOD_(NTSTATUS,AcquireDevice)(THIS) PURE;
|
|
|
|
STDMETHOD_(NTSTATUS,ReleaseDevice)(THIS) PURE;
|
2009-01-26 10:05:46 +00:00
|
|
|
|
2009-02-10 07:44:43 +00:00
|
|
|
STDMETHOD_(NTSTATUS, GetAdapterObject)(THIS_
|
2010-04-07 21:45:25 +00:00
|
|
|
IN PADAPTER_OBJECT * Object,
|
2010-04-15 10:07:38 +00:00
|
|
|
IN PULONG MaxMappingsByteCount,
|
|
|
|
IN PULONG MappingTableStride) PURE;
|
2009-01-26 10:05:46 +00:00
|
|
|
|
2009-02-10 07:44:43 +00:00
|
|
|
STDMETHOD_(NTSTATUS, AddPowerEntry)(THIS_
|
2009-01-26 10:05:46 +00:00
|
|
|
IN struct KSPOWER_ENTRY * Entry,
|
2009-02-10 07:44:43 +00:00
|
|
|
IN IKsPowerNotify* Notify)PURE;
|
2009-01-26 10:05:46 +00:00
|
|
|
|
2009-02-10 07:44:43 +00:00
|
|
|
STDMETHOD_(NTSTATUS, RemovePowerEntry)(THIS_
|
2009-01-26 10:05:46 +00:00
|
|
|
IN struct KSPOWER_ENTRY * Entry)PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, PinStateChange)(THIS_
|
|
|
|
IN KSPIN Pin,
|
|
|
|
IN PIRP Irp,
|
|
|
|
IN KSSTATE OldState,
|
|
|
|
IN KSSTATE NewState)PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, ArbitrateAdapterChannel)(THIS_
|
2010-04-07 21:45:25 +00:00
|
|
|
IN ULONG NumberOfMapRegisters,
|
|
|
|
IN PDRIVER_CONTROL ExecutionRoutine,
|
2009-01-26 10:05:46 +00:00
|
|
|
IN PVOID Context)PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(NTSTATUS, CheckIoCapability)(THIS_
|
|
|
|
IN ULONG Unknown)PURE;
|
|
|
|
};
|
2010-12-20 02:45:18 +00:00
|
|
|
|
|
|
|
#undef INTERFACE
|
2010-12-22 15:20:38 +00:00
|
|
|
|
|
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
* IKsProcessingObject
|
|
|
|
*****************************************************************************
|
|
|
|
*/
|
|
|
|
|
|
|
|
#undef INTERFACE
|
|
|
|
#define INTERFACE IKsProcessingObject
|
|
|
|
|
|
|
|
DECLARE_INTERFACE_(IKsProcessingObject, IUnknown)
|
|
|
|
{
|
|
|
|
DEFINE_ABSTRACT_UNKNOWN()
|
|
|
|
|
|
|
|
STDMETHOD_(VOID, ProcessingObjectWork)(THIS) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(PKSGATE, GetAndGate)(THIS) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(VOID, Process)(THIS_
|
|
|
|
IN BOOLEAN Asynchronous)PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(VOID, Reset)(THIS) PURE;
|
|
|
|
|
|
|
|
STDMETHOD_(VOID, TriggerNotification)(THIS) PURE;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
#undef INTERFACE
|
|
|
|
|