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
/*
* COPYRIGHT : See COPYING in the top level directory
* PROJECT : ReactOS Kernel Streaming
* FILE : drivers / ksfilter / ks / filter . c
* PURPOSE : KS IKsFilter interface functions
* PROGRAMMER : Johannes Anderwald
*/
2014-01-29 10:59:06 +00:00
# include "precomp.h"
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
2014-01-02 11:34:12 +00:00
# define NDEBUG
# include <debug.h>
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
typedef struct
{
2009-07-22 14:42:51 +00:00
KSBASIC_HEADER Header ;
KSFILTER Filter ;
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
IKsControlVtbl * lpVtblKsControl ;
IKsFilterFactory * FilterFactory ;
2010-12-22 15:20:38 +00:00
IKsProcessingObjectVtbl * lpVtblKsProcessingObject ;
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
LONG ref ;
PKSIOBJECT_HEADER ObjectHeader ;
KSTOPOLOGY Topology ;
PKSFILTERFACTORY Factory ;
PFILE_OBJECT FileObject ;
2010-04-02 16:38:48 +00:00
KMUTEX ControlMutex ;
2009-07-28 17:01:36 +00:00
KMUTEX ProcessingMutex ;
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
2010-12-22 15:20:38 +00:00
PKSWORKER Worker ;
WORK_QUEUE_ITEM WorkItem ;
KSGATE Gate ;
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
2009-07-28 17:01:36 +00:00
PFNKSFILTERPOWER Sleep ;
PFNKSFILTERPOWER Wake ;
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
ULONG * PinInstanceCount ;
2009-08-15 13:45:06 +00:00
PKSPIN * FirstPin ;
2010-04-02 16:38:48 +00:00
PKSPROCESSPIN_INDEXENTRY ProcessPinIndex ;
2009-08-15 13:45:06 +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
} IKsFilterImpl ;
const GUID IID_IKsControl = { 0x28F54685L , 0x06FD , 0x11D2 , { 0xB2 , 0x7A , 0x00 , 0xA0 , 0xC9 , 0x22 , 0x31 , 0x96 } } ;
const GUID IID_IKsFilter = { 0x3ef6ee44L , 0x0D41 , 0x11d2 , { 0xbe , 0xDA , 0x00 , 0xc0 , 0x4f , 0x8e , 0xF4 , 0x57 } } ;
const GUID KSPROPSETID_Topology = { 0x720D4AC0L , 0x7533 , 0x11D0 , { 0xA5 , 0xD6 , 0x28 , 0xDB , 0x04 , 0xC1 , 0x00 , 0x00 } } ;
const GUID KSPROPSETID_Pin = { 0x8C134960L , 0x51AD , 0x11CF , { 0x87 , 0x8A , 0x94 , 0xF8 , 0x01 , 0xC1 , 0x00 , 0x00 } } ;
2016-10-20 20:02:43 +00:00
const GUID KSPROPSETID_General = { 0x1464EDA5L , 0x6A8F , 0x11D1 , { 0x9A , 0xA7 , 0x00 , 0xA0 , 0xC9 , 0x22 , 0x31 , 0x96 } } ;
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
2010-04-08 20:14:38 +00:00
VOID
IKsFilter_RemoveFilterFromFilterFactory (
IKsFilterImpl * This ,
PKSFILTERFACTORY FilterFactory ) ;
2010-04-15 10:07:38 +00:00
NTSTATUS NTAPI FilterTopologyPropertyHandler ( IN PIRP Irp , IN PKSIDENTIFIER Request , IN OUT PVOID Data ) ;
NTSTATUS NTAPI FilterPinPropertyHandler ( IN PIRP Irp , IN PKSIDENTIFIER Request , IN OUT PVOID Data ) ;
2016-10-20 20:02:43 +00:00
NTSTATUS NTAPI FilterGeneralComponentIdHandler ( IN PIRP Irp , IN PKSIDENTIFIER Request , IN OUT PVOID Data ) ;
2010-04-15 10:07:38 +00:00
DEFINE_KSPROPERTY_TOPOLOGYSET ( IKsFilterTopologySet , FilterTopologyPropertyHandler ) ;
DEFINE_KSPROPERTY_PINPROPOSEDATAFORMAT ( IKsFilterPinSet , FilterPinPropertyHandler , FilterPinPropertyHandler , FilterPinPropertyHandler ) ;
2016-10-20 20:02:43 +00:00
DEFINE_KSPROPERTY_GENEREAL_COMPONENTID ( IKsFilterGeneralSet , FilterGeneralComponentIdHandler ) ;
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
KSPROPERTY_SET FilterPropertySet [ ] =
{
{
& KSPROPSETID_Topology ,
sizeof ( IKsFilterTopologySet ) / sizeof ( KSPROPERTY_ITEM ) ,
( const KSPROPERTY_ITEM * ) & IKsFilterTopologySet ,
0 ,
NULL
} ,
{
& KSPROPSETID_Pin ,
sizeof ( IKsFilterPinSet ) / sizeof ( KSPROPERTY_ITEM ) ,
( const KSPROPERTY_ITEM * ) & IKsFilterPinSet ,
0 ,
NULL
2016-10-20 20:02:43 +00:00
} ,
{
& KSPROPSETID_General ,
sizeof ( IKsFilterGeneralSet ) / sizeof ( KSPROPERTY_ITEM ) ,
( const KSPROPERTY_ITEM * ) & IKsFilterGeneralSet ,
0 ,
NULL
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
}
} ;
2010-12-22 15:20:38 +00:00
NTSTATUS
NTAPI
IKsProcessingObject_fnQueryInterface (
IKsProcessingObject * iface ,
IN REFIID refiid ,
OUT PVOID * Output )
{
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( iface , IKsFilterImpl , lpVtblKsProcessingObject ) ;
if ( IsEqualGUIDAligned ( refiid , & IID_IUnknown ) )
{
* Output = & This - > Header . OuterUnknown ;
_InterlockedIncrement ( & This - > ref ) ;
return STATUS_SUCCESS ;
}
return STATUS_UNSUCCESSFUL ;
}
ULONG
NTAPI
IKsProcessingObject_fnAddRef (
IKsProcessingObject * iface )
{
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( iface , IKsFilterImpl , lpVtblKsProcessingObject ) ;
return InterlockedIncrement ( & This - > ref ) ;
}
ULONG
NTAPI
IKsProcessingObject_fnRelease (
IKsProcessingObject * iface )
{
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( iface , IKsFilterImpl , lpVtblKsProcessingObject ) ;
InterlockedDecrement ( & This - > ref ) ;
/* Return new reference count */
return This - > ref ;
}
VOID
NTAPI
IKsProcessingObject_fnProcessingObjectWork (
IKsProcessingObject * iface )
{
NTSTATUS Status ;
LARGE_INTEGER TimeOut ;
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( iface , IKsFilterImpl , lpVtblKsProcessingObject ) ;
DPRINT1 ( " processing object \n " ) ;
/* first check if running at passive level */
if ( KeGetCurrentIrql ( ) = = PASSIVE_LEVEL )
{
/* acquire processing mutex */
KeWaitForSingleObject ( & This - > ControlMutex , Executive , KernelMode , FALSE , NULL ) ;
}
else
{
/* dispatch level processing */
if ( KeReadStateMutex ( & This - > ControlMutex ) = = 0 )
{
/* some thread was faster */
DPRINT1 ( " processing object too slow \n " ) ;
return ;
}
/* acquire processing mutex */
TimeOut . QuadPart = 0LL ;
Status = KeWaitForSingleObject ( & This - > ControlMutex , Executive , KernelMode , FALSE , & TimeOut ) ;
if ( Status = = STATUS_TIMEOUT )
{
/* some thread was faster */
DPRINT1 ( " processing object too slow \n " ) ;
return ;
}
}
do
{
/* check if the and-gate has been enabled again */
if ( & This - > Gate . Count ! = 0 )
{
/* gate is open */
2011-01-28 10:37:27 +00:00
DPRINT1 ( " processing object gate open \n " ) ;
2010-12-22 15:20:38 +00:00
break ;
}
DPRINT1 ( " IKsProcessingObject_fnProcessingObjectWork not implemented \n " ) ;
ASSERT ( 0 ) ;
} while ( TRUE ) ;
/* release process mutex */
KeReleaseMutex ( & This - > ProcessingMutex , FALSE ) ;
}
PKSGATE
NTAPI
IKsProcessingObject_fnGetAndGate (
IKsProcessingObject * iface )
{
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( iface , IKsFilterImpl , lpVtblKsProcessingObject ) ;
/* return and gate */
return & This - > Gate ;
}
VOID
NTAPI
IKsProcessingObject_fnProcess (
IKsProcessingObject * iface ,
IN BOOLEAN Asynchronous )
{
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( iface , IKsFilterImpl , lpVtblKsProcessingObject ) ;
/* should the action be asynchronous */
if ( Asynchronous )
{
/* queue work item */
KsQueueWorkItem ( This - > Worker , & This - > WorkItem ) ;
DPRINT1 ( " queueing \n " ) ;
/* done */
return ;
}
/* does the filter require explicit deferred processing */
2011-08-24 22:09:04 +00:00
if ( ( This - > Filter . Descriptor - > Flags & ( KSFILTER_FLAG_DISPATCH_LEVEL_PROCESSING | KSFILTER_FLAG_CRITICAL_PROCESSING | KSFILTER_FLAG_HYPERCRITICAL_PROCESSING ) ) & &
2010-12-22 15:20:38 +00:00
KeGetCurrentIrql ( ) > PASSIVE_LEVEL )
{
/* queue work item */
KsQueueWorkItem ( This - > Worker , & This - > WorkItem ) ;
DPRINT1 ( " queueing \n " ) ;
/* done */
return ;
}
DPRINT1 ( " invoke \n " ) ;
/* call worker routine directly */
iface - > lpVtbl - > ProcessingObjectWork ( iface ) ;
}
VOID
NTAPI
IKsProcessingObject_fnReset (
IKsProcessingObject * iface )
{
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( iface , IKsFilterImpl , lpVtblKsProcessingObject ) ;
/* acquire processing mutex */
KeWaitForSingleObject ( & This - > ProcessingMutex , Executive , KernelMode , FALSE , NULL ) ;
/* check if the filter supports dispatch routines */
if ( This - > Filter . Descriptor - > Dispatch )
{
/* has the filter a reset routine */
if ( This - > Filter . Descriptor - > Dispatch - > Reset )
{
/* reset filter */
This - > Filter . Descriptor - > Dispatch - > Reset ( & This - > Filter ) ;
}
}
/* release process mutex */
KeReleaseMutex ( & This - > ProcessingMutex , FALSE ) ;
}
VOID
NTAPI
IKsProcessingObject_fnTriggerNotification (
IKsProcessingObject * iface )
{
}
static IKsProcessingObjectVtbl vt_IKsProcessingObject =
{
IKsProcessingObject_fnQueryInterface ,
IKsProcessingObject_fnAddRef ,
IKsProcessingObject_fnRelease ,
IKsProcessingObject_fnProcessingObjectWork ,
IKsProcessingObject_fnGetAndGate ,
IKsProcessingObject_fnProcess ,
IKsProcessingObject_fnReset ,
IKsProcessingObject_fnTriggerNotification
} ;
//---------------------------------------------------------------------------------------------------------
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
NTSTATUS
NTAPI
IKsControl_fnQueryInterface (
IKsControl * iface ,
IN REFIID refiid ,
OUT PVOID * Output )
{
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( iface , IKsFilterImpl , lpVtblKsControl ) ;
if ( IsEqualGUIDAligned ( refiid , & IID_IUnknown ) )
{
2010-04-15 10:07:38 +00:00
* Output = & This - > Header . OuterUnknown ;
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
_InterlockedIncrement ( & This - > ref ) ;
return STATUS_SUCCESS ;
}
return STATUS_UNSUCCESSFUL ;
}
ULONG
NTAPI
IKsControl_fnAddRef (
IKsControl * iface )
{
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( iface , IKsFilterImpl , lpVtblKsControl ) ;
return InterlockedIncrement ( & This - > ref ) ;
}
ULONG
NTAPI
IKsControl_fnRelease (
IKsControl * iface )
{
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( iface , IKsFilterImpl , lpVtblKsControl ) ;
InterlockedDecrement ( & This - > ref ) ;
/* Return new reference count */
return This - > ref ;
}
NTSTATUS
NTAPI
IKsControl_fnKsProperty (
IKsControl * iface ,
IN PKSPROPERTY Property ,
IN ULONG PropertyLength ,
IN OUT PVOID PropertyData ,
IN ULONG DataLength ,
OUT ULONG * BytesReturned )
{
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( iface , IKsFilterImpl , lpVtblKsControl ) ;
return KsSynchronousIoControlDevice ( This - > FileObject , KernelMode , IOCTL_KS_PROPERTY , Property , PropertyLength , PropertyData , DataLength , BytesReturned ) ;
}
NTSTATUS
NTAPI
IKsControl_fnKsMethod (
IKsControl * iface ,
IN PKSMETHOD Method ,
IN ULONG MethodLength ,
IN OUT PVOID MethodData ,
IN ULONG DataLength ,
OUT ULONG * BytesReturned )
{
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( iface , IKsFilterImpl , lpVtblKsControl ) ;
return KsSynchronousIoControlDevice ( This - > FileObject , KernelMode , IOCTL_KS_METHOD , Method , MethodLength , MethodData , DataLength , BytesReturned ) ;
}
NTSTATUS
NTAPI
IKsControl_fnKsEvent (
IKsControl * iface ,
IN PKSEVENT Event OPTIONAL ,
IN ULONG EventLength ,
IN OUT PVOID EventData ,
IN ULONG DataLength ,
OUT ULONG * BytesReturned )
{
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( iface , IKsFilterImpl , lpVtblKsControl ) ;
if ( Event )
{
return KsSynchronousIoControlDevice ( This - > FileObject , KernelMode , IOCTL_KS_ENABLE_EVENT , Event , EventLength , EventData , DataLength , BytesReturned ) ;
}
else
{
return KsSynchronousIoControlDevice ( This - > FileObject , KernelMode , IOCTL_KS_DISABLE_EVENT , EventData , DataLength , NULL , 0 , BytesReturned ) ;
}
}
static IKsControlVtbl vt_IKsControl =
{
IKsControl_fnQueryInterface ,
IKsControl_fnAddRef ,
IKsControl_fnRelease ,
IKsControl_fnKsProperty ,
IKsControl_fnKsMethod ,
IKsControl_fnKsEvent
} ;
NTSTATUS
NTAPI
IKsFilter_fnQueryInterface (
IKsFilter * iface ,
IN REFIID refiid ,
OUT PVOID * Output )
{
2010-04-15 10:07:38 +00:00
NTSTATUS Status ;
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( iface , IKsFilterImpl , Header . OuterUnknown ) ;
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
if ( IsEqualGUIDAligned ( refiid , & IID_IUnknown ) | |
IsEqualGUIDAligned ( refiid , & IID_IKsFilter ) )
{
2010-04-15 10:07:38 +00:00
* Output = & This - > Header . OuterUnknown ;
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
_InterlockedIncrement ( & This - > ref ) ;
return STATUS_SUCCESS ;
}
else if ( IsEqualGUIDAligned ( refiid , & IID_IKsControl ) )
{
* Output = & This - > lpVtblKsControl ;
_InterlockedIncrement ( & This - > ref ) ;
return STATUS_SUCCESS ;
}
2010-04-15 10:07:38 +00:00
if ( This - > Header . ClientAggregate )
{
/* using client aggregate */
Status = This - > Header . ClientAggregate - > lpVtbl - > QueryInterface ( This - > Header . ClientAggregate , refiid , Output ) ;
if ( NT_SUCCESS ( Status ) )
{
/* client aggregate supports interface */
return Status ;
}
}
DPRINT ( " IKsFilter_fnQueryInterface no interface \n " ) ;
return STATUS_NOT_SUPPORTED ;
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
}
ULONG
NTAPI
IKsFilter_fnAddRef (
IKsFilter * iface )
{
2010-04-15 10:07:38 +00:00
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( iface , IKsFilterImpl , Header . OuterUnknown ) ;
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
return InterlockedIncrement ( & This - > ref ) ;
}
ULONG
NTAPI
IKsFilter_fnRelease (
IKsFilter * iface )
{
2010-04-15 10:07:38 +00:00
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( iface , IKsFilterImpl , Header . OuterUnknown ) ;
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
InterlockedDecrement ( & This - > ref ) ;
if ( This - > ref = = 0 )
{
FreeItem ( This ) ;
return 0 ;
}
/* Return new reference count */
return This - > ref ;
}
PKSFILTER
NTAPI
IKsFilter_fnGetStruct (
IKsFilter * iface )
{
2010-04-15 10:07:38 +00:00
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( iface , IKsFilterImpl , Header . OuterUnknown ) ;
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
return & This - > Filter ;
}
BOOL
NTAPI
IKsFilter_fnDoAllNecessaryPinsExist (
IKsFilter * iface )
{
2017-02-06 15:49:23 +00:00
UNIMPLEMENTED ;
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
return FALSE ;
}
NTSTATUS
NTAPI
IKsFilter_fnCreateNode (
IKsFilter * iface ,
IN PIRP Irp ,
IN IKsPin * Pin ,
IN PLIST_ENTRY ListEntry )
{
2017-02-06 15:49:23 +00:00
UNIMPLEMENTED ;
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
return STATUS_NOT_IMPLEMENTED ;
}
NTSTATUS
NTAPI
IKsFilter_fnBindProcessPinsToPipeSection (
IKsFilter * iface ,
IN struct KSPROCESSPIPESECTION * Section ,
IN PVOID Create ,
IN PKSPIN KsPin ,
OUT IKsPin * * Pin ,
OUT PKSGATE * OutGate )
{
2017-02-06 15:49:23 +00:00
UNIMPLEMENTED ;
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
return STATUS_NOT_IMPLEMENTED ;
}
NTSTATUS
NTAPI
IKsFilter_fnUnbindProcessPinsFromPipeSection (
IKsFilter * iface ,
IN struct KSPROCESSPIPESECTION * Section )
{
2017-02-06 15:49:23 +00:00
UNIMPLEMENTED ;
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
return STATUS_NOT_IMPLEMENTED ;
}
NTSTATUS
NTAPI
IKsFilter_fnAddProcessPin (
IKsFilter * iface ,
IN PKSPROCESSPIN ProcessPin )
{
2010-04-01 14:53:16 +00:00
NTSTATUS Status ;
2010-04-15 10:07:38 +00:00
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( iface , IKsFilterImpl , Header . OuterUnknown ) ;
2009-08-15 13:45:06 +00:00
/* first acquire processing mutex */
KeWaitForSingleObject ( & This - > ProcessingMutex , Executive , KernelMode , FALSE , NULL ) ;
2010-04-02 16:38:48 +00:00
/* sanity check */
2010-04-15 10:07:38 +00:00
ASSERT ( This - > Filter . Descriptor - > PinDescriptorsCount > ProcessPin - > Pin - > Id ) ;
2010-04-02 16:38:48 +00:00
/* allocate new process pin array */
Status = _KsEdit ( This - > Filter . Bag , ( PVOID * ) & This - > ProcessPinIndex [ ProcessPin - > Pin - > Id ] . Pins ,
2011-08-24 22:09:04 +00:00
( This - > Filter . Descriptor - > PinDescriptorsCount + 1 ) * sizeof ( PVOID ) ,
This - > Filter . Descriptor - > PinDescriptorsCount * sizeof ( PVOID ) ,
2010-04-01 14:53:16 +00:00
0 ) ;
2009-08-15 13:45:06 +00:00
2010-04-01 14:53:16 +00:00
if ( NT_SUCCESS ( Status ) )
2009-08-15 13:45:06 +00:00
{
2010-04-02 16:38:48 +00:00
/* store process pin */
This - > ProcessPinIndex [ ProcessPin - > Pin - > Id ] . Pins [ This - > ProcessPinIndex [ ProcessPin - > Pin - > Id ] . Count ] = ProcessPin ;
This - > ProcessPinIndex [ ProcessPin - > Pin - > Id ] . Count + + ;
2009-08-15 13:45:06 +00:00
}
/* release process mutex */
KeReleaseMutex ( & This - > ProcessingMutex , FALSE ) ;
2010-04-01 14:53:16 +00:00
return Status ;
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
}
NTSTATUS
NTAPI
IKsFilter_fnRemoveProcessPin (
IKsFilter * iface ,
IN PKSPROCESSPIN ProcessPin )
{
2009-08-15 13:45:06 +00:00
ULONG Index ;
2010-04-02 16:38:48 +00:00
ULONG Count ;
PKSPROCESSPIN * Pins ;
2010-04-15 10:07:38 +00:00
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( iface , IKsFilterImpl , Header . OuterUnknown ) ;
2009-08-15 13:45:06 +00:00
/* first acquire processing mutex */
KeWaitForSingleObject ( & This - > ProcessingMutex , Executive , KernelMode , FALSE , NULL ) ;
2010-04-02 16:38:48 +00:00
/* sanity check */
ASSERT ( ProcessPin - > Pin ) ;
ASSERT ( ProcessPin - > Pin - > Id ) ;
Count = This - > ProcessPinIndex [ ProcessPin - > Pin - > Id ] . Count ;
Pins = This - > ProcessPinIndex [ ProcessPin - > Pin - > Id ] . Pins ;
/* search for current process pin */
for ( Index = 0 ; Index < Count ; Index + + )
2009-08-15 13:45:06 +00:00
{
2010-04-02 16:38:48 +00:00
if ( Pins [ Index ] = = ProcessPin )
2009-08-15 13:45:06 +00:00
{
2011-08-24 22:09:04 +00:00
RtlMoveMemory ( & Pins [ Index ] , & Pins [ Index + 1 ] , ( Count - ( Index + 1 ) ) * sizeof ( PVOID ) ) ;
2010-04-02 16:38:48 +00:00
break ;
2009-08-15 13:45:06 +00:00
}
2010-04-02 16:38:48 +00:00
}
/* decrement pin count */
This - > ProcessPinIndex [ ProcessPin - > Pin - > Id ] . Count - - ;
if ( ! This - > ProcessPinIndex [ ProcessPin - > Pin - > Id ] . Count )
{
/* clear entry object bag will delete it */
This - > ProcessPinIndex [ ProcessPin - > Pin - > Id ] . Pins = NULL ;
2009-08-15 13:45:06 +00:00
}
/* release process mutex */
KeReleaseMutex ( & This - > ProcessingMutex , FALSE ) ;
/* done */
return STATUS_SUCCESS ;
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
}
BOOL
NTAPI
IKsFilter_fnReprepareProcessPipeSection (
IKsFilter * iface ,
IN struct KSPROCESSPIPESECTION * PipeSection ,
IN PULONG Data )
{
2017-02-06 15:49:23 +00:00
UNIMPLEMENTED ;
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
return FALSE ;
}
VOID
NTAPI
IKsFilter_fnDeliverResetState (
IKsFilter * iface ,
IN struct KSPROCESSPIPESECTION * PipeSection ,
IN KSRESET ResetState )
{
2017-02-06 15:49:23 +00:00
UNIMPLEMENTED ;
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
}
BOOL
NTAPI
IKsFilter_fnIsFrameHolding (
IKsFilter * iface )
{
2017-02-06 15:49:23 +00:00
UNIMPLEMENTED ;
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
return FALSE ;
}
VOID
NTAPI
IKsFilter_fnRegisterForCopyCallbacks (
IKsFilter * iface ,
IKsQueue * Queue ,
BOOL Register )
{
2017-02-06 15:49:23 +00:00
UNIMPLEMENTED ;
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
}
PKSPROCESSPIN_INDEXENTRY
NTAPI
IKsFilter_fnGetProcessDispatch (
IKsFilter * iface )
{
2010-04-15 10:07:38 +00:00
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( iface , IKsFilterImpl , Header . OuterUnknown ) ;
2010-04-02 16:38:48 +00:00
return This - > ProcessPinIndex ;
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
}
static IKsFilterVtbl vt_IKsFilter =
{
IKsFilter_fnQueryInterface ,
IKsFilter_fnAddRef ,
IKsFilter_fnRelease ,
IKsFilter_fnGetStruct ,
IKsFilter_fnDoAllNecessaryPinsExist ,
IKsFilter_fnCreateNode ,
IKsFilter_fnBindProcessPinsToPipeSection ,
IKsFilter_fnUnbindProcessPinsFromPipeSection ,
IKsFilter_fnAddProcessPin ,
IKsFilter_fnRemoveProcessPin ,
IKsFilter_fnReprepareProcessPipeSection ,
IKsFilter_fnDeliverResetState ,
IKsFilter_fnIsFrameHolding ,
IKsFilter_fnRegisterForCopyCallbacks ,
IKsFilter_fnGetProcessDispatch
} ;
NTSTATUS
IKsFilter_GetFilterFromIrp (
IN PIRP Irp ,
OUT IKsFilter * * Filter )
{
PIO_STACK_LOCATION IoStack ;
PKSIOBJECT_HEADER ObjectHeader ;
NTSTATUS Status ;
/* get current irp stack */
IoStack = IoGetCurrentIrpStackLocation ( Irp ) ;
2016-11-13 15:31:39 +00:00
/* sanity check */
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
ASSERT ( IoStack - > FileObject ! = NULL ) ;
2009-09-12 14:35:27 +00:00
ObjectHeader = ( PKSIOBJECT_HEADER ) IoStack - > FileObject - > FsContext2 ;
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
/* sanity is important */
ASSERT ( ObjectHeader ! = NULL ) ;
ASSERT ( ObjectHeader - > Type = = KsObjectTypeFilter ) ;
ASSERT ( ObjectHeader - > Unknown ! = NULL ) ;
/* get our private interface */
Status = ObjectHeader - > Unknown - > lpVtbl - > QueryInterface ( ObjectHeader - > Unknown , & IID_IKsFilter , ( PVOID * ) Filter ) ;
if ( ! NT_SUCCESS ( Status ) )
{
/* something is wrong here */
DPRINT1 ( " KS: Misbehaving filter %p \n " , ObjectHeader - > Unknown ) ;
Irp - > IoStatus . Status = Status ;
/* complete and forget irp */
2010-12-21 13:06:47 +00:00
CompleteRequest ( Irp , IO_NO_INCREMENT ) ;
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
return Status ;
}
return Status ;
}
NTSTATUS
NTAPI
IKsFilter_DispatchClose (
IN PDEVICE_OBJECT DeviceObject ,
IN PIRP Irp )
{
IKsFilter * Filter ;
IKsFilterImpl * This ;
NTSTATUS Status ;
/* obtain filter from object header */
Status = IKsFilter_GetFilterFromIrp ( Irp , & Filter ) ;
if ( ! NT_SUCCESS ( Status ) )
return Status ;
/* get our real implementation */
2010-04-15 10:07:38 +00:00
This = ( IKsFilterImpl * ) CONTAINING_RECORD ( Filter , IKsFilterImpl , Header . OuterUnknown ) ;
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
/* does the driver support notifications */
2010-04-15 10:07:38 +00:00
if ( This - > Filter . Descriptor & & This - > Filter . Descriptor - > Dispatch & & This - > Filter . Descriptor - > Dispatch - > Close )
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
{
/* call driver's filter close function */
2010-04-15 10:07:38 +00:00
Status = This - > Filter . Descriptor - > Dispatch - > Close ( & This - > Filter , Irp ) ;
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
}
2009-07-30 14:20:13 +00:00
if ( NT_SUCCESS ( Status ) & & Status ! = STATUS_PENDING )
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
{
/* save the result */
Irp - > IoStatus . Status = Status ;
/* complete irp */
2010-12-21 13:06:47 +00:00
CompleteRequest ( Irp , IO_NO_INCREMENT ) ;
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
2010-04-08 20:14:38 +00:00
/* remove our instance from the filter factory */
IKsFilter_RemoveFilterFromFilterFactory ( This , This - > Factory ) ;
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
/* free object header */
KsFreeObjectHeader ( This - > ObjectHeader ) ;
}
2009-08-11 15:22:06 +00:00
else
{
/* complete and forget */
Irp - > IoStatus . Status = Status ;
/* complete irp */
2010-12-21 13:06:47 +00:00
CompleteRequest ( Irp , IO_NO_INCREMENT ) ;
2009-08-11 15:22:06 +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
/* done */
return Status ;
}
NTSTATUS
KspHandlePropertyInstances (
IN PIO_STATUS_BLOCK IoStatus ,
IN PKSIDENTIFIER Request ,
IN OUT PVOID Data ,
IN IKsFilterImpl * This ,
IN BOOL Global )
{
KSPIN_CINSTANCES * Instances ;
KSP_PIN * Pin = ( KSP_PIN * ) Request ;
2010-04-15 10:07:38 +00:00
if ( ! This - > Filter . Descriptor | | ! This - > Filter . Descriptor - > PinDescriptorsCount )
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
{
/* no filter / pin descriptor */
IoStatus - > Status = STATUS_NOT_IMPLEMENTED ;
return STATUS_NOT_IMPLEMENTED ;
}
/* ignore custom structs for now */
2011-08-24 22:09:04 +00:00
ASSERT ( This - > Filter . Descriptor - > PinDescriptorSize = = sizeof ( KSPIN_DESCRIPTOR_EX ) ) ;
2010-04-15 10:07:38 +00:00
ASSERT ( This - > Filter . Descriptor - > PinDescriptorsCount > Pin - > PinId ) ;
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
Instances = ( KSPIN_CINSTANCES * ) Data ;
/* max instance count */
2010-04-15 10:07:38 +00:00
Instances - > PossibleCount = This - > Filter . Descriptor - > PinDescriptors [ Pin - > PinId ] . InstancesPossible ;
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
/* current instance count */
Instances - > CurrentCount = This - > PinInstanceCount [ Pin - > PinId ] ;
IoStatus - > Information = sizeof ( KSPIN_CINSTANCES ) ;
IoStatus - > Status = STATUS_SUCCESS ;
return STATUS_SUCCESS ;
}
NTSTATUS
KspHandleNecessaryPropertyInstances (
IN PIO_STATUS_BLOCK IoStatus ,
IN PKSIDENTIFIER Request ,
IN OUT PVOID Data ,
IN IKsFilterImpl * This )
{
PULONG Result ;
KSP_PIN * Pin = ( KSP_PIN * ) Request ;
2010-04-15 10:07:38 +00:00
if ( ! This - > Filter . Descriptor | | ! This - > Filter . Descriptor - > PinDescriptorsCount )
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
{
/* no filter / pin descriptor */
IoStatus - > Status = STATUS_NOT_IMPLEMENTED ;
return STATUS_NOT_IMPLEMENTED ;
}
/* ignore custom structs for now */
2011-08-24 22:09:04 +00:00
ASSERT ( This - > Filter . Descriptor - > PinDescriptorSize = = sizeof ( KSPIN_DESCRIPTOR_EX ) ) ;
2010-04-15 10:07:38 +00:00
ASSERT ( This - > Filter . Descriptor - > PinDescriptorsCount > Pin - > PinId ) ;
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
Result = ( PULONG ) Data ;
2010-04-15 10:07:38 +00:00
* Result = This - > Filter . Descriptor - > PinDescriptors [ Pin - > PinId ] . InstancesNecessary ;
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
IoStatus - > Information = sizeof ( ULONG ) ;
IoStatus - > Status = STATUS_SUCCESS ;
return STATUS_SUCCESS ;
}
NTSTATUS
KspHandleDataIntersection (
IN PIRP Irp ,
IN PIO_STATUS_BLOCK IoStatus ,
IN PKSIDENTIFIER Request ,
IN OUT PVOID Data ,
IN ULONG DataLength ,
IN IKsFilterImpl * This )
{
PKSMULTIPLE_ITEM MultipleItem ;
PKSDATARANGE DataRange ;
NTSTATUS Status = STATUS_NO_MATCH ;
ULONG Index , Length ;
2010-04-15 10:07:38 +00:00
PIO_STACK_LOCATION IoStack ;
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
KSP_PIN * Pin = ( KSP_PIN * ) Request ;
2010-04-15 10:07:38 +00:00
/* get stack location */
IoStack = IoGetCurrentIrpStackLocation ( Irp ) ;
/* sanity check */
ASSERT ( DataLength = = IoStack - > Parameters . DeviceIoControl . OutputBufferLength ) ;
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
/* Access parameters */
MultipleItem = ( PKSMULTIPLE_ITEM ) ( Pin + 1 ) ;
DataRange = ( PKSDATARANGE ) ( MultipleItem + 1 ) ;
2010-04-08 20:14:38 +00:00
/* FIXME make sure its 64 bit aligned */
2010-04-09 18:31:53 +00:00
ASSERT ( ( ( ULONG_PTR ) DataRange & 0x7 ) = = 0 ) ;
2010-04-08 20:14:38 +00:00
2010-04-15 10:07:38 +00:00
if ( ! This - > Filter . Descriptor | | ! This - > Filter . Descriptor - > PinDescriptorsCount )
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
{
/* no filter / pin descriptor */
IoStatus - > Status = STATUS_NOT_IMPLEMENTED ;
return STATUS_NOT_IMPLEMENTED ;
}
/* ignore custom structs for now */
2011-08-24 22:09:04 +00:00
ASSERT ( This - > Filter . Descriptor - > PinDescriptorSize = = sizeof ( KSPIN_DESCRIPTOR_EX ) ) ;
2010-04-15 10:07:38 +00:00
ASSERT ( This - > Filter . Descriptor - > PinDescriptorsCount > Pin - > PinId ) ;
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
2010-04-15 10:07:38 +00:00
if ( This - > Filter . Descriptor - > PinDescriptors [ Pin - > PinId ] . IntersectHandler = = NULL | |
This - > Filter . Descriptor - > PinDescriptors [ Pin - > PinId ] . PinDescriptor . DataRanges = = NULL | |
This - > Filter . Descriptor - > PinDescriptors [ Pin - > PinId ] . PinDescriptor . DataRangesCount = = 0 )
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
{
/* no driver supported intersect handler / no provided data ranges */
IoStatus - > Status = STATUS_NOT_IMPLEMENTED ;
return STATUS_NOT_IMPLEMENTED ;
}
for ( Index = 0 ; Index < MultipleItem - > Count ; Index + + )
{
2010-04-09 18:31:53 +00:00
UNICODE_STRING MajorFormat , SubFormat , Specifier ;
/* convert the guid to string */
RtlStringFromGUID ( & DataRange - > MajorFormat , & MajorFormat ) ;
RtlStringFromGUID ( & DataRange - > SubFormat , & SubFormat ) ;
RtlStringFromGUID ( & DataRange - > Specifier , & Specifier ) ;
2010-04-15 10:07:38 +00:00
DPRINT ( " KspHandleDataIntersection Index %lu PinId %lu MajorFormat %S SubFormat %S Specifier %S FormatSize %lu SampleSize %lu Align %lu Flags %lx Reserved %lx DataLength %lu \n " , Index , Pin - > PinId , MajorFormat . Buffer , SubFormat . Buffer , Specifier . Buffer ,
DataRange - > FormatSize , DataRange - > SampleSize , DataRange - > Alignment , DataRange - > Flags , DataRange - > Reserved , DataLength ) ;
2010-04-09 18:31:53 +00:00
/* FIXME implement KsPinDataIntersectionEx */
2016-11-13 15:31:39 +00:00
/* Call miniport's proprietary handler */
2010-04-15 10:07:38 +00:00
Status = This - > Filter . Descriptor - > PinDescriptors [ Pin - > PinId ] . IntersectHandler ( & This - > Filter ,
Irp ,
Pin ,
DataRange ,
This - > Filter . Descriptor - > PinDescriptors [ Pin - > PinId ] . PinDescriptor . DataRanges [ 0 ] , /* HACK */
DataLength ,
Data ,
& Length ) ;
DPRINT ( " KspHandleDataIntersection Status %lx \n " , Status ) ;
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
2010-04-09 18:31:53 +00:00
if ( Status = = STATUS_SUCCESS | | Status = = STATUS_BUFFER_OVERFLOW | | Status = = STATUS_BUFFER_TOO_SMALL )
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
{
2010-04-09 18:31:53 +00:00
ASSERT ( Length ) ;
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
IoStatus - > Information = Length ;
break ;
}
2010-04-09 18:31:53 +00:00
2012-04-03 14:31:15 +00:00
DataRange = ( PKSDATARANGE ) ( ( PUCHAR ) DataRange + DataRange - > FormatSize ) ;
2010-04-08 20:14:38 +00:00
/* FIXME make sure its 64 bit aligned */
2010-04-09 18:31:53 +00:00
ASSERT ( ( ( ULONG_PTR ) DataRange & 0x7 ) = = 0 ) ;
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
}
IoStatus - > Status = Status ;
return Status ;
}
2010-04-09 18:31:53 +00:00
NTSTATUS
NTAPI
2010-04-15 10:07:38 +00:00
FilterTopologyPropertyHandler (
2010-04-09 18:31:53 +00:00
IN PIRP Irp ,
IN PKSIDENTIFIER Request ,
IN OUT PVOID Data )
{
IKsFilterImpl * This ;
/* get filter implementation */
This = ( IKsFilterImpl * ) KSPROPERTY_ITEM_IRP_STORAGE ( Irp ) ;
/* sanity check */
ASSERT ( This ) ;
return KsTopologyPropertyHandler ( Irp , Request , Data , & This - > Topology ) ;
}
2016-10-20 20:02:43 +00:00
NTSTATUS
NTAPI
FilterGeneralComponentIdHandler (
IN PIRP Irp ,
IN PKSIDENTIFIER Request ,
IN OUT PVOID Data )
{
PIO_STACK_LOCATION IoStack ;
IKsFilterImpl * This ;
/* get filter implementation */
This = ( IKsFilterImpl * ) KSPROPERTY_ITEM_IRP_STORAGE ( Irp ) ;
/* sanity check */
ASSERT ( This ) ;
/* get current stack location */
IoStack = IoGetCurrentIrpStackLocation ( Irp ) ;
ASSERT ( IoStack - > Parameters . DeviceIoControl . OutputBufferLength > = sizeof ( KSCOMPONENTID ) ) ;
if ( This - > Filter . Descriptor - > ComponentId ! = NULL )
{
RtlMoveMemory ( Data , This - > Filter . Descriptor - > ComponentId , sizeof ( KSCOMPONENTID ) ) ;
Irp - > IoStatus . Information = sizeof ( KSCOMPONENTID ) ;
return STATUS_SUCCESS ;
}
else
{
/* not valid */
return STATUS_NOT_FOUND ;
}
}
2010-04-09 18:31:53 +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
NTSTATUS
NTAPI
2010-04-15 10:07:38 +00:00
FilterPinPropertyHandler (
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
IN PIRP Irp ,
IN PKSIDENTIFIER Request ,
IN OUT PVOID Data )
{
PIO_STACK_LOCATION IoStack ;
IKsFilterImpl * This ;
NTSTATUS Status = STATUS_UNSUCCESSFUL ;
/* get filter implementation */
This = ( IKsFilterImpl * ) KSPROPERTY_ITEM_IRP_STORAGE ( Irp ) ;
2010-04-09 18:31:53 +00:00
/* sanity check */
ASSERT ( This ) ;
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
/* get current stack location */
IoStack = IoGetCurrentIrpStackLocation ( Irp ) ;
switch ( Request - > Id )
{
case KSPROPERTY_PIN_CTYPES :
case KSPROPERTY_PIN_DATAFLOW :
case KSPROPERTY_PIN_DATARANGES :
case KSPROPERTY_PIN_INTERFACES :
case KSPROPERTY_PIN_MEDIUMS :
case KSPROPERTY_PIN_COMMUNICATION :
case KSPROPERTY_PIN_CATEGORY :
case KSPROPERTY_PIN_NAME :
2010-04-09 18:31:53 +00:00
case KSPROPERTY_PIN_CONSTRAINEDDATARANGES :
2010-04-15 10:07:38 +00:00
Status = KspPinPropertyHandler ( Irp , Request , Data , This - > Filter . Descriptor - > PinDescriptorsCount , ( const KSPIN_DESCRIPTOR * ) This - > Filter . Descriptor - > PinDescriptors , This - > Filter . Descriptor - > PinDescriptorSize ) ;
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
break ;
case KSPROPERTY_PIN_GLOBALCINSTANCES :
Status = KspHandlePropertyInstances ( & Irp - > IoStatus , Request , Data , This , TRUE ) ;
break ;
case KSPROPERTY_PIN_CINSTANCES :
Status = KspHandlePropertyInstances ( & Irp - > IoStatus , Request , Data , This , FALSE ) ;
break ;
case KSPROPERTY_PIN_NECESSARYINSTANCES :
Status = KspHandleNecessaryPropertyInstances ( & Irp - > IoStatus , Request , Data , This ) ;
break ;
case KSPROPERTY_PIN_DATAINTERSECTION :
Status = KspHandleDataIntersection ( Irp , & Irp - > IoStatus , Request , Data , IoStack - > Parameters . DeviceIoControl . OutputBufferLength , This ) ;
break ;
default :
2017-02-06 15:49:23 +00:00
UNIMPLEMENTED ;
2010-04-09 18:31:53 +00:00
Status = STATUS_NOT_FOUND ;
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
}
2012-03-04 04:44:48 +00:00
DPRINT ( " KspPinPropertyHandler Pins %lu Request->Id %lu Status %lx \n " , This - > Filter . Descriptor - > PinDescriptorsCount , Request - > Id , Status ) ;
2010-04-01 14:53:16 +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
return Status ;
}
NTSTATUS
NTAPI
IKsFilter_DispatchDeviceIoControl (
IN PDEVICE_OBJECT DeviceObject ,
IN PIRP Irp )
{
PIO_STACK_LOCATION IoStack ;
IKsFilter * Filter ;
IKsFilterImpl * This ;
NTSTATUS Status ;
2009-08-24 12:21:20 +00:00
PKSFILTER FilterInstance ;
2010-04-08 20:14:38 +00:00
UNICODE_STRING GuidString ;
PKSPROPERTY Property ;
2010-04-09 18:31:53 +00:00
ULONG SetCount = 0 ;
2016-10-22 19:52:51 +00:00
PKSP_NODE NodeProperty ;
PKSNODE_DESCRIPTOR NodeDescriptor ;
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
/* obtain filter from object header */
Status = IKsFilter_GetFilterFromIrp ( Irp , & Filter ) ;
if ( ! NT_SUCCESS ( Status ) )
return Status ;
/* get our real implementation */
2010-04-15 10:07:38 +00:00
This = ( IKsFilterImpl * ) CONTAINING_RECORD ( Filter , IKsFilterImpl , Header . OuterUnknown ) ;
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
/* current irp stack */
IoStack = IoGetCurrentIrpStackLocation ( Irp ) ;
2010-04-09 18:31:53 +00:00
/* get property from input buffer */
2010-04-08 20:14:38 +00:00
Property = ( PKSPROPERTY ) IoStack - > Parameters . DeviceIoControl . Type3InputBuffer ;
2010-04-09 18:31:53 +00:00
/* get filter instance */
FilterInstance = Filter - > lpVtbl - > GetStruct ( Filter ) ;
2010-04-10 18:00:17 +00:00
/* sanity check */
ASSERT ( IoStack - > Parameters . DeviceIoControl . InputBufferLength > = sizeof ( KSIDENTIFIER ) ) ;
ASSERT ( FilterInstance ) ;
ASSERT ( FilterInstance - > Descriptor ) ;
ASSERT ( FilterInstance - > Descriptor - > AutomationTable ) ;
2010-04-15 10:07:38 +00:00
/* acquire control mutex */
KeWaitForSingleObject ( This - > Header . ControlMutex , Executive , KernelMode , FALSE , NULL ) ;
2010-04-08 20:14:38 +00:00
2010-04-09 18:31:53 +00:00
if ( IoStack - > Parameters . DeviceIoControl . IoControlCode = = IOCTL_KS_METHOD )
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
{
2010-04-09 18:31:53 +00:00
const KSMETHOD_SET * MethodSet = NULL ;
ULONG MethodItemSize = 0 ;
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
2010-04-09 18:31:53 +00:00
/* check if the driver supports method sets */
2010-04-10 18:00:17 +00:00
if ( FilterInstance - > Descriptor - > AutomationTable - > MethodSetsCount )
2010-04-09 18:31:53 +00:00
{
SetCount = FilterInstance - > Descriptor - > AutomationTable - > MethodSetsCount ;
MethodSet = FilterInstance - > Descriptor - > AutomationTable - > MethodSets ;
MethodItemSize = FilterInstance - > Descriptor - > AutomationTable - > MethodItemSize ;
}
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
2010-04-09 18:31:53 +00:00
/* call method set handler */
Status = KspMethodHandlerWithAllocator ( Irp , SetCount , MethodSet , NULL , MethodItemSize ) ;
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
}
2010-04-09 18:31:53 +00:00
else if ( IoStack - > Parameters . DeviceIoControl . IoControlCode = = IOCTL_KS_PROPERTY )
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
{
2010-04-09 18:31:53 +00:00
const KSPROPERTY_SET * PropertySet = NULL ;
ULONG PropertyItemSize = 0 ;
2016-10-22 19:52:51 +00:00
2010-04-09 18:31:53 +00:00
/* check if the driver supports method sets */
2016-10-20 20:02:43 +00:00
if ( Property - > Flags & KSPROPERTY_TYPE_TOPOLOGY )
{
2016-10-22 19:52:51 +00:00
ASSERT ( IoStack - > Parameters . DeviceIoControl . InputBufferLength > = sizeof ( KSP_NODE ) ) ;
2016-10-20 20:02:43 +00:00
NodeProperty = ( PKSP_NODE ) Property ;
2016-10-22 19:52:51 +00:00
NodeDescriptor = ( PKSNODE_DESCRIPTOR ) ( ( ULONG_PTR ) FilterInstance - > Descriptor - > NodeDescriptors + FilterInstance - > Descriptor - > NodeDescriptorSize * NodeProperty - > NodeId ) ;
if ( NodeDescriptor - > AutomationTable ! = NULL )
2016-10-20 20:02:43 +00:00
{
2016-10-22 19:52:51 +00:00
SetCount = NodeDescriptor - > AutomationTable - > PropertySetsCount ;
PropertySet = NodeDescriptor - > AutomationTable - > PropertySets ;
2016-10-20 20:02:43 +00:00
PropertyItemSize = 0 ;
}
2016-10-22 19:52:51 +00:00
}
else if ( FilterInstance - > Descriptor - > AutomationTable - > PropertySetsCount )
2009-08-24 12:21:20 +00:00
{
2010-04-09 18:31:53 +00:00
SetCount = FilterInstance - > Descriptor - > AutomationTable - > PropertySetsCount ;
PropertySet = FilterInstance - > Descriptor - > AutomationTable - > PropertySets ;
PropertyItemSize = FilterInstance - > Descriptor - > AutomationTable - > PropertyItemSize ;
2012-03-04 04:44:48 +00:00
// FIXME: handle variable sized property items
ASSERT ( PropertyItemSize = = sizeof ( KSPROPERTY_ITEM ) ) ;
PropertyItemSize = 0 ;
2009-08-24 12:21:20 +00:00
}
2010-04-09 18:31:53 +00:00
/* needed for our property handlers */
KSPROPERTY_ITEM_IRP_STORAGE ( Irp ) = ( KSPROPERTY_ITEM * ) This ;
/* call property handler */
Status = KspPropertyHandler ( Irp , SetCount , PropertySet , NULL , PropertyItemSize ) ;
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
}
2010-04-09 18:31:53 +00:00
else
{
/* sanity check */
ASSERT ( IoStack - > Parameters . DeviceIoControl . IoControlCode = = IOCTL_KS_ENABLE_EVENT | |
IoStack - > Parameters . DeviceIoControl . IoControlCode = = IOCTL_KS_DISABLE_EVENT ) ;
2010-04-10 18:00:17 +00:00
if ( IoStack - > Parameters . DeviceIoControl . IoControlCode = = IOCTL_KS_ENABLE_EVENT )
{
/* call enable event handlers */
Status = KspEnableEvent ( Irp ,
FilterInstance - > Descriptor - > AutomationTable - > EventSetsCount ,
( PKSEVENT_SET ) FilterInstance - > Descriptor - > AutomationTable - > EventSets ,
& This - > Header . EventList ,
KSEVENTS_SPINLOCK ,
( PVOID ) & This - > Header . EventListLock ,
NULL ,
FilterInstance - > Descriptor - > AutomationTable - > EventItemSize ) ;
}
else
{
/* disable event handler */
Status = KsDisableEvent ( Irp , & This - > Header . EventList , KSEVENTS_SPINLOCK , & This - > Header . EventListLock ) ;
}
2010-04-09 18:31:53 +00:00
}
RtlStringFromGUID ( & Property - > Set , & GuidString ) ;
2012-03-04 04:44:48 +00:00
DPRINT ( " IKsFilter_DispatchDeviceIoControl property PinCount %x \n " , FilterInstance - > Descriptor - > PinDescriptorsCount ) ;
2010-04-09 18:31:53 +00:00
DPRINT ( " IKsFilter_DispatchDeviceIoControl property Set |%S| Id %u Flags %x Status %lx ResultLength %lu \n " , GuidString . Buffer , Property - > Id , Property - > Flags , Status , Irp - > IoStatus . Information ) ;
RtlFreeUnicodeString ( & GuidString ) ;
/* release filter */
Filter - > lpVtbl - > Release ( Filter ) ;
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
2010-04-15 10:07:38 +00:00
/* release control mutex */
KeReleaseMutex ( This - > Header . ControlMutex , FALSE ) ;
2010-04-01 17:22:21 +00:00
if ( Status ! = STATUS_PENDING )
{
Irp - > IoStatus . Status = Status ;
2010-12-21 13:06:47 +00:00
CompleteRequest ( Irp , IO_NO_INCREMENT ) ;
2010-04-01 17:22:21 +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
/* done */
return Status ;
}
static KSDISPATCH_TABLE DispatchTable =
{
IKsFilter_DispatchDeviceIoControl ,
KsDispatchInvalidDeviceRequest ,
KsDispatchInvalidDeviceRequest ,
KsDispatchInvalidDeviceRequest ,
IKsFilter_DispatchClose ,
KsDispatchQuerySecurity ,
KsDispatchSetSecurity ,
KsDispatchFastIoDeviceControlFailure ,
KsDispatchFastReadFailure ,
KsDispatchFastReadFailure ,
} ;
NTSTATUS
IKsFilter_CreateDescriptors (
IKsFilterImpl * This ,
KSFILTER_DESCRIPTOR * FilterDescriptor )
{
ULONG Index = 0 ;
2010-04-01 14:53:16 +00:00
NTSTATUS Status ;
2012-03-04 02:39:37 +00:00
PKSNODE_DESCRIPTOR NodeDescriptor ;
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
/* initialize pin descriptors */
2010-04-01 03:14:45 +00:00
This - > FirstPin = NULL ;
This - > PinInstanceCount = NULL ;
2010-04-02 16:38:48 +00:00
This - > ProcessPinIndex = NULL ;
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
/* initialize topology descriptor */
This - > Topology . CategoriesCount = FilterDescriptor - > CategoriesCount ;
This - > Topology . Categories = FilterDescriptor - > Categories ;
This - > Topology . TopologyNodesCount = FilterDescriptor - > NodeDescriptorsCount ;
This - > Topology . TopologyConnectionsCount = FilterDescriptor - > ConnectionsCount ;
This - > Topology . TopologyConnections = FilterDescriptor - > Connections ;
2010-04-01 14:53:16 +00:00
/* are there any templates */
if ( FilterDescriptor - > PinDescriptorsCount )
{
/* sanity check */
ASSERT ( FilterDescriptor - > PinDescriptors ) ;
/* FIXME handle variable sized pin descriptors */
ASSERT ( FilterDescriptor - > PinDescriptorSize = = sizeof ( KSPIN_DESCRIPTOR_EX ) ) ;
/* store pin descriptors ex */
2010-04-15 10:07:38 +00:00
Status = _KsEdit ( This - > Filter . Bag , ( PVOID * ) & This - > Filter . Descriptor - > PinDescriptors , FilterDescriptor - > PinDescriptorSize * FilterDescriptor - > PinDescriptorsCount ,
FilterDescriptor - > PinDescriptorSize * FilterDescriptor - > PinDescriptorsCount , 0 ) ;
2010-04-01 14:53:16 +00:00
if ( ! NT_SUCCESS ( Status ) )
{
DPRINT ( " IKsFilter_CreateDescriptors _KsEdit failed %lx \n " , Status ) ;
return Status ;
}
2010-04-15 10:07:38 +00:00
/* store pin instance count */
2010-04-01 14:53:16 +00:00
Status = _KsEdit ( This - > Filter . Bag , ( PVOID * ) & This - > PinInstanceCount , sizeof ( ULONG ) * FilterDescriptor - > PinDescriptorsCount ,
sizeof ( ULONG ) * FilterDescriptor - > PinDescriptorsCount , 0 ) ;
if ( ! NT_SUCCESS ( Status ) )
{
DPRINT ( " IKsFilter_CreateDescriptors _KsEdit failed %lx \n " , Status ) ;
return Status ;
}
/* store instantiated pin arrays */
2011-08-24 22:09:04 +00:00
Status = _KsEdit ( This - > Filter . Bag , ( PVOID * ) & This - > FirstPin , sizeof ( PVOID ) * FilterDescriptor - > PinDescriptorsCount ,
sizeof ( PVOID ) * FilterDescriptor - > PinDescriptorsCount , 0 ) ;
2010-04-01 14:53:16 +00:00
if ( ! NT_SUCCESS ( Status ) )
{
DPRINT ( " IKsFilter_CreateDescriptors _KsEdit failed %lx \n " , Status ) ;
return Status ;
}
/* add new pin factory */
2010-04-15 10:07:38 +00:00
RtlMoveMemory ( ( PVOID ) This - > Filter . Descriptor - > PinDescriptors , FilterDescriptor - > PinDescriptors , FilterDescriptor - > PinDescriptorSize * FilterDescriptor - > PinDescriptorsCount ) ;
2010-04-01 14:53:16 +00:00
2010-04-02 16:38:48 +00:00
/* allocate process pin index */
Status = _KsEdit ( This - > Filter . Bag , ( PVOID * ) & This - > ProcessPinIndex , sizeof ( KSPROCESSPIN_INDEXENTRY ) * FilterDescriptor - > PinDescriptorsCount ,
sizeof ( KSPROCESSPIN_INDEXENTRY ) * FilterDescriptor - > PinDescriptorsCount , 0 ) ;
if ( ! NT_SUCCESS ( Status ) )
{
DPRINT ( " IKsFilter_CreateDescriptors _KsEdit failed %lx \n " , Status ) ;
return Status ;
}
2010-04-15 10:07:38 +00:00
}
2010-04-02 16:38:48 +00:00
2010-04-15 10:07:38 +00:00
if ( FilterDescriptor - > ConnectionsCount )
{
/* modify connections array */
Status = _KsEdit ( This - > Filter . Bag ,
( PVOID * ) & This - > Filter . Descriptor - > Connections ,
FilterDescriptor - > ConnectionsCount * sizeof ( KSTOPOLOGY_CONNECTION ) ,
FilterDescriptor - > ConnectionsCount * sizeof ( KSTOPOLOGY_CONNECTION ) ,
0 ) ;
This - > Topology . TopologyConnections = This - > Filter . Descriptor - > Connections ;
This - > Topology . TopologyConnectionsCount = ( ( PKSFILTER_DESCRIPTOR ) This - > Filter . Descriptor ) - > ConnectionsCount = FilterDescriptor - > ConnectionsCount ;
2010-04-01 14:53:16 +00:00
}
2010-04-01 03:14:45 +00:00
if ( FilterDescriptor - > NodeDescriptorsCount )
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
{
2010-04-01 03:14:45 +00:00
/* sanity check */
ASSERT ( FilterDescriptor - > NodeDescriptors ) ;
2012-03-04 02:39:37 +00:00
/* sanity check */
ASSERT ( FilterDescriptor - > NodeDescriptorSize > = sizeof ( KSNODE_DESCRIPTOR ) ) ;
2010-04-01 03:14:45 +00:00
This - > Topology . TopologyNodes = AllocateItem ( NonPagedPool , sizeof ( GUID ) * FilterDescriptor - > NodeDescriptorsCount ) ;
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
/* allocate topology node types array */
if ( ! This - > Topology . TopologyNodes )
2010-04-01 03:14:45 +00:00
{
DPRINT ( " IKsFilter_CreateDescriptors OutOfMemory TopologyNodesCount %lu \n " , FilterDescriptor - > NodeDescriptorsCount ) ;
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
return STATUS_INSUFFICIENT_RESOURCES ;
2010-04-01 03:14:45 +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
2010-04-01 03:14:45 +00:00
This - > Topology . TopologyNodesNames = AllocateItem ( NonPagedPool , sizeof ( GUID ) * FilterDescriptor - > NodeDescriptorsCount ) ;
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
/* allocate topology names array */
if ( ! This - > Topology . TopologyNodesNames )
{
FreeItem ( ( PVOID ) This - > Topology . TopologyNodes ) ;
2010-04-01 03:14:45 +00:00
DPRINT ( " IKsFilter_CreateDescriptors OutOfMemory TopologyNodesCount %lu \n " , FilterDescriptor - > NodeDescriptorsCount ) ;
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
return STATUS_INSUFFICIENT_RESOURCES ;
}
2010-04-01 03:14:45 +00:00
DPRINT ( " NodeDescriptorCount %lu \n " , FilterDescriptor - > NodeDescriptorsCount ) ;
2012-03-04 02:39:37 +00:00
NodeDescriptor = ( PKSNODE_DESCRIPTOR ) FilterDescriptor - > NodeDescriptors ;
2010-04-01 03:14:45 +00:00
for ( Index = 0 ; Index < FilterDescriptor - > NodeDescriptorsCount ; Index + + )
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
{
2012-03-04 02:39:37 +00:00
DPRINT ( " Index %lu Type %p Name %p \n " , Index , NodeDescriptor - > Type , NodeDescriptor - > Name ) ;
2010-04-01 03:14:45 +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
/* copy topology type */
2012-03-04 02:39:37 +00:00
if ( NodeDescriptor - > Type )
RtlMoveMemory ( ( PVOID ) & This - > Topology . TopologyNodes [ Index ] , NodeDescriptor - > Type , sizeof ( GUID ) ) ;
2010-04-01 03:14:45 +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
/* copy topology name */
2012-03-04 02:39:37 +00:00
if ( NodeDescriptor - > Name )
RtlMoveMemory ( ( PVOID ) & This - > Topology . TopologyNodesNames [ Index ] , NodeDescriptor - > Name , sizeof ( GUID ) ) ;
// next node descriptor
NodeDescriptor = ( PKSNODE_DESCRIPTOR ) ( ( ULONG_PTR ) NodeDescriptor + FilterDescriptor - > NodeDescriptorSize ) ;
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
}
}
/* done! */
return STATUS_SUCCESS ;
}
2009-07-28 18:38:13 +00:00
NTSTATUS
IKsFilter_CopyFilterDescriptor (
IKsFilterImpl * This ,
const KSFILTER_DESCRIPTOR * FilterDescriptor )
{
2010-04-01 03:14:45 +00:00
NTSTATUS Status ;
2010-04-09 18:31:53 +00:00
KSAUTOMATION_TABLE AutomationTable ;
2010-04-01 03:14:45 +00:00
This - > Filter . Descriptor = AllocateItem ( NonPagedPool , sizeof ( KSFILTER_DESCRIPTOR ) ) ;
2009-07-28 18:38:13 +00:00
if ( ! This - > Filter . Descriptor )
return STATUS_INSUFFICIENT_RESOURCES ;
2010-04-01 03:14:45 +00:00
Status = KsAddItemToObjectBag ( This - > Filter . Bag , ( PVOID ) This - > Filter . Descriptor , NULL ) ;
if ( ! NT_SUCCESS ( Status ) )
2009-07-28 18:38:13 +00:00
{
2010-04-01 03:14:45 +00:00
FreeItem ( ( PVOID ) This - > Filter . Descriptor ) ;
This - > Filter . Descriptor = NULL ;
return STATUS_INSUFFICIENT_RESOURCES ;
2009-07-28 18:38:13 +00:00
}
2010-04-01 03:14:45 +00:00
/* copy filter descriptor fields */
RtlMoveMemory ( ( PVOID ) This - > Filter . Descriptor , FilterDescriptor , sizeof ( KSFILTER_DESCRIPTOR ) ) ;
2009-07-28 18:38:13 +00:00
2010-04-09 18:31:53 +00:00
/* zero automation table */
RtlZeroMemory ( & AutomationTable , sizeof ( KSAUTOMATION_TABLE ) ) ;
/* setup filter property sets */
AutomationTable . PropertyItemSize = sizeof ( KSPROPERTY_ITEM ) ;
2016-10-20 20:02:43 +00:00
AutomationTable . PropertySetsCount = 3 ;
2010-04-09 18:31:53 +00:00
AutomationTable . PropertySets = FilterPropertySet ;
/* merge filter automation table */
Status = KsMergeAutomationTables ( ( PKSAUTOMATION_TABLE * ) & This - > Filter . Descriptor - > AutomationTable , ( PKSAUTOMATION_TABLE ) FilterDescriptor - > AutomationTable , & AutomationTable , This - > Filter . Bag ) ;
2010-04-01 03:14:45 +00:00
return Status ;
2009-07-28 18:38:13 +00:00
}
2009-08-15 13:45:06 +00:00
2010-04-10 18:00:17 +00:00
VOID
2009-08-15 13:45:06 +00:00
IKsFilter_AddPin (
2010-04-10 18:00:17 +00:00
PKSFILTER Filter ,
2009-08-15 13:45:06 +00:00
PKSPIN Pin )
{
PKSPIN NextPin , CurPin ;
PKSBASIC_HEADER BasicHeader ;
2010-04-10 18:00:17 +00:00
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( Filter , IKsFilterImpl , Filter ) ;
2009-08-15 13:45:06 +00:00
/* sanity check */
2010-04-15 10:07:38 +00:00
ASSERT ( Pin - > Id < This - > Filter . Descriptor - > PinDescriptorsCount ) ;
2009-08-15 13:45:06 +00:00
if ( This - > FirstPin [ Pin - > Id ] = = NULL )
{
/* welcome first pin */
This - > FirstPin [ Pin - > Id ] = Pin ;
2010-04-10 18:00:17 +00:00
This - > PinInstanceCount [ Pin - > Id ] + + ;
return ;
2009-08-15 13:45:06 +00:00
}
/* get first pin */
CurPin = This - > FirstPin [ Pin - > Id ] ;
do
{
/* get next instantiated pin */
NextPin = KsPinGetNextSiblingPin ( CurPin ) ;
if ( ! NextPin )
break ;
NextPin = CurPin ;
} while ( NextPin ! = NULL ) ;
/* get basic header */
BasicHeader = ( PKSBASIC_HEADER ) ( ( ULONG_PTR ) CurPin - sizeof ( KSBASIC_HEADER ) ) ;
/* store pin */
BasicHeader - > Next . Pin = Pin ;
2010-04-10 18:00:17 +00:00
}
2009-08-15 13:45:06 +00:00
2010-04-10 18:00:17 +00:00
VOID
IKsFilter_RemovePin (
PKSFILTER Filter ,
PKSPIN Pin )
{
PKSPIN NextPin , CurPin , LastPin ;
PKSBASIC_HEADER BasicHeader ;
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( Filter , IKsFilterImpl , Filter ) ;
/* sanity check */
2010-04-15 10:07:38 +00:00
ASSERT ( Pin - > Id < This - > Filter . Descriptor - > PinDescriptorsCount ) ;
2010-04-10 18:00:17 +00:00
/* get first pin */
CurPin = This - > FirstPin [ Pin - > Id ] ;
LastPin = NULL ;
do
{
/* get next instantiated pin */
NextPin = KsPinGetNextSiblingPin ( CurPin ) ;
if ( CurPin = = Pin )
{
if ( LastPin )
{
/* get basic header of last pin */
BasicHeader = ( PKSBASIC_HEADER ) ( ( ULONG_PTR ) LastPin - sizeof ( KSBASIC_HEADER ) ) ;
BasicHeader - > Next . Pin = NextPin ;
}
else
{
/* erase last pin */
This - > FirstPin [ Pin - > Id ] = NextPin ;
}
/* decrement pin instance count */
This - > PinInstanceCount [ Pin - > Id ] - - ;
return ;
}
if ( ! NextPin )
break ;
LastPin = CurPin ;
NextPin = CurPin ;
} while ( NextPin ! = NULL ) ;
/* pin not found */
ASSERT ( 0 ) ;
2009-08-15 13:45:06 +00:00
}
2009-07-28 19:32:22 +00:00
NTSTATUS
NTAPI
IKsFilter_DispatchCreatePin (
IN PDEVICE_OBJECT DeviceObject ,
IN PIRP Irp )
{
IKsFilterImpl * This ;
PKSOBJECT_CREATE_ITEM CreateItem ;
PKSPIN_CONNECT Connect ;
NTSTATUS Status ;
2010-04-01 14:53:16 +00:00
DPRINT ( " IKsFilter_DispatchCreatePin \n " ) ;
2009-07-28 19:32:22 +00:00
/* get the create item */
CreateItem = KSCREATE_ITEM_IRP_STORAGE ( Irp ) ;
/* get the filter object */
This = ( IKsFilterImpl * ) CreateItem - > Context ;
2010-04-01 14:53:16 +00:00
/* sanity check */
ASSERT ( This - > Header . Type = = KsObjectTypeFilter ) ;
2009-07-28 19:32:22 +00:00
/* acquire control mutex */
2010-04-02 16:38:48 +00:00
KeWaitForSingleObject ( This - > Header . ControlMutex , Executive , KernelMode , FALSE , NULL ) ;
2009-07-28 19:32:22 +00:00
/* now validate the connect request */
2010-04-15 10:07:38 +00:00
Status = KspValidateConnectRequest ( Irp , This - > Filter . Descriptor - > PinDescriptorsCount , ( PVOID ) This - > Filter . Descriptor - > PinDescriptors , This - > Filter . Descriptor - > PinDescriptorSize , & Connect ) ;
2009-07-28 19:32:22 +00:00
2010-04-01 14:53:16 +00:00
DPRINT ( " IKsFilter_DispatchCreatePin KsValidateConnectRequest %lx \n " , Status ) ;
2009-07-28 19:32:22 +00:00
if ( NT_SUCCESS ( Status ) )
{
2010-04-01 14:53:16 +00:00
/* sanity check */
2010-04-15 10:07:38 +00:00
ASSERT ( Connect - > PinId < This - > Filter . Descriptor - > PinDescriptorsCount ) ;
2010-04-01 14:53:16 +00:00
2011-08-24 22:09:04 +00:00
DPRINT ( " IKsFilter_DispatchCreatePin KsValidateConnectRequest PinId %lu CurrentInstanceCount %lu MaxPossible %lu \n " , Connect - > PinId ,
2010-04-01 14:53:16 +00:00
This - > PinInstanceCount [ Connect - > PinId ] ,
2010-04-15 10:07:38 +00:00
This - > Filter . Descriptor - > PinDescriptors [ Connect - > PinId ] . InstancesPossible ) ;
2010-04-01 14:53:16 +00:00
2010-04-15 10:07:38 +00:00
if ( This - > PinInstanceCount [ Connect - > PinId ] < This - > Filter . Descriptor - > PinDescriptors [ Connect - > PinId ] . InstancesPossible )
- 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
{
/* create the pin */
2010-04-15 10:07:38 +00:00
Status = KspCreatePin ( DeviceObject , Irp , This - > Header . KsDevice , This - > FilterFactory , ( IKsFilter * ) & This - > Header . OuterUnknown , Connect , ( KSPIN_DESCRIPTOR_EX * ) & This - > Filter . Descriptor - > PinDescriptors [ Connect - > PinId ] ) ;
2010-04-01 14:53:16 +00:00
DPRINT ( " IKsFilter_DispatchCreatePin KspCreatePin %lx \n " , Status ) ;
- 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
}
else
{
/* maximum instance count reached, bye-bye */
Status = STATUS_UNSUCCESSFUL ;
2010-04-15 10:07:38 +00:00
DPRINT ( " IKsFilter_DispatchCreatePin MaxInstance %lu CurInstance %lu %lx \n " , This - > Filter . Descriptor - > PinDescriptors [ Connect - > PinId ] . InstancesPossible , This - > PinInstanceCount [ Connect - > PinId ] ) ;
- 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
}
2009-07-28 19:32:22 +00:00
}
/* release control mutex */
2010-04-02 16:38:48 +00:00
KeReleaseMutex ( This - > Header . ControlMutex , FALSE ) ;
2009-07-28 19:32:22 +00:00
if ( Status ! = STATUS_PENDING )
{
/* complete request */
Irp - > IoStatus . Status = Status ;
2010-12-21 13:06:47 +00:00
CompleteRequest ( Irp , IO_NO_INCREMENT ) ;
2009-07-28 19:32:22 +00:00
}
2010-04-01 14:53:16 +00:00
2009-07-28 19:32:22 +00:00
/* done */
2010-04-01 14:53:16 +00:00
DPRINT ( " IKsFilter_DispatchCreatePin Result %lx \n " , Status ) ;
2009-07-28 19:32:22 +00:00
return Status ;
}
NTSTATUS
NTAPI
IKsFilter_DispatchCreateNode (
IN PDEVICE_OBJECT DeviceObject ,
IN PIRP Irp )
{
2017-02-06 15:49:23 +00:00
UNIMPLEMENTED ;
2009-07-28 19:32:22 +00:00
Irp - > IoStatus . Status = STATUS_UNSUCCESSFUL ;
2010-12-21 13:06:47 +00:00
CompleteRequest ( Irp , IO_NO_INCREMENT ) ;
2009-07-28 19:32:22 +00:00
return STATUS_UNSUCCESSFUL ;
}
2009-07-28 18:38:13 +00:00
2009-08-15 13:45:06 +00:00
VOID
IKsFilter_AttachFilterToFilterFactory (
IKsFilterImpl * This ,
PKSFILTERFACTORY FilterFactory )
{
PKSBASIC_HEADER BasicHeader ;
PKSFILTER Filter ;
/* get filter factory basic header */
BasicHeader = ( PKSBASIC_HEADER ) ( ( ULONG_PTR ) FilterFactory - sizeof ( KSBASIC_HEADER ) ) ;
/* sanity check */
ASSERT ( BasicHeader - > Type = = KsObjectTypeFilterFactory ) ;
if ( BasicHeader - > FirstChild . FilterFactory = = NULL )
{
/* welcome first instantiated filter */
BasicHeader - > FirstChild . Filter = & This - > Filter ;
return ;
}
/* set to first entry */
Filter = BasicHeader - > FirstChild . Filter ;
do
{
/* get basic header */
BasicHeader = ( PKSBASIC_HEADER ) ( ( ULONG_PTR ) Filter - sizeof ( KSBASIC_HEADER ) ) ;
/* sanity check */
ASSERT ( BasicHeader - > Type = = KsObjectTypeFilter ) ;
if ( BasicHeader - > Next . Filter )
{
/* iterate to next filter factory */
Filter = BasicHeader - > Next . Filter ;
}
else
{
/* found last entry */
break ;
}
2010-04-08 20:14:38 +00:00
} while ( TRUE ) ;
2009-08-15 13:45:06 +00:00
/* attach filter factory */
BasicHeader - > Next . Filter = & This - > Filter ;
}
2010-04-08 20:14:38 +00:00
VOID
IKsFilter_RemoveFilterFromFilterFactory (
IKsFilterImpl * This ,
PKSFILTERFACTORY FilterFactory )
{
PKSBASIC_HEADER BasicHeader ;
PKSFILTER Filter , LastFilter ;
/* get filter factory basic header */
BasicHeader = ( PKSBASIC_HEADER ) ( ( ULONG_PTR ) FilterFactory - sizeof ( KSBASIC_HEADER ) ) ;
/* sanity check */
ASSERT ( BasicHeader - > Type = = KsObjectTypeFilterFactory ) ;
ASSERT ( BasicHeader - > FirstChild . Filter ! = NULL ) ;
/* set to first entry */
Filter = BasicHeader - > FirstChild . Filter ;
LastFilter = NULL ;
do
{
if ( Filter = = & This - > Filter )
{
if ( LastFilter )
{
/* get basic header */
BasicHeader = ( PKSBASIC_HEADER ) ( ( ULONG_PTR ) LastFilter - sizeof ( KSBASIC_HEADER ) ) ;
/* remove filter instance */
BasicHeader - > Next . Filter = This - > Header . Next . Filter ;
break ;
}
else
{
/* remove filter instance */
BasicHeader - > FirstChild . Filter = This - > Header . Next . Filter ;
break ;
}
}
/* get basic header */
BasicHeader = ( PKSBASIC_HEADER ) ( ( ULONG_PTR ) Filter - sizeof ( KSBASIC_HEADER ) ) ;
/* sanity check */
ASSERT ( BasicHeader - > Type = = KsObjectTypeFilter ) ;
LastFilter = Filter ;
if ( BasicHeader - > Next . Filter )
{
/* iterate to next filter factory */
Filter = BasicHeader - > Next . Filter ;
}
else
{
/* filter is not in list */
ASSERT ( 0 ) ;
break ;
}
} while ( TRUE ) ;
}
2010-12-22 15:20:38 +00:00
VOID
NTAPI
IKsFilter_FilterCentricWorker (
IN PVOID Ctx )
{
IKsProcessingObject * Object = ( IKsProcessingObject * ) Ctx ;
/* sanity check */
ASSERT ( Object ) ;
/* perform work */
Object - > lpVtbl - > ProcessingObjectWork ( Object ) ;
}
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
NTSTATUS
NTAPI
KspCreateFilter (
IN PDEVICE_OBJECT DeviceObject ,
IN PIRP Irp ,
IN IKsFilterFactory * iface )
{
IKsFilterImpl * This ;
2009-07-28 16:18:05 +00:00
IKsDevice * KsDevice ;
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
PKSFILTERFACTORY Factory ;
PIO_STACK_LOCATION IoStack ;
2009-07-22 14:42:51 +00:00
PDEVICE_EXTENSION DeviceExtension ;
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
NTSTATUS Status ;
2009-07-28 19:32:22 +00:00
PKSOBJECT_CREATE_ITEM CreateItem ;
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
2009-07-22 14:42:51 +00:00
/* get device extension */
DeviceExtension = ( PDEVICE_EXTENSION ) DeviceObject - > DeviceExtension ;
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
/* get the filter factory */
Factory = iface - > lpVtbl - > GetStruct ( iface ) ;
2010-12-22 15:20:38 +00:00
if ( ! Factory | | ! Factory - > FilterDescriptor )
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
{
/* Sorry it just will not work */
return STATUS_UNSUCCESSFUL ;
}
2010-12-22 15:20:38 +00:00
if ( Factory - > FilterDescriptor - > Flags & KSFILTER_FLAG_DENY_USERMODE_ACCESS )
{
if ( Irp - > RequestorMode = = UserMode )
{
/* filter not accessible from user mode */
DPRINT1 ( " Access denied \n " ) ;
return STATUS_UNSUCCESSFUL ;
}
}
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
/* allocate filter instance */
2010-04-01 03:14:45 +00:00
This = AllocateItem ( NonPagedPool , sizeof ( IKsFilterImpl ) ) ;
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
if ( ! This )
2010-04-01 03:14:45 +00:00
{
2010-12-22 15:20:38 +00:00
DPRINT1 ( " KspCreateFilter OutOfMemory \n " ) ;
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
return STATUS_INSUFFICIENT_RESOURCES ;
2010-04-01 03:14:45 +00:00
}
/* initialize object bag */
This - > Filter . Bag = AllocateItem ( NonPagedPool , sizeof ( KSIOBJECT_BAG ) ) ;
if ( ! This - > Filter . Bag )
{
/* no memory */
FreeItem ( This ) ;
2010-12-22 15:20:38 +00:00
DPRINT1 ( " KspCreateFilter OutOfMemory \n " ) ;
2010-04-01 03:14:45 +00:00
return STATUS_INSUFFICIENT_RESOURCES ;
}
2010-04-15 10:07:38 +00:00
KsDevice = ( IKsDevice * ) & DeviceExtension - > DeviceHeader - > BasicHeader . OuterUnknown ;
2010-04-01 03:14:45 +00:00
KsDevice - > lpVtbl - > InitializeObjectBag ( KsDevice , ( PKSIOBJECT_BAG ) This - > Filter . Bag , NULL ) ;
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
2009-07-28 18:38:13 +00:00
/* copy filter descriptor */
Status = IKsFilter_CopyFilterDescriptor ( This , Factory - > FilterDescriptor ) ;
if ( ! NT_SUCCESS ( Status ) )
{
/* not enough memory */
2010-04-01 03:14:45 +00:00
FreeItem ( This - > Filter . Bag ) ;
2009-07-28 18:38:13 +00:00
FreeItem ( This ) ;
2010-04-01 03:14:45 +00:00
DPRINT ( " KspCreateFilter IKsFilter_CopyFilterDescriptor failed %lx \n " , Status ) ;
2009-07-28 18:38:13 +00:00
return STATUS_INSUFFICIENT_RESOURCES ;
}
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
/* get current irp stack */
IoStack = IoGetCurrentIrpStackLocation ( Irp ) ;
2009-07-28 19:32:22 +00:00
/* allocate create items */
CreateItem = AllocateItem ( NonPagedPool , sizeof ( KSOBJECT_CREATE_ITEM ) * 2 ) ;
if ( ! CreateItem )
{
/* no memory */
2010-04-01 03:14:45 +00:00
FreeItem ( This - > Filter . Bag ) ;
2009-07-28 19:32:22 +00:00
FreeItem ( This ) ;
2010-12-22 15:20:38 +00:00
DPRINT1 ( " KspCreateFilter OutOfMemory \n " ) ;
2009-07-28 19:32:22 +00:00
return STATUS_INSUFFICIENT_RESOURCES ;
}
/* initialize pin create item */
CreateItem [ 0 ] . Create = IKsFilter_DispatchCreatePin ;
CreateItem [ 0 ] . Context = ( PVOID ) This ;
CreateItem [ 0 ] . Flags = KSCREATE_ITEM_FREEONSTOP ;
RtlInitUnicodeString ( & CreateItem [ 0 ] . ObjectClass , KSSTRING_Pin ) ;
/* initialize node create item */
CreateItem [ 1 ] . Create = IKsFilter_DispatchCreateNode ;
CreateItem [ 1 ] . Context = ( PVOID ) This ;
CreateItem [ 1 ] . Flags = KSCREATE_ITEM_FREEONSTOP ;
RtlInitUnicodeString ( & CreateItem [ 1 ] . ObjectClass , KSSTRING_TopologyNode ) ;
2009-07-28 18:38:13 +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
/* initialize filter instance */
This - > ref = 1 ;
2010-04-15 10:07:38 +00:00
This - > Header . OuterUnknown = ( PUNKNOWN ) & vt_IKsFilter ;
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
This - > lpVtblKsControl = & vt_IKsControl ;
2010-12-22 15:20:38 +00:00
This - > lpVtblKsProcessingObject = & vt_IKsProcessingObject ;
2009-07-28 16:18:05 +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
This - > Factory = Factory ;
This - > FilterFactory = iface ;
This - > FileObject = IoStack - > FileObject ;
- 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
KeInitializeMutex ( & This - > ProcessingMutex , 0 ) ;
2010-12-22 15:20:38 +00:00
- 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
/* initialize basic header */
2009-07-22 14:42:51 +00:00
This - > Header . KsDevice = & DeviceExtension - > DeviceHeader - > KsDevice ;
2009-07-28 13:52:57 +00:00
This - > Header . Parent . KsFilterFactory = iface - > lpVtbl - > GetStruct ( iface ) ;
2009-07-22 14:42:51 +00:00
This - > Header . Type = KsObjectTypeFilter ;
2010-04-02 16:38:48 +00:00
This - > Header . ControlMutex = & This - > ControlMutex ;
KeInitializeMutex ( This - > Header . ControlMutex , 0 ) ;
2009-07-30 07:31:41 +00:00
InitializeListHead ( & This - > Header . EventList ) ;
KeInitializeSpinLock ( & This - > Header . EventListLock ) ;
2010-12-22 15:20:38 +00:00
/* initialize and gate */
KsGateInitializeAnd ( & This - > Gate , NULL ) ;
/* FIXME initialize and gate based on pin flags */
/* initialize work item */
ExInitializeWorkItem ( & This - > WorkItem , IKsFilter_FilterCentricWorker , ( PVOID ) This - > lpVtblKsProcessingObject ) ;
/* allocate counted work item */
Status = KsRegisterCountedWorker ( HyperCriticalWorkQueue , & This - > WorkItem , & This - > Worker ) ;
if ( ! NT_SUCCESS ( Status ) )
{
/* what can go wrong, goes wrong */
DPRINT1 ( " KsRegisterCountedWorker failed with %lx \n " , Status ) ;
FreeItem ( This ) ;
FreeItem ( CreateItem ) ;
return Status ;
}
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
/* allocate the stream descriptors */
Status = IKsFilter_CreateDescriptors ( This , ( PKSFILTER_DESCRIPTOR ) Factory - > FilterDescriptor ) ;
if ( ! NT_SUCCESS ( Status ) )
{
/* what can go wrong, goes wrong */
2010-12-22 15:20:38 +00:00
DPRINT1 ( " IKsFilter_CreateDescriptors failed with %lx \n " , Status ) ;
KsUnregisterWorker ( This - > Worker ) ;
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
FreeItem ( This ) ;
2009-07-28 19:32:22 +00:00
FreeItem ( CreateItem ) ;
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
return Status ;
}
2010-12-22 15:20:38 +00:00
2009-08-11 15:22:06 +00:00
/* does the filter have a filter dispatch */
if ( Factory - > FilterDescriptor - > Dispatch )
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
{
2009-08-11 15:22:06 +00:00
/* does it have a create routine */
if ( Factory - > FilterDescriptor - > Dispatch - > Create )
{
/* now let driver initialize the filter instance */
2010-04-02 16:38:48 +00:00
2010-04-01 03:14:45 +00:00
ASSERT ( This - > Header . KsDevice ) ;
2010-04-02 16:38:48 +00:00
ASSERT ( This - > Header . KsDevice - > Started ) ;
2009-08-11 15:22:06 +00:00
Status = Factory - > FilterDescriptor - > Dispatch - > Create ( & This - > Filter , Irp ) ;
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
2009-08-11 15:22:06 +00:00
if ( ! NT_SUCCESS ( Status ) & & Status ! = STATUS_PENDING )
{
/* driver failed to initialize */
DPRINT1 ( " Driver: Status %x \n " , Status ) ;
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
2009-08-11 15:22:06 +00:00
/* free filter instance */
2010-12-22 15:20:38 +00:00
KsUnregisterWorker ( This - > Worker ) ;
2009-08-11 15:22:06 +00:00
FreeItem ( This ) ;
FreeItem ( CreateItem ) ;
return Status ;
}
}
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
}
/* now allocate the object header */
2009-07-28 19:32:22 +00:00
Status = KsAllocateObjectHeader ( ( PVOID * ) & This - > ObjectHeader , 2 , CreateItem , Irp , & DispatchTable ) ;
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
if ( ! NT_SUCCESS ( Status ) )
{
/* failed to allocate object header */
DPRINT1 ( " Failed to allocate object header %x \n " , Status ) ;
return Status ;
}
- 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
/* initialize object header extra fields */
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
This - > ObjectHeader - > Type = KsObjectTypeFilter ;
2010-04-15 10:07:38 +00:00
This - > ObjectHeader - > Unknown = ( PUNKNOWN ) & This - > Header . OuterUnknown ;
2009-07-28 13:52:57 +00:00
This - > ObjectHeader - > ObjectType = ( PVOID ) & This - > Filter ;
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
2009-08-15 13:45:06 +00:00
/* attach filter to filter factory */
IKsFilter_AttachFilterToFilterFactory ( This , This - > Header . Parent . KsFilterFactory ) ;
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
/* completed initialization */
2010-12-22 15:20:38 +00:00
DPRINT1 ( " KspCreateFilter done %lx KsDevice %p \n " , Status , This - > Header . KsDevice ) ;
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
return Status ;
}
2009-07-23 13:13:45 +00:00
/*
2009-07-28 17:01:36 +00:00
@ implemented
2009-07-23 13:13:45 +00:00
*/
KSDDKAPI
VOID
NTAPI
KsFilterAcquireProcessingMutex (
IN PKSFILTER Filter )
{
2009-07-28 17:01:36 +00:00
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( Filter , IKsFilterImpl , Filter ) ;
KeWaitForSingleObject ( & This - > ProcessingMutex , Executive , KernelMode , FALSE , NULL ) ;
2009-07-23 13:13:45 +00:00
}
/*
2009-07-28 17:01:36 +00:00
@ implemented
2009-07-23 13:13:45 +00:00
*/
KSDDKAPI
VOID
NTAPI
KsFilterReleaseProcessingMutex (
IN PKSFILTER Filter )
{
2009-07-28 17:01:36 +00:00
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( Filter , IKsFilterImpl , Filter ) ;
KeReleaseMutex ( & This - > ProcessingMutex , FALSE ) ;
2009-07-23 13:13:45 +00:00
}
2010-04-10 18:00:17 +00:00
2009-07-23 13:13:45 +00:00
/*
2009-07-28 18:38:13 +00:00
@ implemented
2009-07-23 13:13:45 +00:00
*/
KSDDKAPI
NTSTATUS
NTAPI
KsFilterAddTopologyConnections (
IN PKSFILTER Filter ,
IN ULONG NewConnectionsCount ,
IN const KSTOPOLOGY_CONNECTION * const NewTopologyConnections )
{
2009-07-28 18:38:13 +00:00
ULONG Count ;
2010-04-15 10:07:38 +00:00
NTSTATUS Status ;
2009-07-28 18:38:13 +00:00
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( Filter , IKsFilterImpl , Filter ) ;
2010-04-15 10:07:38 +00:00
DPRINT ( " KsFilterAddTopologyConnections \n " ) ;
ASSERT ( This - > Filter . Descriptor ) ;
2009-07-28 18:38:13 +00:00
Count = This - > Filter . Descriptor - > ConnectionsCount + NewConnectionsCount ;
2010-04-15 10:07:38 +00:00
/* modify connections array */
Status = _KsEdit ( This - > Filter . Bag ,
( PVOID * ) & This - > Filter . Descriptor - > Connections ,
Count * sizeof ( KSTOPOLOGY_CONNECTION ) ,
This - > Filter . Descriptor - > ConnectionsCount * sizeof ( KSTOPOLOGY_CONNECTION ) ,
0 ) ;
2009-07-28 18:38:13 +00:00
2010-04-15 10:07:38 +00:00
if ( ! NT_SUCCESS ( Status ) )
2009-07-28 18:38:13 +00:00
{
2010-04-15 10:07:38 +00:00
/* failed */
DPRINT ( " KsFilterAddTopologyConnections KsEdit failed with %lx \n " , Status ) ;
return Status ;
2009-07-28 18:38:13 +00:00
}
2010-04-15 10:07:38 +00:00
/* FIXME verify connections */
2009-07-28 18:38:13 +00:00
2010-04-15 10:07:38 +00:00
/* copy new connections */
RtlMoveMemory ( ( PVOID ) & This - > Filter . Descriptor - > Connections [ This - > Filter . Descriptor - > ConnectionsCount ] ,
NewTopologyConnections ,
NewConnectionsCount * sizeof ( KSTOPOLOGY_CONNECTION ) ) ;
2009-07-28 18:38:13 +00:00
2010-04-15 10:07:38 +00:00
/* update topology */
This - > Topology . TopologyConnectionsCount + = NewConnectionsCount ;
( ( PKSFILTER_DESCRIPTOR ) This - > Filter . Descriptor ) - > ConnectionsCount + = NewConnectionsCount ;
This - > Topology . TopologyConnections = This - > Filter . Descriptor - > Connections ;
2009-07-28 18:38:13 +00:00
2010-04-15 10:07:38 +00:00
return Status ;
2009-07-23 13:13:45 +00:00
}
/*
2010-12-22 15:20:38 +00:00
@ implemented
2009-07-23 13:13:45 +00:00
*/
KSDDKAPI
VOID
NTAPI
KsFilterAttemptProcessing (
IN PKSFILTER Filter ,
IN BOOLEAN Asynchronous )
{
2010-12-22 15:20:38 +00:00
PKSGATE Gate ;
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( Filter , IKsFilterImpl , Filter ) ;
/* get gate */
Gate = This - > lpVtblKsProcessingObject - > GetAndGate ( ( IKsProcessingObject * ) This - > lpVtblKsProcessingObject ) ;
if ( ! KsGateCaptureThreshold ( Gate ) )
{
/* filter control gate is closed */
return ;
}
DPRINT1 ( " processing \n " ) ;
/* try initiate processing */
This - > lpVtblKsProcessingObject - > Process ( ( IKsProcessingObject * ) This - > lpVtblKsProcessingObject , Asynchronous ) ;
2009-07-23 13:13:45 +00:00
}
/*
2009-07-23 15:19:46 +00:00
@ unimplemented
2009-07-23 13:13:45 +00:00
*/
KSDDKAPI
NTSTATUS
NTAPI
KsFilterCreateNode (
IN PKSFILTER Filter ,
IN const KSNODE_DESCRIPTOR * const NodeDescriptor ,
OUT PULONG NodeID )
{
2017-02-06 15:49:23 +00:00
UNIMPLEMENTED ;
2009-07-23 13:13:45 +00:00
return STATUS_NOT_IMPLEMENTED ;
}
/*
2009-07-28 18:38:13 +00:00
@ implemented
2009-07-23 13:13:45 +00:00
*/
KSDDKAPI
NTSTATUS
NTAPI
KsFilterCreatePinFactory (
IN PKSFILTER Filter ,
2009-07-28 18:38:13 +00:00
IN const KSPIN_DESCRIPTOR_EX * const InPinDescriptor ,
2009-07-23 13:13:45 +00:00
OUT PULONG PinID )
{
2009-07-28 18:38:13 +00:00
ULONG Count ;
2010-04-01 03:14:45 +00:00
NTSTATUS Status ;
2009-07-28 18:38:13 +00:00
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( Filter , IKsFilterImpl , Filter ) ;
2010-04-01 03:14:45 +00:00
DPRINT ( " KsFilterCreatePinFactory \n " ) ;
/* calculate new count */
2010-04-15 10:07:38 +00:00
Count = This - > Filter . Descriptor - > PinDescriptorsCount + 1 ;
2009-07-28 18:38:13 +00:00
2010-04-01 03:14:45 +00:00
/* sanity check */
ASSERT ( This - > Filter . Descriptor - > PinDescriptorSize = = sizeof ( KSPIN_DESCRIPTOR_EX ) ) ;
2009-07-28 18:38:13 +00:00
2010-04-15 10:07:38 +00:00
/* modify pin descriptors ex array */
Status = _KsEdit ( This - > Filter . Bag , ( PVOID * ) & This - > Filter . Descriptor - > PinDescriptors , Count * This - > Filter . Descriptor - > PinDescriptorSize , This - > Filter . Descriptor - > PinDescriptorsCount * This - > Filter . Descriptor - > PinDescriptorSize , 0 ) ;
2010-04-01 03:14:45 +00:00
if ( ! NT_SUCCESS ( Status ) )
2009-07-28 18:38:13 +00:00
{
2010-04-01 03:14:45 +00:00
/* failed */
DPRINT ( " KsFilterCreatePinFactory _KsEdit failed with %lx \n " , Status ) ;
return Status ;
2009-07-28 18:38:13 +00:00
}
2010-04-15 10:07:38 +00:00
/* modify pin instance count array */
Status = _KsEdit ( This - > Filter . Bag , ( PVOID * ) & This - > PinInstanceCount , sizeof ( ULONG ) * Count , sizeof ( ULONG ) * This - > Filter . Descriptor - > PinDescriptorsCount , 0 ) ;
2010-04-01 03:14:45 +00:00
if ( ! NT_SUCCESS ( Status ) )
2009-08-15 13:45:06 +00:00
{
2010-04-01 03:14:45 +00:00
/* failed */
DPRINT ( " KsFilterCreatePinFactory _KsEdit failed with %lx \n " , Status ) ;
return Status ;
2009-08-15 13:45:06 +00:00
}
2010-04-15 10:07:38 +00:00
/* modify first pin array */
2011-08-24 22:09:04 +00:00
Status = _KsEdit ( This - > Filter . Bag , ( PVOID * ) & This - > FirstPin , sizeof ( PVOID ) * Count , sizeof ( PVOID ) * This - > Filter . Descriptor - > PinDescriptorsCount , 0 ) ;
2010-04-01 03:14:45 +00:00
if ( ! NT_SUCCESS ( Status ) )
2009-07-28 18:38:13 +00:00
{
2010-04-01 03:14:45 +00:00
/* failed */
DPRINT ( " KsFilterCreatePinFactory _KsEdit failed with %lx \n " , Status ) ;
return Status ;
2009-07-28 18:38:13 +00:00
}
/* add new pin factory */
2010-04-15 10:07:38 +00:00
RtlMoveMemory ( ( PVOID ) & This - > Filter . Descriptor - > PinDescriptors [ This - > Filter . Descriptor - > PinDescriptorsCount ] , InPinDescriptor , sizeof ( KSPIN_DESCRIPTOR_EX ) ) ;
2010-04-02 16:38:48 +00:00
/* allocate process pin index */
Status = _KsEdit ( This - > Filter . Bag , ( PVOID * ) & This - > ProcessPinIndex , sizeof ( KSPROCESSPIN_INDEXENTRY ) * Count ,
2010-04-15 10:07:38 +00:00
sizeof ( KSPROCESSPIN_INDEXENTRY ) * This - > Filter . Descriptor - > PinDescriptorsCount , 0 ) ;
2010-04-02 16:38:48 +00:00
if ( ! NT_SUCCESS ( Status ) )
{
DPRINT ( " KsFilterCreatePinFactory _KsEdit failed %lx \n " , Status ) ;
return Status ;
}
2009-07-28 18:38:13 +00:00
/* store new pin id */
2010-04-15 10:07:38 +00:00
* PinID = This - > Filter . Descriptor - > PinDescriptorsCount ;
2009-07-28 18:38:13 +00:00
/* increment pin descriptor count */
2010-04-15 10:07:38 +00:00
( ( PKSFILTER_DESCRIPTOR ) This - > Filter . Descriptor ) - > PinDescriptorsCount + + ;
2009-07-28 18:38:13 +00:00
2010-04-01 03:14:45 +00:00
DPRINT ( " KsFilterCreatePinFactory done \n " ) ;
2009-07-28 18:38:13 +00:00
return STATUS_SUCCESS ;
2009-07-23 13:13:45 +00:00
}
/*
2009-07-23 15:19:46 +00:00
@ unimplemented
2009-07-23 13:13:45 +00:00
*/
KSDDKAPI
PKSGATE
NTAPI
KsFilterGetAndGate (
IN PKSFILTER Filter )
{
2010-12-22 15:20:38 +00:00
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( Filter , IKsFilterImpl , Filter ) ;
/* return and-gate */
return & This - > Gate ;
2009-07-23 13:13:45 +00:00
}
/*
2009-07-28 17:01:36 +00:00
@ implemented
2009-07-23 13:13:45 +00:00
*/
KSDDKAPI
ULONG
NTAPI
KsFilterGetChildPinCount (
IN PKSFILTER Filter ,
IN ULONG PinId )
{
2009-07-28 17:01:36 +00:00
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( Filter , IKsFilterImpl , Filter ) ;
2010-04-15 10:07:38 +00:00
if ( PinId > = This - > Filter . Descriptor - > PinDescriptorsCount )
2009-07-28 17:01:36 +00:00
{
/* index is out of bounds */
return 0 ;
}
/* return pin instance count */
return This - > PinInstanceCount [ PinId ] ;
2009-07-23 13:13:45 +00:00
}
/*
2009-08-15 13:45:06 +00:00
@ implemented
2009-07-23 13:13:45 +00:00
*/
KSDDKAPI
PKSPIN
NTAPI
KsFilterGetFirstChildPin (
IN PKSFILTER Filter ,
IN ULONG PinId )
{
2009-08-15 13:45:06 +00:00
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( Filter , IKsFilterImpl , Filter ) ;
2010-04-15 10:07:38 +00:00
if ( PinId > = This - > Filter . Descriptor - > PinDescriptorsCount )
2009-08-15 13:45:06 +00:00
{
/* index is out of bounds */
return NULL ;
}
/* return first pin index */
return This - > FirstPin [ PinId ] ;
2009-07-23 13:13:45 +00:00
}
/*
2009-07-28 17:01:36 +00:00
@ implemented
2009-07-23 13:13:45 +00:00
*/
KSDDKAPI
VOID
NTAPI
KsFilterRegisterPowerCallbacks (
IN PKSFILTER Filter ,
IN PFNKSFILTERPOWER Sleep OPTIONAL ,
IN PFNKSFILTERPOWER Wake OPTIONAL )
{
2009-07-28 17:01:36 +00:00
IKsFilterImpl * This = ( IKsFilterImpl * ) CONTAINING_RECORD ( Filter , IKsFilterImpl , Filter ) ;
This - > Sleep = Sleep ;
This - > Wake = Wake ;
2009-07-23 13:13:45 +00:00
}
/*
2009-07-28 17:01:36 +00:00
@ implemented
2009-07-23 13:13:45 +00:00
*/
KSDDKAPI
PKSFILTER
NTAPI
KsGetFilterFromIrp (
IN PIRP Irp )
{
2009-07-28 17:01:36 +00:00
PIO_STACK_LOCATION IoStack ;
PKSIOBJECT_HEADER ObjectHeader ;
2010-04-04 21:27:07 +00:00
DPRINT ( " KsGetFilterFromIrp \n " ) ;
2009-07-28 17:01:36 +00:00
/* get current irp stack location */
IoStack = IoGetCurrentIrpStackLocation ( Irp ) ;
/* sanity check */
ASSERT ( IoStack - > FileObject ) ;
/* get object header */
2009-09-12 14:35:27 +00:00
ObjectHeader = ( PKSIOBJECT_HEADER ) IoStack - > FileObject - > FsContext2 ;
2009-07-23 13:13:45 +00:00
2009-07-28 17:01:36 +00:00
if ( ObjectHeader - > Type = = KsObjectTypeFilter )
{
/* irp is targeted at the filter */
return ( PKSFILTER ) ObjectHeader - > ObjectType ;
}
else if ( ObjectHeader - > Type = = KsObjectTypePin )
{
/* irp is for a pin */
return KsPinGetParentFilter ( ( PKSPIN ) ObjectHeader - > ObjectType ) ;
}
else
{
/* irp is unappropiate to retrieve a filter */
return NULL ;
}
}