00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 typedef struct _RELATION_LIST_ENTRY {
00036 ULONG
Count;
00037 ULONG
MaxCount;
00038 PDEVICE_OBJECT Devices[1];
00039 }
RELATION_LIST_ENTRY, *
PRELATION_LIST_ENTRY;
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059 typedef struct _RELATION_LIST {
00060 ULONG
Count;
00061 ULONG
TagCount;
00062 ULONG
FirstLevel;
00063 ULONG
MaxLevel;
00064 PRELATION_LIST_ENTRY Entries[1];
00065 }
RELATION_LIST, *
PRELATION_LIST;
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084 typedef struct _PENDING_RELATIONS_LIST_ENTRY {
00085 LIST_ENTRY
Link;
00086 WORK_QUEUE_ITEM WorkItem;
00087 PPNP_DEVICE_EVENT_ENTRY
DeviceEvent;
00088 PDEVICE_OBJECT DeviceObject;
00089 PRELATION_LIST RelationsList;
00090 PIRP EjectIrp;
00091 ULONG
Problem;
00092 BOOLEAN
ProfileChangingEject;
00093 BOOLEAN
DisplaySafeRemovalDialog;
00094 SYSTEM_POWER_STATE
LightestSleepState;
00095 PDOCK_INTERFACE
DockInterface;
00096 }
PENDING_RELATIONS_LIST_ENTRY, *
PPENDING_RELATIONS_LIST_ENTRY;
00097
00098
00099
00100
00101
NTSTATUS
00102
IopAddRelationToList(
00103 IN PRELATION_LIST List,
00104 IN
PDEVICE_OBJECT DeviceObject,
00105 IN BOOLEAN DirectDescendant,
00106 IN BOOLEAN Tagged
00107 );
00108
00109
PRELATION_LIST
00110
IopAllocateRelationList(
00111 VOID
00112 );
00113
00114
NTSTATUS
00115
IopCompressRelationList(
00116 IN OUT PRELATION_LIST *List
00117 );
00118
00119 BOOLEAN
00120
IopEnumerateRelations(
00121 IN PRELATION_LIST List,
00122 IN OUT PULONG Marker,
00123 OUT
PDEVICE_OBJECT *PhysicalDevice,
00124 OUT BOOLEAN *DirectDescendant, OPTIONAL
00125 OUT BOOLEAN *Tagged, OPTIONAL
00126 BOOLEAN Reverse
00127 );
00128
00129
VOID
00130
IopFreeRelationList(
00131 IN PRELATION_LIST List
00132 );
00133
00134 ULONG
00135
IopGetRelationsCount(
00136 IN PRELATION_LIST List
00137 );
00138
00139 ULONG
00140
IopGetRelationsTaggedCount(
00141 IN PRELATION_LIST List
00142 );
00143
00144 BOOLEAN
00145
IopIsRelationInList(
00146 IN PRELATION_LIST List,
00147 IN
PDEVICE_OBJECT DeviceObject
00148 );
00149
00150
NTSTATUS
00151
IopMergeRelationLists(
00152 IN OUT PRELATION_LIST TargetList,
00153 IN PRELATION_LIST SourceList,
00154 IN BOOLEAN Tagged
00155 );
00156
00157
NTSTATUS
00158
IopRemoveIndirectRelationsFromList(
00159 IN PRELATION_LIST List
00160 );
00161
00162
NTSTATUS
00163
IopRemoveRelationFromList(
00164 IN PRELATION_LIST List,
00165 IN
PDEVICE_OBJECT DeviceObject
00166 );
00167
00168
VOID
00169
IopSetAllRelationsTags(
00170 IN PRELATION_LIST List,
00171 IN BOOLEAN Tagged
00172 );
00173
00174
NTSTATUS
00175
IopSetRelationsTag(
00176 IN PRELATION_LIST List,
00177 IN
PDEVICE_OBJECT DeviceObject,
00178 IN BOOLEAN Tagged
00179 );
00180