2 * PROJECT: ReactOS Native Headers
3 * FILE: include/ndk/cmtypes.h
4 * PURPOSE: Definitions for Config Manager Types not defined in DDK/IFS
5 * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
13 /* DEPENDENCIES **************************************************************/
17 /* EXPORTED DATA *************************************************************/
19 /* CONSTANTS *****************************************************************/
20 #define MAX_BUS_NAME 24
22 /* PLUGPLAY_CONTROL_RELATED_DEVICE_DATA.Relation values */
23 #define PNP_GET_PARENT_DEVICE 1
24 #define PNP_GET_CHILD_DEVICE 2
25 #define PNP_GET_SIBLING_DEVICE 3
27 /* PLUGPLAY_CONTROL_STATUS_DATA.Operation values */
28 #define PNP_GET_DEVICE_STATUS 0
29 #define PNP_SET_DEVICE_STATUS 1
30 #define PNP_CLEAR_DEVICE_STATUS 2
32 /* ENUMERATIONS **************************************************************/
35 typedef enum _KEY_INFORMATION_CLASS
43 } KEY_INFORMATION_CLASS
;
45 typedef enum _KEY_VALUE_INFORMATION_CLASS
47 KeyValueBasicInformation
,
48 KeyValueFullInformation
,
49 KeyValuePartialInformation
,
50 KeyValueFullInformationAlign64
,
51 KeyValuePartialInformationAlign64
52 } KEY_VALUE_INFORMATION_CLASS
;
54 typedef enum _KEY_SET_INFORMATION_CLASS
56 KeyWriteTimeInformation
,
57 KeyUserFlagsInformation
,
59 } KEY_SET_INFORMATION_CLASS
;
62 typedef enum _PLUGPLAY_CONTROL_CLASS
64 PlugPlayControlUserResponse
= 0x07,
65 PlugPlayControlProperty
= 0x0A,
66 PlugPlayControlGetRelatedDevice
= 0x0C,
67 PlugPlayControlDeviceStatus
= 0x0E,
68 PlugPlayControlGetDeviceDepth
69 } PLUGPLAY_CONTROL_CLASS
;
71 typedef enum _PLUGPLAY_BUS_CLASS
76 } PLUGPLAY_BUS_CLASS
, *PPLUGPLAY_BUS_CLASS
;
78 typedef enum _PLUGPLAY_VIRTUAL_BUS_TYPE
81 MaxPlugPlayVirtualBusType
82 } PLUGPLAY_VIRTUAL_BUS_TYPE
, *PPLUGPLAY_VIRTUAL_BUS_TYPE
;
84 typedef enum _PLUGPLAY_EVENT_CATEGORY
86 HardwareProfileChangeEvent
,
87 TargetDeviceChangeEvent
,
88 DeviceClassChangeEvent
,
96 } PLUGPLAY_EVENT_CATEGORY
;
97 /* TYPES *********************************************************************/
100 typedef struct _KEY_WRITE_TIME_INFORMATION
102 LARGE_INTEGER LastWriteTime
;
103 } KEY_WRITE_TIME_INFORMATION
, *PKEY_WRITE_TIME_INFORMATION
;
105 typedef struct _KEY_USER_FLAGS_INFORMATION
108 } KEY_USER_FLAGS_INFORMATION
, *PKEY_USER_FLAGS_INFORMATION
;
110 typedef struct _KEY_FULL_INFORMATION
112 LARGE_INTEGER LastWriteTime
;
120 ULONG MaxValueNameLen
;
121 ULONG MaxValueDataLen
;
123 } KEY_FULL_INFORMATION
, *PKEY_FULL_INFORMATION
;
125 typedef struct _KEY_NODE_INFORMATION
127 LARGE_INTEGER LastWriteTime
;
133 } KEY_NODE_INFORMATION
, *PKEY_NODE_INFORMATION
;
135 typedef struct _KEY_VALUE_ENTRY
137 PUNICODE_STRING ValueName
;
141 } KEY_VALUE_ENTRY
, *PKEY_VALUE_ENTRY
;
143 typedef struct _KEY_VALUE_PARTIAL_INFORMATION
149 } KEY_VALUE_PARTIAL_INFORMATION
, *PKEY_VALUE_PARTIAL_INFORMATION
;
151 typedef struct _KEY_VALUE_BASIC_INFORMATION
157 } KEY_VALUE_BASIC_INFORMATION
, *PKEY_VALUE_BASIC_INFORMATION
;
159 typedef struct _KEY_VALUE_FULL_INFORMATION
167 } KEY_VALUE_FULL_INFORMATION
, *PKEY_VALUE_FULL_INFORMATION
;
169 typedef struct _KEY_BASIC_INFORMATION
171 LARGE_INTEGER LastWriteTime
;
175 } KEY_BASIC_INFORMATION
, *PKEY_BASIC_INFORMATION
;
179 typedef struct _PLUGPLAY_EVENT_BLOCK
182 PLUGPLAY_EVENT_CATEGORY EventCategory
;
192 WCHAR SymbolicLinkName
[ANYSIZE_ARRAY
];
196 WCHAR DeviceIds
[ANYSIZE_ARRAY
];
200 WCHAR DeviceId
[ANYSIZE_ARRAY
];
204 PVOID NotificationStructure
;
205 WCHAR DeviceIds
[ANYSIZE_ARRAY
];
206 } CustomNotification
;
210 } ProfileNotification
;
213 ULONG NotificationCode
;
214 ULONG NotificationData
;
218 PNP_VETO_TYPE VetoType
;
219 WCHAR DeviceIdVetoNameBuffer
[ANYSIZE_ARRAY
];
223 GUID BlockedDriverGuid
;
224 } BlockedDriverNotification
;
226 } PLUGPLAY_EVENT_BLOCK
, *PPLUGPLAY_EVENT_BLOCK
;
229 typedef struct _PLUGPLAY_CONTROL_PROPERTY_DATA
231 UNICODE_STRING DeviceInstance
;
235 } PLUGPLAY_CONTROL_PROPERTY_DATA
, *PPLUGPLAY_CONTROL_PROPERTY_DATA
;
238 typedef struct _PLUGPLAY_CONTROL_RELATED_DEVICE_DATA
240 UNICODE_STRING TargetDeviceInstance
;
241 ULONG Relation
; /* 1: Parent 2: Child 3: Sibling */
242 UNICODE_STRING RelatedDeviceInstance
;
243 } PLUGPLAY_CONTROL_RELATED_DEVICE_DATA
, *PPLUGPLAY_CONTROL_RELATED_DEVICE_DATA
;
246 typedef struct _PLUGPLAY_CONTOL_STATUS_DATA
248 UNICODE_STRING DeviceInstance
;
249 ULONG Operation
; /* 0: Get 1: Set 2: Clear */
250 ULONG DeviceStatus
; /* DN_ see cfg.h */
251 ULONG DeviceProblem
; /* CM_PROB_ see cfg.h */
252 } PLUGPLAY_CONTROL_STATUS_DATA
, *PPLUGPLAY_CONTROL_STATUS_DATA
;
255 typedef struct _PLUGPLAY_CONTOL_DEPTH_DATA
257 UNICODE_STRING DeviceInstance
;
259 } PLUGPLAY_CONTROL_DEPTH_DATA
, *PPLUGPLAY_CONTROL_DEPTH_DATA
;
261 typedef struct _PLUGPLAY_BUS_TYPE
263 PLUGPLAY_BUS_CLASS BusClass
;
266 INTERFACE_TYPE SystemBusType
;
267 PLUGPLAY_VIRTUAL_BUS_TYPE PlugPlayVirtualBusType
;
269 } PLUGPLAY_BUS_TYPE
, *PPLUGPLAY_BUS_TYPE
;
271 typedef struct _PLUGPLAY_BUS_INSTANCE
273 PLUGPLAY_BUS_TYPE BusType
;
275 WCHAR BusName
[MAX_BUS_NAME
];
276 } PLUGPLAY_BUS_INSTANCE
, *PPLUGPLAY_BUS_INSTANCE
;