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