Sync with trunk r43000
[reactos.git] / reactos / include / ddk / bdasup.h
1 #if defined(__cplusplus)
2 extern "C" {
3 #endif
4
5 #define STDMETHODCALLTYPE __stdcall
6 typedef GUID *PGUID;
7
8 /* Types */
9
10 typedef struct _BDA_PIN_PAIRING
11 {
12 ULONG ulInputPin;
13 ULONG ulOutputPin;
14 ULONG ulcMaxInputsPerOutput;
15 ULONG ulcMinInputsPerOutput;
16 ULONG ulcMaxOutputsPerInput;
17 ULONG ulcMinOutputsPerInput;
18 ULONG ulcTopologyJoints;
19 const ULONG *pTopologyJoints;
20 } BDA_PIN_PAIRING, *PBDA_PIN_PAIRING;
21
22 typedef struct _BDA_FILTER_TEMPLATE
23 {
24 const KSFILTER_DESCRIPTOR *pFilterDescriptor;
25 ULONG ulcPinPairs;
26 const BDA_PIN_PAIRING *pPinPairs;
27 } BDA_FILTER_TEMPLATE, *PBDA_FILTER_TEMPLATE;
28
29 /* Functions */
30
31 STDMETHODIMP_(NTSTATUS) BdaCheckChanges(IN PIRP Irp);
32 STDMETHODIMP_(NTSTATUS) BdaCommitChanges(IN PIRP Irp);
33
34 STDMETHODIMP_(NTSTATUS) BdaCreateFilterFactory(
35 IN PKSDEVICE pKSDevice,
36 IN const KSFILTER_DESCRIPTOR *pFilterDescriptor,
37 IN const BDA_FILTER_TEMPLATE *pBdaFilterTemplate);
38
39 STDMETHODIMP_(NTSTATUS) BdaCreateFilterFactoryEx(
40 IN PKSDEVICE pKSDevice,
41 IN const KSFILTER_DESCRIPTOR *pFilterDescriptor,
42 IN const BDA_FILTER_TEMPLATE *pBdaFilterTemplate,
43 OUT PKSFILTERFACTORY *ppKSFilterFactory);
44
45 STDMETHODIMP_(NTSTATUS) BdaCreatePin(
46 IN PKSFILTER pKSFilter,
47 IN ULONG ulPinType,
48 OUT ULONG *pulPinId);
49
50 STDMETHODIMP_(NTSTATUS) BdaCreateTopology(
51 IN PKSFILTER pKSFilter,
52 IN ULONG InputPinId,
53 IN ULONG OutputPinId);
54
55 STDMETHODIMP_(NTSTATUS) BdaDeletePin(
56 IN PKSFILTER pKSFilter,
57 IN ULONG *pulPinId);
58
59 STDMETHODIMP_(NTSTATUS) BdaFilterFactoryUpdateCacheData(
60 IN PKSFILTERFACTORY pFilterFactory,
61 IN const KSFILTER_DESCRIPTOR *pFilterDescriptor OPTIONAL);
62
63 STDMETHODIMP_(NTSTATUS) BdaGetChangeState(
64 IN PIRP Irp,
65 OUT BDA_CHANGE_STATE *pChangeState);
66
67 STDMETHODIMP_(NTSTATUS) BdaInitFilter(
68 IN PKSFILTER pKSFilter,
69 IN const BDA_FILTER_TEMPLATE *pBdaFilterTemplate);
70
71 STDMETHODIMP_(NTSTATUS) BdaMethodCreatePin(
72 IN PIRP Irp,
73 IN KSMETHOD *pKSMethod,
74 OUT ULONG *pulPinFactoryID);
75
76 STDMETHODIMP_(NTSTATUS) BdaMethodCreateTopology(
77 IN PIRP Irp,
78 IN KSMETHOD *pKSMethod,
79 OPTIONAL PVOID pvIgnored);
80
81 STDMETHODIMP_(NTSTATUS) BdaMethodDeletePin(
82 IN PIRP Irp,
83 IN KSMETHOD *pKSMethod,
84 OPTIONAL PVOID pvIgnored);
85
86 STDMETHODIMP_(NTSTATUS) BdaPropertyGetControllingPinId(
87 IN PIRP Irp,
88 IN KSP_BDA_NODE_PIN *pProperty,
89 OUT ULONG *pulControllingPinId);
90
91 STDMETHODIMP_(NTSTATUS) BdaPropertyGetPinControl(
92 IN PIRP Irp,
93 IN KSPROPERTY *pKSProperty,
94 OUT ULONG *pulProperty);
95
96 STDMETHODIMP_(NTSTATUS) BdaPropertyNodeDescriptors(
97 IN PIRP Irp,
98 IN KSPROPERTY *pKSProperty,
99 OUT GUID *pguidProperty);
100
101 STDMETHODIMP_(NTSTATUS) BdaPropertyNodeEvents(
102 IN PIRP Irp,
103 IN KSPROPERTY *pKSProperty,
104 OUT GUID *pguidProperty);
105
106 STDMETHODIMP_(NTSTATUS) BdaPropertyNodeMethods(
107 IN PIRP Irp,
108 IN KSPROPERTY *pKSProperty,
109 OUT GUID *pguidProperty);
110
111 STDMETHODIMP_(NTSTATUS) BdaPropertyNodeProperties(
112 IN PIRP Irp,
113 IN KSPROPERTY *pKSProperty,
114 OUT GUID *pguidProperty);
115
116 STDMETHODIMP_(NTSTATUS) BdaPropertyNodeTypes(
117 IN PIRP Irp,
118 IN KSPROPERTY *pKSProperty,
119 OUT ULONG *pulProperty);
120
121 STDMETHODIMP_(NTSTATUS) BdaPropertyPinTypes(
122 IN PIRP Irp,
123 IN KSPROPERTY *pKSProperty,
124 OUT ULONG *pulProperty);
125
126 STDMETHODIMP_(NTSTATUS) BdaPropertyTemplateConnections(
127 IN PIRP Irp,
128 IN KSPROPERTY *pKSProperty,
129 OUT KSTOPOLOGY_CONNECTION *pConnectionProperty);
130
131 STDMETHODIMP_(NTSTATUS) BdaStartChanges(IN PIRP Irp);
132 STDMETHODIMP_(NTSTATUS) BdaUninitFilter(IN PKSFILTER pKSFilter);
133
134 STDMETHODIMP_(NTSTATUS) BdaValidateNodeProperty(
135 IN PIRP Irp,
136 IN KSPROPERTY *pKSProperty);
137
138 #if defined(__cplusplus)
139 }
140 #endif