1 #ifndef __INCLUDE_DDK_PNPFUNCS_H
2 #define __INCLUDE_DDK_PNPFUNCS_H
4 #define IoInitializeRemoveLock(Lock, Tag, Maxmin, HighWater) \
5 IoInitializeRemoveLockEx(Lock, Tag, Maxmin, HighWater, sizeof(IO_REMOVE_LOCK))
9 IoInitializeRemoveLockEx(
10 IN PIO_REMOVE_LOCK Lock,
12 IN ULONG MaxLockedMinutes,
13 IN ULONG HighWatermark,
14 IN ULONG RemlockSize);
16 #define IoAcquireRemoveLock(RemoveLock, Tag) \
17 IoAcquireRemoveLockEx(RemoveLock, Tag, __FILE__, __LINE__, sizeof(IO_REMOVE_LOCK))
21 IoAcquireRemoveLockEx(
22 IN PIO_REMOVE_LOCK RemoveLock,
23 IN OPTIONAL PVOID Tag,
26 IN ULONG RemlockSize);
28 #define IoReleaseRemoveLock(RemoveLock, Tag) \
29 IoReleaseRemoveLockEx(RemoveLock, Tag, sizeof (IO_REMOVE_LOCK))
33 IoReleaseRemoveLockEx(
34 IN PIO_REMOVE_LOCK RemoveLock,
36 IN ULONG RemlockSize);
38 #define IoReleaseRemoveLockAndWait(RemoveLock, Tag) \
39 IoReleaseRemoveLockAndWaitEx(RemoveLock, Tag, sizeof (IO_REMOVE_LOCK))
43 IoReleaseRemoveLockAndWaitEx(
44 IN PIO_REMOVE_LOCK RemoveLock,
46 IN ULONG RemlockSize);
50 IoAdjustPagingPathCount(
52 IN BOOLEAN Increment);
56 IoGetDeviceInterfaceAlias(
57 IN PUNICODE_STRING SymbolicLinkName,
58 IN CONST GUID *AliasInterfaceClassGuid,
59 OUT PUNICODE_STRING AliasSymbolicLinkName);
63 IoGetDeviceInterfaces(
64 IN CONST GUID *InterfaceClassGuid,
65 IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL,
67 OUT PWSTR *SymbolicLinkList);
72 IN PDEVICE_OBJECT DeviceObject,
73 IN DEVICE_REGISTRY_PROPERTY DeviceProperty,
74 IN ULONG BufferLength,
75 OUT PVOID PropertyBuffer,
76 OUT PULONG ResultLength);
80 IoInvalidateDeviceRelations(
81 IN PDEVICE_OBJECT DeviceObject,
82 IN DEVICE_RELATION_TYPE Type);
86 IoInvalidateDeviceState(
87 IN PDEVICE_OBJECT PhysicalDeviceObject);
91 IoOpenDeviceInterfaceRegistryKey(
92 IN PUNICODE_STRING SymbolicLinkName,
93 IN ACCESS_MASK DesiredAccess,
94 OUT PHANDLE DeviceInterfaceKey);
98 IoOpenDeviceRegistryKey(
99 IN PDEVICE_OBJECT DeviceObject,
100 IN ULONG DevInstKeyType,
101 IN ACCESS_MASK DesiredAccess,
102 OUT PHANDLE DevInstRegKey);
106 IoRegisterDeviceInterface(
107 IN PDEVICE_OBJECT PhysicalDeviceObject,
108 IN CONST GUID *InterfaceClassGuid,
109 IN PUNICODE_STRING ReferenceString OPTIONAL,
110 OUT PUNICODE_STRING SymbolicLinkName);
114 IoRegisterPlugPlayNotification(
115 IN IO_NOTIFICATION_EVENT_CATEGORY EventCategory,
116 IN ULONG EventCategoryFlags,
117 IN PVOID EventCategoryData OPTIONAL,
118 IN PDRIVER_OBJECT DriverObject,
119 IN PDRIVER_NOTIFICATION_CALLBACK_ROUTINE CallbackRoutine,
121 OUT PVOID *NotificationEntry);
125 IoReportDetectedDevice(
126 IN PDRIVER_OBJECT DriverObject,
127 IN INTERFACE_TYPE LegacyBusType,
130 IN PCM_RESOURCE_LIST ResourceList,
131 IN PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirements OPTIONAL,
132 IN BOOLEAN ResourceAssigned,
133 IN OUT PDEVICE_OBJECT *DeviceObject);
137 IoReportResourceForDetection(
138 IN PDRIVER_OBJECT DriverObject,
139 IN PCM_RESOURCE_LIST DriverList OPTIONAL,
140 IN ULONG DriverListSize OPTIONAL,
141 IN PDEVICE_OBJECT DeviceObject OPTIONAL,
142 IN PCM_RESOURCE_LIST DeviceList OPTIONAL,
143 IN ULONG DeviceListSize OPTIONAL,
144 OUT PBOOLEAN ConflictDetected);
148 IoReportTargetDeviceChange(
149 IN PDEVICE_OBJECT PhysicalDeviceObject,
150 IN PVOID NotificationStructure);
154 IoReportTargetDeviceChangeAsynchronous(
155 IN PDEVICE_OBJECT PhysicalDeviceObject,
156 IN PVOID NotificationStructure,
157 IN PDEVICE_CHANGE_COMPLETE_CALLBACK Callback OPTIONAL,
158 IN PVOID Context OPTIONAL);
162 IoRequestDeviceEject(
163 IN PDEVICE_OBJECT PhysicalDeviceObject);
167 IoSetDeviceInterfaceState(
168 IN PUNICODE_STRING SymbolicLinkName,
173 IoUnregisterPlugPlayNotification(
174 IN PVOID NotificationEntry);
176 #endif /* __INCLUDE_DDK_PNPFUNCS_H */