ReactOS 0.4.16-dev-297-gc569aee
fxchildlist.hpp
Go to the documentation of this file.
1/*++
2
3Copyright (c) Microsoft Corporation. All rights reserved.
4
5Module Name:
6
7 FxChildList.hpp
8
9Abstract:
10
11 Defines the interface for asynchronously creating and destroying child
12 devices
13
14Author:
15
16
17
18Environment:
19
20 Both kernel and user mode
21
22Revision History:
23
24--*/
25
26#ifndef _FXDEVICELIST_H_
27#define _FXDEVICELIST_H_
28
32};
33
35
37 __in PFX_DRIVER_GLOBALS FxDriverGlobals
38 ) :
39 FxCallback(FxDriverGlobals),
41 {
42 }
43
47 __in WDFCHILDLIST DeviceList,
50 )
51 {
53
57
58 return status;
59 }
60
62};
63
65
67 __in PFX_DRIVER_GLOBALS FxDriverGlobals
68 ) :
69 FxCallback(FxDriverGlobals),
71 {
72 }
73
74 VOID
76 __in WDFCHILDLIST DeviceList
77 )
78 {
79 if (m_Method != NULL) {
83 }
84 }
85
87};
88
93};
94
100};
101
104
105public:
106
107 static
112 __in PFX_DRIVER_GLOBALS FxDriverGlobals,
113 __in PWDF_OBJECT_ATTRIBUTES ListAttributes,
114 __in size_t TotalDescriptionSize,
116 __in PWDF_CHILD_LIST_CONFIG ListConfig,
118 );
119
120 WDFCHILDLIST
122 VOID
123 )
124 {
125 return (WDFCHILDLIST) GetObjectHandle();
126 }
127
128 MxEvent*
130 VOID
131 )
132 {
134 }
135
136 WDFDEVICE
137 GetDevice(
138 VOID
139 );
140
141 CfxDevice*
144 );
145
151 );
152
153 VOID
157 );
158
159 VOID
160 BeginScan(
161 __out_opt PULONG ScanTag = NULL
162 );
163
164 VOID
165 EndScan(
166 __inout_opt PULONG ScanTag = NULL
167 );
168
169 VOID
171 __in BOOLEAN EndTheScan,
172 __inout_opt PULONG ScanTag
173 );
174
175 VOID
178 );
179
180 VOID
183 );
184
185 VOID
188 );
189
193 __out WDFDEVICE* Device,
196 );
197
198 WDFDEVICE
200 __in WDFDEVICE PreviousDevice,
202 );
203
204 BOOLEAN
206 __in PULONG ScanTag
207 )
208 {
209 return *ScanTag == ScanTagCancelled ? TRUE : FALSE;
210 }
211
216 );
217
222 );
223
224 VOID
227 );
228
229 VOID
231 __in_opt PULONG ScanTag = NULL
232 );
233
236 Add(
239 __in_opt PULONG ScanTag = NULL
240 );
241
242 VOID
246 );
247
248 BOOLEAN
250 VOID
251 )
252 {
253 return m_AddressDescriptionSize > 0 ? TRUE : FALSE;
254 }
255
256 ULONG
258 VOID
259 )
260 {
262 }
263
264 ULONG
266 VOID
267 )
268 {
270 }
271
272 VOID
276 )
277 {
280 }
281 else {
283 }
284 }
285
289 __inout PDEVICE_RELATIONS *DeviceRelations
290 );
291
292 VOID
294 VOID
295 );
296
297 VOID
299 VOID
300 );
301
302 VOID
304 __in NTSTATUS WakeWakeStatus
305 );
306
307 VOID
309 VOID
310 )
311 {
313 }
314
315 //
316 // This notification is for the parent device.
317 // Child pnp remove notifications occur on the FxDeviceDescriptionEntry
318 //
319 VOID
321 VOID
322 );
323
324 //
325 // This notification is for the parent device.
326 // Child pnp remove notifications occur on the FxDeviceDescriptionEntry
327 //
328 VOID
330 __inout PLONG ChildCount
331 );
332
333 BOOLEAN
335 VOID
336 )
337 {
338 return m_StaticList;
339 }
340
341 static
345 __in PFX_DRIVER_GLOBALS FxDriverGlobals,
347 __in size_t* TotalDescriptionSize
348 );
349
350 static
354 __in PFX_DRIVER_GLOBALS FxDriverGlobals,
356 __in size_t* TotalDescriptionSize
357 );
358
359 static
360 size_t
363 )
364 {
365 if (Count == 0) {
366 return sizeof(((PDEVICE_RELATIONS) NULL)->Count);
367 }
368 else {
369 return sizeof(DEVICE_RELATIONS) + (Count-1)*sizeof(PDEVICE_OBJECT);
370 }
371 }
372
373 static
377 )
378 {
380 }
381
382 ULONG
384 VOID
385 )
386 {
387 return m_ScanCount;
388 }
389
390protected:
391
393 __in PFX_DRIVER_GLOBALS FxDriverGlobals,
394 __in size_t TotalDescriptionSize,
397 );
398
399 virtual
400 BOOLEAN
401 Dispose(
402 VOID
403 );
404
405 VOID
408 );
409
410 BOOLEAN
413 __in BOOLEAN FromQDR
414 );
415
416 BOOLEAN
418 __inout PLIST_ENTRY FreeListHead,
420 __in BOOLEAN FromQDR
421 );
422
423 VOID
425 __inout PLIST_ENTRY FreeListHead
426 );
427
428 VOID
430 __inout FxDeviceDescriptionEntry* DescriptionEntry,
431 __in BOOLEAN ModificationCanBeQueued
432 );
433
434 VOID
436 __inout PLIST_ENTRY FreeListHead,
437 __inout FxDeviceDescriptionEntry* ModificationEntry
438 );
439
440 VOID
442 __inout PLIST_ENTRY FreeListHead
443 );
444
448 );
449
453 );
454
459 );
460
465 );
466
467 BOOLEAN
470 __inout PBOOLEAN InvalidateRelations
471 );
472
478 )
479 {
482 Source,
483 Dest);
484 }
485 else {
487 return STATUS_SUCCESS;
488 }
489 }
490
491 BOOLEAN
495 )
496 {
499 Lhs,
500 Rhs);
501 }
502 else {
505 Rhs,
507 : FALSE;
508 }
509 }
510
516 )
517 {
520 }
521 else {
523 return STATUS_SUCCESS;
524 }
525 }
526
527 VOID
531 )
532 {
533 if (Source != NULL) {
536 }
537 else {
539 }
540 }
541 }
542
543 VOID
547 )
548 {
549 if (m_EvtAddressDescriptionCleanup != NULL && AddrDescription != NULL) {
550 m_EvtAddressDescriptionCleanup(GetHandle(), AddrDescription);
551 }
552
553 if (m_EvtIdentificationDescriptionCleanup != NULL && IdDescription != NULL) {
555 }
556 }
557
558public:
559 //
560 // Link into list of FxChildList pointers maintained by the package. This
561 // differs from IFxStateChangeNotification's link because that one links
562 // into the list of pnp state change notifications for the device we are
563 // associated with.
564 //
566
567protected:
569
571
573
575
577
578 //
579 // These callbacks are not wrapped in FxCallback derived structures becase
580 // they are called under the framework locking and not in a locking model
581 // in which the driver writer can configure.
582 //
583 // copy one ID description to another
585
586 // duplicate one ID description to another
588
589 // cleanup an ID description
591
592 // compare to ID descriptions
594
595 // copy one address description to another
597
598 // duplicate one address description to another
600
601 // cleanup an address description
603
604 // clone notification
606
608
610
612
614
616
618
619 //
620 // Whether the child list is added to the enumerated children list.
621 //
623
625
627
629
631};
632
633// begin_wpp enum
641};
642// end_wpp
643
644// begin_wpp enum
651};
652// end_wpp
653
654// begin_wpp enum
659};
660// end_wpp
661
665
667 friend class FxDevice;
668 friend class FxChildList;
669
670public:
673 __in ULONG AddressDescriptionSize,
675 );
676
678
680 PVOID
681 operator new(
682 __in size_t AllocatorBlock,
684 __in size_t TotalDescriptionSize
685 );
686
689 VOID
690 )
691 {
692 return m_DeviceList;
693 }
694
695
698 VOID
699 )
700 {
702 }
703
704 BOOLEAN
706 VOID
707 );
708
709 BOOLEAN
711 VOID
712 );
713
714 VOID
716 VOID
717 );
718
719 VOID
721 VOID
722 );
723
726 Clone(
727 __inout PLIST_ENTRY FreeListHead
728 );
729
730 BOOLEAN
733 )
734 {
737 ||
741 ||
744 ) {
745
746 return TRUE;
747 }
748
749 return FALSE;
750 }
751
752protected:
753 BOOLEAN
754 __inline
756 VOID
757 )
758 {
761 return TRUE;
762 }
763 else {
764 return FALSE;
765 }
766 }
767
768 static
772 )
773 {
774 return CONTAINING_RECORD(Link,
777 }
778
779 static
783 )
784 {
785 return CONTAINING_RECORD(Link,
788 }
789
790protected:
792
794
796
798
800
802
804
806
808
810
812
814};
815
816#endif // _FXDEVICELIST_H_
DWORD Id
unsigned char BOOLEAN
LONG NTSTATUS
Definition: precomp.h:26
void __inline CallbackStart(VOID)
Definition: fxcallback.hpp:64
void __inline CallbackEnd(VOID)
Definition: fxcallback.hpp:74
_Must_inspect_result_ NTSTATUS UpdateDeviceAsMissing(__in CfxDevice *Device)
VOID GetAddressDescriptionFromEntry(__in FxDeviceDescriptionEntry *Entry, __out PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription)
MxEvent m_ScanEvent
KSPIN_LOCK m_ListLock
VOID PostParentToD0(VOID)
PFN_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_DUPLICATE m_EvtAddressDescriptionDuplicate
VOID NotifyDeviceRemove(__inout PLONG ChildCount)
VOID ReenumerateEntry(__inout FxDeviceDescriptionEntry *Entry)
BOOLEAN m_IsAdded
PFN_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_DUPLICATE m_EvtIdentificationDescriptionDuplicate
_Must_inspect_result_ NTSTATUS GetNextDevice(__out WDFDEVICE *Device, __inout PWDF_CHILD_LIST_ITERATOR Iterator, __inout_opt PWDF_CHILD_RETRIEVE_INFO Info)
_Must_inspect_result_ NTSTATUS VerifyDescriptionEntry(__in PLIST_ENTRY Entry)
virtual BOOLEAN Dispose(VOID)
BOOLEAN HasAddressDescriptions(VOID)
static FxChildList * _FromEntry(__in FxTransactionedEntry *Entry)
static _Must_inspect_result_ NTSTATUS _ValidateConfig(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PWDF_CHILD_LIST_CONFIG Config, __in size_t *TotalDescriptionSize)
VOID DrainFreeListHead(__inout PLIST_ENTRY FreeListHead)
ULONG m_IdentificationDescriptionSize
BOOLEAN IsScanCancelled(__in PULONG ScanTag)
ULONG m_ScanCount
VOID CopyAddress(__out PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER Dest, __in_opt PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER Source)
MxEvent * GetScanEvent(VOID)
PFN_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_CLEANUP m_EvtIdentificationDescriptionCleanup
CfxDevice * GetDeviceFromId(__inout PWDF_CHILD_RETRIEVE_INFO Info)
PFN_WDF_CHILD_LIST_DEVICE_REENUMERATED m_EvtChildListDeviceReenumerated
WDFCHILDLIST GetHandle(VOID)
BOOLEAN IsStaticList(VOID)
_Must_inspect_result_ NTSTATUS GetAddressDescription(__in PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription, __out PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription)
BOOLEAN m_StaticList
UCHAR m_EnumRetries
LIST_ENTRY m_ModificationListHead
FxTransactionedEntry m_TransactionLink
VOID MarkDescriptionNotPresentWorker(__inout FxDeviceDescriptionEntry *DescriptionEntry, __in BOOLEAN ModificationCanBeQueued)
VOID InvokeReportedMissingCallback(VOID)
VOID CleanupDescriptions(__in_opt PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdDescription, __in_opt PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddrDescription)
VOID ProcessModificationsLocked(__inout PLIST_ENTRY FreeListHead)
VOID BeginIteration(__inout PWDF_CHILD_LIST_ITERATOR Iterator)
FxDeviceDescriptionEntry * SearchBackwardsForMatchingDescriptionLocked(__in PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER Id)
FxDeviceDescriptionEntry * SearchBackwardsForMatchingModificationLocked(__in PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER Id)
_Must_inspect_result_ NTSTATUS VerifyModificationEntry(__in PLIST_ENTRY Entry)
VOID IndicateWakeStatus(__in NTSTATUS WakeWakeStatus)
VOID NotifyDeviceSurpriseRemove(VOID)
_Must_inspect_result_ NTSTATUS Add(__in PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription, __in_opt PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription, __in_opt PULONG ScanTag=NULL)
static _Must_inspect_result_ NTSTATUS _CreateAndInit(__out FxChildList **ChildList, __in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PWDF_OBJECT_ATTRIBUTES ListAttributes, __in size_t TotalDescriptionSize, __in CfxDevice *Device, __in PWDF_CHILD_LIST_CONFIG ListConfig, __in BOOLEAN Static=FALSE)
BOOLEAN CompareId(__in PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER Lhs, __in PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER Rhs)
VOID InitIterator(__inout PWDF_CHILD_LIST_ITERATOR Iterator)
ULONG GetScanCount(VOID)
VOID UpdateAddressDescriptionFromEntry(__inout FxDeviceDescriptionEntry *Entry, __in PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription)
VOID EndIteration(__inout PWDF_CHILD_LIST_ITERATOR Iterator)
PFN_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_COPY m_EvtAddressDescriptionCopy
PFN_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_CLEANUP m_EvtAddressDescriptionCleanup
PULONG m_ScanTag
ULONG GetIdentificationDescriptionSize(VOID)
BOOLEAN CreateDevice(__inout FxDeviceDescriptionEntry *Entry, __inout PBOOLEAN InvalidateRelations)
FxChildListCreateDeviceCallback m_EvtCreateDevice
ULONG GetAddressDescriptionSize(VOID)
ULONG m_AddressDescriptionSize
static _Must_inspect_result_ NTSTATUS _ComputeTotalDescriptionSize(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PWDF_CHILD_LIST_CONFIG Config, __in size_t *TotalDescriptionSize)
VOID CopyId(__out PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER Dest, __in PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER Source)
WDFDEVICE GetNextStaticDevice(__in WDFDEVICE PreviousDevice, __in ULONG Flags)
BOOLEAN ReenumerateEntryLocked(__inout FxDeviceDescriptionEntry *Entry, __in BOOLEAN FromQDR)
FxChildListScanForChildrenCallback m_EvtScanForChildren
static size_t _ComputeRelationsSize(__in ULONG Count)
BOOLEAN CloneEntryLocked(__inout PLIST_ENTRY FreeListHead, __inout FxDeviceDescriptionEntry *Entry, __in BOOLEAN FromQDR)
VOID CancelScan(__in BOOLEAN EndTheScan, __inout_opt PULONG ScanTag)
_Must_inspect_result_ NTSTATUS DuplicateId(__out PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER Dest, __in PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER Source)
_Must_inspect_result_ NTSTATUS DuplicateAddress(__out PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER Dest, __in PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER Source)
_Must_inspect_result_ NTSTATUS ProcessBusRelations(__inout PDEVICE_RELATIONS *DeviceRelations)
PFN_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_COMPARE m_EvtIdentificationDescriptionCompare
PFN_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_COPY m_EvtIdentificationDescriptionCopy
VOID ScanForChildren(VOID)
LIST_ENTRY m_DescriptionListHead
FxChildListState m_State
VOID MarkModificationNotPresentWorker(__inout PLIST_ENTRY FreeListHead, __inout FxDeviceDescriptionEntry *ModificationEntry)
BOOLEAN m_InvalidationNeeded
size_t m_TotalDescriptionSize
_Must_inspect_result_ NTSTATUS UpdateAsMissing(__in PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER Description)
MxEvent * GetSelfPointer(VOID)
Definition: mxevent.h:110
#define __out_opt
Definition: dbghelp.h:65
#define __inout_opt
Definition: dbghelp.h:53
#define __in
Definition: dbghelp.h:35
#define __inout
Definition: dbghelp.h:50
#define __in_opt
Definition: dbghelp.h:38
#define __out
Definition: dbghelp.h:62
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
static const WCHAR Description[]
Definition: oid.c:1266
PDEVICE_LIST DeviceList
Definition: utils.c:27
ULONG KSPIN_LOCK
Definition: env_spec_w32.h:72
#define RtlCompareMemory(s1, s2, l)
Definition: env_spec_w32.h:465
struct _DEVICE_OBJECT * PDEVICE_OBJECT
FxChildListModificationState
@ ModificationRemoveNotify
@ ModificationRemove
@ ModificationUnspecified
@ ModificationNeedsPnpRemoval
@ ModificationClone
@ ModificationInsert
FxChildListScanTagStates
Definition: fxchildlist.hpp:95
@ ScanTagFinished
Definition: fxchildlist.hpp:99
@ ScanTagActive
Definition: fxchildlist.hpp:97
@ ScanTagCancelled
Definition: fxchildlist.hpp:98
@ ScanTagUndefined
Definition: fxchildlist.hpp:96
FxChildListState
Definition: fxchildlist.hpp:89
@ ListUnlocked
Definition: fxchildlist.hpp:90
@ ListLockedForEnum
Definition: fxchildlist.hpp:91
@ ListLockedForParentRemove
Definition: fxchildlist.hpp:92
FxChildListIteratorIndexValues
Definition: fxchildlist.hpp:29
@ ModificationIndex
Definition: fxchildlist.hpp:31
@ DescriptionIndex
Definition: fxchildlist.hpp:30
FxChildListDescriptionState
@ DescriptionNotPresent
@ DescriptionPresentNeedsInstantiation
@ DescriptionUnspecified
@ DescriptionReportedMissing
@ DescriptionInstantiatedHasObject
FxChildListValues
@ FX_CHILD_LIST_MAX_RETRIES
FxChildListReportedMissingCallbackState
@ CallbackInvoked
@ CallbackStateUnspecified
@ CallbackNeedsToBeInvoked
pList BeginScan()
return pList GetDevice()
pList EndScan()
pList UpdateAllAsPresent()
return pObject GetObjectHandle()
description Header IdentificationDescriptionSize
DriverGlobals
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
Definition: ndis.h:3169
#define _Must_inspect_result_
Definition: no_sal2.h:62
int Count
Definition: noreturn.cpp:7
#define STATUS_SUCCESS
Definition: shellext.h:65
base of all file and directory entries
Definition: entries.h:83
_Must_inspect_result_ NTSTATUS Invoke(__in WDFCHILDLIST DeviceList, __in PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription, __in PWDFDEVICE_INIT ChildInit)
Definition: fxchildlist.hpp:46
PFN_WDF_CHILD_LIST_CREATE_DEVICE m_Method
Definition: fxchildlist.hpp:61
FxChildListCreateDeviceCallback(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
Definition: fxchildlist.hpp:36
FxChildListScanForChildrenCallback(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
Definition: fxchildlist.hpp:66
PFN_WDF_CHILD_LIST_SCAN_FOR_CHILDREN m_Method
Definition: fxchildlist.hpp:86
VOID Invoke(__in WDFCHILDLIST DeviceList)
Definition: fxchildlist.hpp:75
FxChildListReportedMissingCallbackState m_ReportedMissingCallbackState
static FxDeviceDescriptionEntry * _FromDescriptionLink(__in PLIST_ENTRY Link)
_Must_inspect_result_ FxDeviceDescriptionEntry * Clone(__inout PLIST_ENTRY FreeListHead)
FxChildListDescriptionState m_DescriptionState
VOID DeviceSurpriseRemoved(VOID)
BOOLEAN MatchStateToFlags(__in ULONG Flags)
PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER m_IdentificationDescription
PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER m_AddressDescription
BOOLEAN IsDeviceReportedMissing(VOID)
PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER GetId(VOID)
FxChildList * m_DeviceList
BOOLEAN __inline IsPresent(VOID)
FxChildListModificationState m_ModificationState
BOOLEAN IsDeviceRemoved(VOID)
static FxDeviceDescriptionEntry * _FromModificationLink(__in PLIST_ENTRY Link)
FxChildList * GetParentList(VOID)
Definition: window.h:585
Definition: typedefs.h:120
Definition: ps.c:97
#define GetHandle(h)
Definition: treelist.c:116
uint32_t * PULONG
Definition: typedefs.h:59
unsigned char * PBOOLEAN
Definition: typedefs.h:53
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
int32_t * PLONG
Definition: typedefs.h:58
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
uint32_t ULONG
Definition: typedefs.h:59
static int Link(const char **args)
Definition: vfdcmd.c:2414
_In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR Iterator
Definition: wdfchildlist.h:656
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
Definition: wdfchildlist.h:690
_Must_inspect_result_ _In_ WDFDEVICE Device
Definition: wdfchildlist.h:474
@ WdfRetrievePendingChildren
Definition: wdfchildlist.h:63
@ WdfRetrieveMissingChildren
Definition: wdfchildlist.h:62
@ WdfRetrievePresentChildren
Definition: wdfchildlist.h:61
_In_ PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription
Definition: wdfchildlist.h:124
EVT_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_COPY * PFN_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_COPY
Definition: wdfchildlist.h:225
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_CHILD_LIST_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFCHILDLIST * ChildList
Definition: wdfchildlist.h:481
EVT_WDF_CHILD_LIST_SCAN_FOR_CHILDREN * PFN_WDF_CHILD_LIST_SCAN_FOR_CHILDREN
Definition: wdfchildlist.h:142
EVT_WDF_CHILD_LIST_CREATE_DEVICE * PFN_WDF_CHILD_LIST_CREATE_DEVICE
Definition: wdfchildlist.h:129
EVT_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_COPY * PFN_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_COPY
Definition: wdfchildlist.h:159
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_CHILD_LIST_CONFIG Config
Definition: wdfchildlist.h:476
EVT_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_CLEANUP * PFN_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_CLEANUP
Definition: wdfchildlist.h:257
EVT_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_DUPLICATE * PFN_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_DUPLICATE
Definition: wdfchildlist.h:176
EVT_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_CLEANUP * PFN_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_CLEANUP
Definition: wdfchildlist.h:208
EVT_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_DUPLICATE * PFN_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_DUPLICATE
Definition: wdfchildlist.h:242
EVT_WDF_CHILD_LIST_DEVICE_REENUMERATED * PFN_WDF_CHILD_LIST_DEVICE_REENUMERATED
Definition: wdfchildlist.h:276
_Inout_ PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription
Definition: wdfchildlist.h:255
_In_ PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER _In_ PWDFDEVICE_INIT ChildInit
Definition: wdfchildlist.h:127
EVT_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_COMPARE * PFN_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_COMPARE
Definition: wdfchildlist.h:193
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
struct _DEVICE_RELATIONS * PDEVICE_RELATIONS
struct _DEVICE_RELATIONS DEVICE_RELATIONS
static void Initialize()
Definition: xlate.c:212
unsigned char UCHAR
Definition: xmlstorage.h:181