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