4const GUID KSPROPSETID_BdaPinControl = {0xded49d5, 0xa8b7, 0x4d5d, {0x97, 0xa1, 0x12, 0xb0, 0xc1, 0x95, 0x87, 0x4d}};
5const GUID KSMETHODSETID_BdaDeviceConfiguration = {0x71985f45, 0x1ca1, 0x11d3, {0x9c, 0xc8, 0x0, 0xc0, 0x4f, 0x79, 0x71, 0xe0}};
6const GUID KSPROPSETID_BdaTopology = {0xa14ee835, 0x0a23, 0x11d3, {0x9c, 0xc7, 0x0, 0xc0, 0x4f, 0x79, 0x71, 0xe0}};
55 sizeof(KSPROPERTY_ITEM),
58 sizeof(KSMETHOD_ITEM),
83 sizeof(KSPROPERTY_ITEM),
86 sizeof(KSMETHOD_ITEM),
117 IN PKSFILTERFACTORY FilterFactory)
141 InstanceEntry =
NULL;
149 return InstanceEntry;
160 DPRINT(
"BDASUP::DllInitialize\n");
176 DPRINT(
"BdaCheckChanges\n");
191 DPRINT(
"BdaCommitChanges\n");
205 IN PKSDEVICE pKSDevice,
255 IN PKSDEVICE pKSDevice,
260 PKSFILTERFACTORY FilterFactory;
266 DPRINT(
"BdaCreateFilterFactoryEx\n");
292 DPRINT1(
"KsMergeAutomationTables failed with %lx\n",
Status);
367 IN PKSFILTER pKSFilter,
371 PKSPIN_DESCRIPTOR_EX PinDescriptor;
372 PKSFILTERFACTORY FilterFactory;
376 PKSPIN_DESCRIPTOR_EX NewPinDescriptor;
384 FilterFactory = KsFilterGetParentFilterFactory(pKSFilter);
406 DPRINT(
"BdaCreatePin NoPins supported\n");
426 if (!NewPinDescriptor)
429 DPRINT(
"BdaCreatePin OutOfMemory\n");
434 RtlMoveMemory(NewPinDescriptor, PinDescriptor,
sizeof(KSPIN_DESCRIPTOR_EX));
454 DPRINT(
"BdaCreatePin Result %x PinId %u\n",
Status, PinId);
471 DPRINT(
"BdaMethodCreatePin\n");
499 IN PKSFILTER pKSFilter,
503 PKSFILTERFACTORY FilterFactory;
514 FilterFactory = KsFilterGetParentFilterFactory(pKSFilter);
554 IN PKSFILTER pKSFilter,
559 PKSFILTERFACTORY FilterFactory;
562 DPRINT(
"BdaCreateTopology\n");
569 FilterFactory = KsFilterGetParentFilterFactory(pKSFilter);
606 IN PKSFILTER pKSFilter,
620 IN PKSFILTERFACTORY FilterFactory,
623 DPRINT(
"BdaFilterFactoryUpdateCacheData\n");
636 DPRINT(
"BdaGetChangeState\n");
638 if (
Irp && ChangeState)
662 DPRINT(
"BdaMethodCreateTopology\n");
691 DPRINT(
"BdaMethodDeletePin\n");
710 DPRINT(
"BdaPropertyGetControllingPinId\n");
726 PKSFILTERFACTORY FilterFactory;
729 DPRINT(
"BdaPropertyGetPinControl\n");
740 FilterFactory = KsFilterGetParentFilterFactory(
Filter);
768 DPRINT(
"BdaPropertyNodeDescriptors\n");
783 DPRINT(
"BdaPropertyNodeEvents\n");
798 DPRINT(
"BdaPropertyNodeMethods\n");
813 DPRINT(
"BdaPropertyNodeProperties\n");
828 PKSFILTERFACTORY FilterFactory;
833 DPRINT(
"BdaPropertyNodeTypes\n");
846 FilterFactory = KsFilterGetParentFilterFactory(pKSFilter);
896 PKSFILTERFACTORY FilterFactory;
901 DPRINT(
"BdaPropertyPinTypes\n");
914 FilterFactory = KsFilterGetParentFilterFactory(pKSFilter);
968 DPRINT(
"BdaPropertyTemplateConnections\n");
1025 DPRINT(
"BdaStartChanges\n");
1041 DPRINT(
"BdaUninitFilter\n");
1054 DPRINT(
"BdaValidateNodeProperty\n");
1057 if (
Irp && KSProperty)
NTSTATUS NTAPI KsAddItemToObjectBag(IN KSOBJECT_BAG ObjectBag, IN PVOID Item, IN PFNKSFREE Free OPTIONAL)
KSDDKAPI NTSTATUS NTAPI _KsEdit(IN KSOBJECT_BAG ObjectBag, IN OUT PVOID *PointerToPointerToItem, IN ULONG NewSize, IN ULONG OldSize, IN ULONG Tag)
KSMETHOD_SET FilterMethodSet
NTSTATUS NTAPI BdaUninitFilter(IN PKSFILTER pKSFilter)
NTSTATUS NTAPI BdaPropertyNodeMethods(IN PIRP Irp, IN KSP_NODE *pKSProperty, OUT GUID *pguidProperty)
KSPROPERTY_SET PinPropertySet
PVOID AllocateItem(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes)
NTSTATUS NTAPI BdaPropertyNodeTypes(IN PIRP Irp, IN KSPROPERTY *pKSProperty, OUT ULONG *pulProperty)
const GUID KSPROPSETID_BdaPinControl
NTSTATUS NTAPI BdaFilterFactoryUpdateCacheData(IN PKSFILTERFACTORY FilterFactory, IN const KSFILTER_DESCRIPTOR *FilterDescriptor OPTIONAL)
KSAUTOMATION_TABLE PinAutomationTable
VOID NTAPI FreeFilterInstance(IN PVOID Context)
NTSTATUS NTAPI BdaInitFilter(IN PKSFILTER pKSFilter, IN const BDA_FILTER_TEMPLATE *pBdaFilterTemplate)
NTSTATUS NTAPI BdaValidateNodeProperty(IN PIRP Irp, IN KSPROPERTY *KSProperty)
NTSTATUS NTAPI BdaPropertyNodeDescriptors(IN PIRP Irp, IN KSPROPERTY *pKSProperty, OUT BDANODE_DESCRIPTOR *pNodeDescriptorProperty)
NTSTATUS NTAPI DllInitialize(PUNICODE_STRING RegistryPath)
NTSTATUS NTAPI BdaCreateTopology(IN PKSFILTER pKSFilter, IN ULONG InputPinId, IN ULONG OutputPinId)
NTSTATUS NTAPI BdaCheckChanges(IN PIRP Irp)
KSPROPERTY_ITEM FilterPropertyItem[]
NTSTATUS NTAPI BdaPropertyNodeEvents(IN PIRP Irp, IN KSP_NODE *pKSProperty, OUT GUID *pguidProperty)
NTSTATUS NTAPI BdaCreateFilterFactoryEx(IN PKSDEVICE pKSDevice, IN const KSFILTER_DESCRIPTOR *pFilterDescriptor, IN const BDA_FILTER_TEMPLATE *BdaFilterTemplate, OUT PKSFILTERFACTORY *ppKSFilterFactory)
NTSTATUS NTAPI BdaPropertyPinTypes(IN PIRP Irp, IN KSPROPERTY *pKSProperty, OUT ULONG *pulProperty)
const GUID KSMETHODSETID_BdaDeviceConfiguration
PBDA_FILTER_INSTANCE_ENTRY GetFilterInstanceEntry(IN PKSFILTERFACTORY FilterFactory)
const GUID KSPROPSETID_BdaTopology
KSPROPERTY_ITEM PinPropertyItem[]
NTSTATUS NTAPI BdaPropertyGetPinControl(IN PIRP Irp, IN KSPROPERTY *pKSProperty, OUT ULONG *pulProperty)
KSMETHOD_ITEM FilterMethodItem[]
NTSTATUS NTAPI BdaPropertyGetControllingPinId(IN PIRP Irp, IN KSP_BDA_NODE_PIN *pProperty, OUT ULONG *pulControllingPinId)
KSAUTOMATION_TABLE FilterAutomationTable
NTSTATUS NTAPI BdaCreatePin(IN PKSFILTER pKSFilter, IN ULONG ulPinType, OUT ULONG *pulPinId)
NTSTATUS NTAPI BdaMethodCreateTopology(IN PIRP Irp, IN KSMETHOD *pKSMethod, OPTIONAL PVOID pvIgnored)
NTSTATUS NTAPI BdaGetChangeState(IN PIRP Irp, OUT BDA_CHANGE_STATE *ChangeState)
NTSTATUS NTAPI BdaDeletePin(IN PKSFILTER pKSFilter, IN ULONG *pulPinId)
NTSTATUS NTAPI BdaStartChanges(IN PIRP Irp)
NTSTATUS NTAPI BdaCreateFilterFactory(IN PKSDEVICE pKSDevice, IN const KSFILTER_DESCRIPTOR *pFilterDescriptor, IN const BDA_FILTER_TEMPLATE *pBdaFilterTemplate)
KSPROPERTY_SET FilterPropertySet
NTSTATUS NTAPI BdaPropertyNodeProperties(IN PIRP Irp, IN KSP_NODE *pKSProperty, OUT GUID *pguidProperty)
VOID FreeItem(IN PVOID Item)
NTSTATUS NTAPI BdaCommitChanges(IN PIRP Irp)
NTSTATUS NTAPI BdaPropertyTemplateConnections(IN PIRP Irp, IN KSPROPERTY *pKSProperty, OUT KSTOPOLOGY_CONNECTION *pConnectionProperty)
NTSTATUS NTAPI BdaMethodDeletePin(IN PIRP Irp, IN KSMETHOD *pKSMethod, OPTIONAL PVOID pvIgnored)
NTSTATUS NTAPI BdaMethodCreatePin(IN PIRP Irp, IN KSMETHOD *pKSMethod, OUT ULONG *pulPinFactoryID)
_Must_inspect_result_ _In_ const KSFILTER_DESCRIPTOR _In_ const BDA_FILTER_TEMPLATE _Out_opt_ PKSFILTERFACTORY * ppKSFilterFactory
struct _KSM_PIN * PKSM_PIN
_Must_inspect_result_ _In_ KSMETHOD _Out_opt_ ULONG * pulPinFactoryID
_Must_inspect_result_ _In_ KSP_BDA_NODE_PIN * pProperty
_Must_inspect_result_ _In_ KSMETHOD PVOID pvIgnored
_Must_inspect_result_ _In_ KSPROPERTY _Out_opt_ KSTOPOLOGY_CONNECTION * pConnectionProperty
_Must_inspect_result_ _In_ ULONG ulPinType
_Must_inspect_result_ _In_ const KSFILTER_DESCRIPTOR * pFilterDescriptor
_Must_inspect_result_ _In_ KSPROPERTY _Out_opt_ ULONG * pulProperty
_Must_inspect_result_ _In_ ULONG _Out_opt_ ULONG * pulPinId
_Must_inspect_result_ _In_ KSPROPERTY _Out_opt_ BDANODE_DESCRIPTOR * pNodeDescriptorProperty
_Must_inspect_result_ _In_ KSP_BDA_NODE_PIN _Out_opt_ ULONG * pulControllingPinId
_Must_inspect_result_ _In_ const KSFILTER_DESCRIPTOR _In_ const BDA_FILTER_TEMPLATE * pBdaFilterTemplate
_Must_inspect_result_ _In_ KSP_NODE _Out_opt_ GUID * pguidProperty
_Must_inspect_result_ _In_ KSMETHOD * pKSMethod
_Must_inspect_result_ _In_ ULONG InputPinId
_Must_inspect_result_ _In_ KSPROPERTY * pKSProperty
_Must_inspect_result_ _In_ ULONG _In_ ULONG OutputPinId
#define NT_SUCCESS(StatCode)
NTSTATUS NTAPI KsMergeAutomationTables(OUT PKSAUTOMATION_TABLE *AutomationTableAB, IN PKSAUTOMATION_TABLE AutomationTableA OPTIONAL, IN PKSAUTOMATION_TABLE AutomationTableB OPTIONAL, IN KSOBJECT_BAG Bag OPTIONAL)
KSDDKAPI NTSTATUS NTAPI KsFilterCreatePinFactory(IN PKSFILTER Filter, IN const KSPIN_DESCRIPTOR_EX *const InPinDescriptor, OUT PULONG PinID)
KSDDKAPI NTSTATUS NTAPI KsFilterAddTopologyConnections(IN PKSFILTER Filter, IN ULONG NewConnectionsCount, IN const KSTOPOLOGY_CONNECTION *const NewTopologyConnections)
KSDDKAPI PKSFILTER NTAPI KsGetFilterFromIrp(IN PIRP Irp)
PKSFILTER NTAPI KsPinGetParentFilter(IN PKSPIN Pin)
KSDDKAPI PKSPIN NTAPI KsGetPinFromIrp(IN PIRP Irp)
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define KeReleaseSpinLock(sl, irql)
#define KeAcquireSpinLock(sl, irql)
#define InitializeListHead(ListHead)
#define KeInitializeSpinLock(sl)
IN PDCB IN VBO IN ULONG IN BOOLEAN Pin
#define ExAllocatePool(type, size)
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)
KSDDKAPI NTSTATUS NTAPI KsFilterFactoryUpdateCacheData(IN PKSFILTERFACTORY FilterFactory, IN const KSFILTER_DESCRIPTOR *FilterDescriptor OPTIONAL)
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
#define STATUS_NOT_IMPLEMENTED
#define STATUS_BUFFER_TOO_SMALL
#define STATUS_BUFFER_OVERFLOW
const KSFILTER_DESCRIPTOR FilterDescriptor
PULONG MinorVersion OPTIONAL
PKSFILTERFACTORY FilterFactoryInstance
PBDA_FILTER_TEMPLATE FilterTemplate
LIST_ENTRY FilterFactoryInstanceList
KSPIN_LOCK FilterFactoryInstanceListLock
base of all file and directory entries
const KSFILTER_DESCRIPTOR * pFilterDescriptor
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
struct _LIST_ENTRY * Flink
#define RtlZeroMemory(Destination, Length)
#define RtlMoveMemory(Destination, Source, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_INVALID_PARAMETER
#define STATUS_UNSUCCESSFUL
#define STATUS_MORE_ENTRIES
#define STATUS_INSUFFICIENT_RESOURCES
_In_ WDFCOLLECTION _In_ ULONG Index
_In_ WDFCOLLECTION _In_ WDFOBJECT Item
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _Inout_ PLARGE_INTEGER NumberOfBytes