1 /*++
2 
3 Copyright (c) Microsoft Corporation.  All rights reserved.
4 
5 _WdfVersionBuild_
6 
7 Module Name:
8 
9     WdfCollection.h
10 
11 Abstract:
12 
13     This is the interface to the collection object
14 
15 Environment:
16 
17     kernel mode only
18 
19 Revision History:
20 
21 --*/
22 
23 //
24 // NOTE: This header is generated by stubwork.  Please make any
25 //       modifications to the corresponding template files
26 //       (.x or .y) and use stubwork to regenerate the header
27 //
28 
29 #ifndef _WDFCOLLECTION_H_
30 #define _WDFCOLLECTION_H_
31 
32 #ifndef WDF_EXTERN_C
33   #ifdef __cplusplus
34     #define WDF_EXTERN_C       extern "C"
35     #define WDF_EXTERN_C_START extern "C" {
36     #define WDF_EXTERN_C_END   }
37   #else
38     #define WDF_EXTERN_C
39     #define WDF_EXTERN_C_START
40     #define WDF_EXTERN_C_END
41   #endif
42 #endif
43 
44 WDF_EXTERN_C_START
45 
46 
47 
48 #if (NTDDI_VERSION >= NTDDI_WIN2K)
49 
50 
51 
52 //
53 // WDF Function: WdfCollectionCreate
54 //
55 typedef
56 _Must_inspect_result_
57 _IRQL_requires_max_(DISPATCH_LEVEL)
58 WDFAPI
59 NTSTATUS
60 (STDCALL *PFN_WDFCOLLECTIONCREATE)(
61     _In_
62     PWDF_DRIVER_GLOBALS DriverGlobals,
63     _In_opt_
64     PWDF_OBJECT_ATTRIBUTES CollectionAttributes,
65     _Out_
66     WDFCOLLECTION* Collection
67     );
68 
69 _Must_inspect_result_
70 _IRQL_requires_max_(DISPATCH_LEVEL)
71 FORCEINLINE
72 NTSTATUS
73 WdfCollectionCreate(
74     _In_opt_
75     PWDF_OBJECT_ATTRIBUTES CollectionAttributes,
76     _Out_
77     WDFCOLLECTION* Collection
78     )
79 {
80     return ((PFN_WDFCOLLECTIONCREATE) WdfFunctions[WdfCollectionCreateTableIndex])(WdfDriverGlobals, CollectionAttributes, Collection);
81 }
82 
83 //
84 // WDF Function: WdfCollectionGetCount
85 //
86 typedef
87 _IRQL_requires_max_(DISPATCH_LEVEL)
88 WDFAPI
89 ULONG
90 (STDCALL *PFN_WDFCOLLECTIONGETCOUNT)(
91     _In_
92     PWDF_DRIVER_GLOBALS DriverGlobals,
93     _In_
94     WDFCOLLECTION Collection
95     );
96 
97 _IRQL_requires_max_(DISPATCH_LEVEL)
98 FORCEINLINE
99 ULONG
100 WdfCollectionGetCount(
101     _In_
102     WDFCOLLECTION Collection
103     )
104 {
105     return ((PFN_WDFCOLLECTIONGETCOUNT) WdfFunctions[WdfCollectionGetCountTableIndex])(WdfDriverGlobals, Collection);
106 }
107 
108 //
109 // WDF Function: WdfCollectionAdd
110 //
111 typedef
112 _Must_inspect_result_
113 _IRQL_requires_max_(DISPATCH_LEVEL)
114 WDFAPI
115 NTSTATUS
116 (STDCALL *PFN_WDFCOLLECTIONADD)(
117     _In_
118     PWDF_DRIVER_GLOBALS DriverGlobals,
119     _In_
120     WDFCOLLECTION Collection,
121     _In_
122     WDFOBJECT Object
123     );
124 
125 _Must_inspect_result_
126 _IRQL_requires_max_(DISPATCH_LEVEL)
127 FORCEINLINE
128 NTSTATUS
129 WdfCollectionAdd(
130     _In_
131     WDFCOLLECTION Collection,
132     _In_
133     WDFOBJECT Object
134     )
135 {
136     return ((PFN_WDFCOLLECTIONADD) WdfFunctions[WdfCollectionAddTableIndex])(WdfDriverGlobals, Collection, Object);
137 }
138 
139 //
140 // WDF Function: WdfCollectionRemove
141 //
142 typedef
143 _IRQL_requires_max_(DISPATCH_LEVEL)
144 WDFAPI
145 VOID
146 (STDCALL *PFN_WDFCOLLECTIONREMOVE)(
147     _In_
148     PWDF_DRIVER_GLOBALS DriverGlobals,
149     _In_
150     WDFCOLLECTION Collection,
151     _In_
152     WDFOBJECT Item
153     );
154 
155 _IRQL_requires_max_(DISPATCH_LEVEL)
156 FORCEINLINE
157 VOID
158 WdfCollectionRemove(
159     _In_
160     WDFCOLLECTION Collection,
161     _In_
162     WDFOBJECT Item
163     )
164 {
165     ((PFN_WDFCOLLECTIONREMOVE) WdfFunctions[WdfCollectionRemoveTableIndex])(WdfDriverGlobals, Collection, Item);
166 }
167 
168 //
169 // WDF Function: WdfCollectionRemoveItem
170 //
171 typedef
172 _IRQL_requires_max_(DISPATCH_LEVEL)
173 WDFAPI
174 VOID
175 (STDCALL *PFN_WDFCOLLECTIONREMOVEITEM)(
176     _In_
177     PWDF_DRIVER_GLOBALS DriverGlobals,
178     _In_
179     WDFCOLLECTION Collection,
180     _In_
181     ULONG Index
182     );
183 
184 _IRQL_requires_max_(DISPATCH_LEVEL)
185 FORCEINLINE
186 VOID
187 WdfCollectionRemoveItem(
188     _In_
189     WDFCOLLECTION Collection,
190     _In_
191     ULONG Index
192     )
193 {
194     ((PFN_WDFCOLLECTIONREMOVEITEM) WdfFunctions[WdfCollectionRemoveItemTableIndex])(WdfDriverGlobals, Collection, Index);
195 }
196 
197 //
198 // WDF Function: WdfCollectionGetItem
199 //
200 typedef
201 _IRQL_requires_max_(DISPATCH_LEVEL)
202 WDFAPI
203 WDFOBJECT
204 (STDCALL *PFN_WDFCOLLECTIONGETITEM)(
205     _In_
206     PWDF_DRIVER_GLOBALS DriverGlobals,
207     _In_
208     WDFCOLLECTION Collection,
209     _In_
210     ULONG Index
211     );
212 
213 _IRQL_requires_max_(DISPATCH_LEVEL)
214 FORCEINLINE
215 WDFOBJECT
216 WdfCollectionGetItem(
217     _In_
218     WDFCOLLECTION Collection,
219     _In_
220     ULONG Index
221     )
222 {
223     return ((PFN_WDFCOLLECTIONGETITEM) WdfFunctions[WdfCollectionGetItemTableIndex])(WdfDriverGlobals, Collection, Index);
224 }
225 
226 //
227 // WDF Function: WdfCollectionGetFirstItem
228 //
229 typedef
230 _IRQL_requires_max_(DISPATCH_LEVEL)
231 WDFAPI
232 WDFOBJECT
233 (STDCALL *PFN_WDFCOLLECTIONGETFIRSTITEM)(
234     _In_
235     PWDF_DRIVER_GLOBALS DriverGlobals,
236     _In_
237     WDFCOLLECTION Collection
238     );
239 
240 _IRQL_requires_max_(DISPATCH_LEVEL)
241 FORCEINLINE
242 WDFOBJECT
243 WdfCollectionGetFirstItem(
244     _In_
245     WDFCOLLECTION Collection
246     )
247 {
248     return ((PFN_WDFCOLLECTIONGETFIRSTITEM) WdfFunctions[WdfCollectionGetFirstItemTableIndex])(WdfDriverGlobals, Collection);
249 }
250 
251 //
252 // WDF Function: WdfCollectionGetLastItem
253 //
254 typedef
255 _IRQL_requires_max_(DISPATCH_LEVEL)
256 WDFAPI
257 WDFOBJECT
258 (STDCALL *PFN_WDFCOLLECTIONGETLASTITEM)(
259     _In_
260     PWDF_DRIVER_GLOBALS DriverGlobals,
261     _In_
262     WDFCOLLECTION Collection
263     );
264 
265 _IRQL_requires_max_(DISPATCH_LEVEL)
266 FORCEINLINE
267 WDFOBJECT
268 WdfCollectionGetLastItem(
269     _In_
270     WDFCOLLECTION Collection
271     )
272 {
273     return ((PFN_WDFCOLLECTIONGETLASTITEM) WdfFunctions[WdfCollectionGetLastItemTableIndex])(WdfDriverGlobals, Collection);
274 }
275 
276 
277 
278 #endif // (NTDDI_VERSION >= NTDDI_WIN2K)
279 
280 
281 WDF_EXTERN_C_END
282 
283 #endif // _WDFCOLLECTION_H_
284 
285