37 iface->lpVtbl->Release(iface);
48 IKsFilterFactory * iface;
55 DPRINT1(
"IKsFilterFactory_Create no CreateItem\n");
63 iface = (IKsFilterFactory*)&
Factory->Header.OuterUnknown;
72 Irp->IoStatus.Information = 0;
84 IKsFilterFactory * iface,
99 if (
This->Header.ClientAggregate)
102 Status =
This->Header.ClientAggregate->lpVtbl->QueryInterface(
This->Header.ClientAggregate, refiid,
Output);
111 DPRINT(
"IKsFilterFactory_fnQueryInterface no interface\n");
118 IKsFilterFactory * iface)
128 IKsFilterFactory * iface)
154 IKsFilterFactory * iface)
158 return &
This->FilterFactory;
164 IKsFilterFactory * iface,
178 PKSFILTERFACTORY FilterFactory;
207 }
while(FilterFactory);
216 IKsFilterFactory * iface,
222 IN PFNKSFILTERFACTORYPOWER SleepCallback
OPTIONAL,
223 IN PFNKSFILTERFACTORYPOWER WakeCallback
OPTIONAL,
231 IKsDevice * KsDevice;
239 This->SleepCallback = SleepCallback;
240 This->WakeCallback = WakeCallback;
241 This->Header.KsDevice = &DeviceExtension->DeviceHeader->KsDevice;
243 This->Header.Parent.KsDevice = &DeviceExtension->DeviceHeader->KsDevice;
244 This->DeviceHeader = DeviceExtension->DeviceHeader;
248 if (!
This->FilterFactory.FilterDescriptor)
256 This->Header.ControlMutex = &
This->ControlMutex;
293 &
This->SymbolicLinkList);
297 DPRINT1(
"KspRegisterDeviceInterfaces failed with %x\n",
Status);
326 if (
This->FilterFactory.Bag)
329 KsDevice = (IKsDevice*)&DeviceExtension->DeviceHeader->BasicHeader.OuterUnknown;
336 *FilterFactory = &
This->FilterFactory;
365 IN PFNKSFILTERFACTORYPOWER SleepCallback
OPTIONAL,
366 IN PFNKSFILTERFACTORYPOWER WakeCallback
OPTIONAL,
370 IKsFilterFactory *
Filter;
373 DPRINT(
"KsCreateFilterFactory\n");
388 Filter = (IKsFilterFactory*)&
This->Header.OuterUnknown;
419 IN PFNKSFILTERFACTORYPOWER SleepCallback
OPTIONAL,
420 IN PFNKSFILTERFACTORYPOWER WakeCallback
OPTIONAL,
434 IN PKSFILTERFACTORY FilterFactory,
440 Factory = (IKsFilterFactory*)&
This->Header.OuterUnknown;
452 IN PKSFILTERFACTORY FilterFactory)
477 IN PKSFILTERFACTORY FilterFactory,
542 IN PKSFILTERFACTORY FilterFactory,
630 PinHeader->
Flags = 0;
655 for(SubIndex = 0; SubIndex <
FilterDescriptor->PinDescriptors[
Index].PinDescriptor.DataRangesCount; SubIndex++)
661 DataRange->
Signature = 0x33797430 + SubIndex;
671 for(SubIndex = 0; SubIndex <
FilterDescriptor->PinDescriptors[
Index].PinDescriptor.MediumsCount; SubIndex++)
#define InterlockedIncrement
#define InterlockedDecrement
_In_ ULONG _In_opt_ WDFREQUEST _In_opt_ PVOID _In_ size_t _In_ PVOID _In_ size_t _Out_ size_t * DataLength
#define STATUS_NOT_SUPPORTED
NTSTATUS KspRegisterDeviceInterfaces(IN PDEVICE_OBJECT PhysicalDeviceObject, IN ULONG CategoriesCount, IN GUID const *Categories, IN PUNICODE_STRING ReferenceString, OUT PLIST_ENTRY SymbolicLinkList)
NTSTATUS KspSetDeviceInterfacesState(IN PLIST_ENTRY ListHead, IN BOOL Enable)
NTSTATUS KspFreeDeviceInterfaces(IN PLIST_ENTRY ListHead)
#define NT_SUCCESS(StatCode)
struct _BEEP_DEVICE_EXTENSION * PDEVICE_EXTENSION
NTSTATUS NTAPI CompleteRequest(IN PIRP Irp, IN NTSTATUS Status, IN ULONG_PTR Information)
KSDDKAPI NTSTATUS NTAPI KsAllocateObjectCreateItem(IN KSDEVICE_HEADER DevHeader, IN PKSOBJECT_CREATE_ITEM CreateItem, IN BOOLEAN AllocateEntry, IN PFNKSITEMFREECALLBACK ItemFreeCallback OPTIONAL)
NTSTATUS NTAPI KspCreateFilter(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN IKsFilterFactory *iface)
#define REG_PINFLAG_B_MANY
#define IsListEmpty(ListHead)
#define RtlCompareMemory(s1, s2, l)
#define InitializeListHead(ListHead)
#define KeInitializeSpinLock(sl)
ULONG KspCacheAddData(PKSPCACHE_DESCRIPTOR Descriptor, LPCVOID Data, ULONG Length)
KSDDKAPI NTSTATUS NTAPI KsFilterFactoryAddCreateItem(IN PKSFILTERFACTORY FilterFactory, IN PWSTR RefString, IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL, IN ULONG CreateItemFlags)
NTSTATUS NTAPI IKsFilterFactory_fnSetDeviceClassesState(IKsFilterFactory *iface, IN BOOLEAN Enable)
KSDDKAPI NTSTATUS NTAPI KsCreateFilterFactory(IN PDEVICE_OBJECT DeviceObject, IN const KSFILTER_DESCRIPTOR *Descriptor, IN PWSTR RefString OPTIONAL, IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL, IN ULONG CreateItemFlags, IN PFNKSFILTERFACTORYPOWER SleepCallback OPTIONAL, IN PFNKSFILTERFACTORYPOWER WakeCallback OPTIONAL, OUT PKSFILTERFACTORY *FilterFactory OPTIONAL)
NTSTATUS NTAPI KspCreateFilterFactory(IN PDEVICE_OBJECT DeviceObject, IN const KSFILTER_DESCRIPTOR *Descriptor, IN PWSTR RefString OPTIONAL, IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL, IN ULONG CreateItemFlags, IN PFNKSFILTERFACTORYPOWER SleepCallback OPTIONAL, IN PFNKSFILTERFACTORYPOWER WakeCallback OPTIONAL, OUT PKSFILTERFACTORY *FilterFactory OPTIONAL)
KSFILTERFACTORY *NTAPI IKsFilterFactory_fnGetStruct(IKsFilterFactory *iface)
KSDDKAPI PUNICODE_STRING NTAPI KsFilterFactoryGetSymbolicLink(IN PKSFILTERFACTORY FilterFactory)
static IKsFilterFactoryVtbl vt_IKsFilterFactoryVtbl
NTSTATUS NTAPI IKsFilterFactory_Create(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
VOID NTAPI IKsFilterFactory_ItemFreeCb(IN PKSOBJECT_CREATE_ITEM CreateItem)
NTSTATUS NTAPI IKsFilterFactory_fnInitialize(IKsFilterFactory *iface, IN PDEVICE_OBJECT DeviceObject, IN const KSFILTER_DESCRIPTOR *Descriptor, IN PWSTR RefString OPTIONAL, IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL, IN ULONG CreateItemFlags, IN PFNKSFILTERFACTORYPOWER SleepCallback OPTIONAL, IN PFNKSFILTERFACTORYPOWER WakeCallback OPTIONAL, OUT PKSFILTERFACTORY *FilterFactory OPTIONAL)
KSDDKAPI NTSTATUS NTAPI KsFilterFactorySetDeviceClassesState(IN PKSFILTERFACTORY FilterFactory, IN BOOLEAN NewState)
NTSTATUS NTAPI IKsFilterFactory_fnQueryInterface(IKsFilterFactory *iface, IN REFIID refiid, OUT PVOID *Output)
KSDDKAPI NTSTATUS NTAPI KsFilterFactoryUpdateCacheData(IN PKSFILTERFACTORY FilterFactory, IN const KSFILTER_DESCRIPTOR *FilterDescriptor OPTIONAL)
VOID IKsFilterFactory_AttachFilterFactoryToDeviceHeader(IKsFilterFactoryImpl *This, PKSIDEVICE_HEADER DeviceHeader)
ULONG NTAPI IKsFilterFactory_fnRelease(IKsFilterFactory *iface)
ULONG NTAPI IKsFilterFactory_fnAddRef(IKsFilterFactory *iface)
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
static CABITEM * CreateItem(LPCWSTR Path, UINT Attrib, UINT Size, UINT DateTime)
__in WDFDEVICE __in CONST GUID __in_opt PCUNICODE_STRING RefString
NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID, PUNICODE_STRING)
long __cdecl _InterlockedIncrement(_Interlocked_operand_ long volatile *_Addend)
@ KsObjectTypeFilterFactory
PVOID AllocateItem(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes)
VOID FreeItem(IN PVOID Item)
struct KSBASIC_HEADER * PKSBASIC_HEADER
struct SYMBOLIC_LINK_ENTRY * PSYMBOLIC_LINK_ENTRY
struct KSPCACHE_PIN_HEADER * PKSPCACHE_PIN_HEADER
struct KSPCACHE_FILTER_HEADER * PKSPCACHE_FILTER_HEADER
struct KSPCACHE_DATARANGE * PKSPCACHE_DATARANGE
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
_In_ ULONG _In_ ULONG _In_ ULONG Length
_In_ ULONGLONG _In_ ULONGLONG _In_ BOOLEAN Enable
NTSTATUS NTAPI IoOpenDeviceInterfaceRegistryKey(IN PUNICODE_STRING SymbolicLinkName, IN ACCESS_MASK DesiredAccess, OUT PHANDLE DeviceInterfaceKey)
VOID NTAPI KeInitializeMutex(IN PKMUTEX Mutex, IN ULONG Level)
const KSFILTER_DESCRIPTOR FilterDescriptor
PULONG MinorVersion OPTIONAL
base of all file and directory entries
PKSIDEVICE_HEADER DeviceHeader
PFNKSFILTERFACTORYPOWER SleepCallback
KSFILTERFACTORY FilterFactory
PFNKSFILTERFACTORYPOWER WakeCallback
LIST_ENTRY SymbolicLinkList
UNICODE_STRING SymbolicLink
CLSID DeviceInterfaceClass
#define RTL_CONSTANT_STRING(s)
#define RtlZeroMemory(Destination, Length)
#define RtlMoveMemory(Destination, Source, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_INVALID_PARAMETER
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
_In_ WDFCOLLECTION _In_ ULONG Index
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ CONST GUID _In_opt_ PCUNICODE_STRING ReferenceString
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
#define IsEqualGUIDAligned(guid1, guid2)
_IRQL_requires_same_ typedef _In_ ULONG _In_ UCHAR _In_ ULONGLONG _In_ ULONGLONG _In_opt_ PEVENT_FILTER_DESCRIPTOR FilterData
_In_ USHORT _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR _Reserved_ ULONG _In_opt_ PVOID _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH _In_opt_ PEPROCESS _In_opt_ PETHREAD _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor