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