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