[XDK]
[reactos.git] / include / xdk / cmtypes.h
1 /******************************************************************************
2 * Configuration Manager Types *
3 ******************************************************************************/
4
5 $if (_WDMDDK_)
6 /* Resource list definitions */
7 typedef int CM_RESOURCE_TYPE;
8
9 #define CmResourceTypeNull 0
10 #define CmResourceTypePort 1
11 #define CmResourceTypeInterrupt 2
12 #define CmResourceTypeMemory 3
13 #define CmResourceTypeDma 4
14 #define CmResourceTypeDeviceSpecific 5
15 #define CmResourceTypeBusNumber 6
16 #define CmResourceTypeNonArbitrated 128
17 #define CmResourceTypeConfigData 128
18 #define CmResourceTypeDevicePrivate 129
19 #define CmResourceTypePcCardConfig 130
20 #define CmResourceTypeMfCardConfig 131
21
22 /* KEY_VALUE_Xxx.Type */
23 #define REG_NONE 0
24 #define REG_SZ 1
25 #define REG_EXPAND_SZ 2
26 #define REG_BINARY 3
27 #define REG_DWORD 4
28 #define REG_DWORD_LITTLE_ENDIAN 4
29 #define REG_DWORD_BIG_ENDIAN 5
30 #define REG_LINK 6
31 #define REG_MULTI_SZ 7
32 #define REG_RESOURCE_LIST 8
33 #define REG_FULL_RESOURCE_DESCRIPTOR 9
34 #define REG_RESOURCE_REQUIREMENTS_LIST 10
35 #define REG_QWORD 11
36 #define REG_QWORD_LITTLE_ENDIAN 11
37
38 /* Registry Access Rights */
39 #define KEY_QUERY_VALUE (0x0001)
40 #define KEY_SET_VALUE (0x0002)
41 #define KEY_CREATE_SUB_KEY (0x0004)
42 #define KEY_ENUMERATE_SUB_KEYS (0x0008)
43 #define KEY_NOTIFY (0x0010)
44 #define KEY_CREATE_LINK (0x0020)
45 #define KEY_WOW64_32KEY (0x0200)
46 #define KEY_WOW64_64KEY (0x0100)
47 #define KEY_WOW64_RES (0x0300)
48
49 #define KEY_READ ((STANDARD_RIGHTS_READ |\
50 KEY_QUERY_VALUE |\
51 KEY_ENUMERATE_SUB_KEYS |\
52 KEY_NOTIFY) \
53 & \
54 (~SYNCHRONIZE))
55
56 #define KEY_WRITE ((STANDARD_RIGHTS_WRITE |\
57 KEY_SET_VALUE |\
58 KEY_CREATE_SUB_KEY) \
59 & \
60 (~SYNCHRONIZE))
61
62 #define KEY_EXECUTE ((KEY_READ) \
63 & \
64 (~SYNCHRONIZE))
65
66 #define KEY_ALL_ACCESS ((STANDARD_RIGHTS_ALL |\
67 KEY_QUERY_VALUE |\
68 KEY_SET_VALUE |\
69 KEY_CREATE_SUB_KEY |\
70 KEY_ENUMERATE_SUB_KEYS |\
71 KEY_NOTIFY |\
72 KEY_CREATE_LINK) \
73 & \
74 (~SYNCHRONIZE))
75
76 /* Registry Open/Create Options */
77 #define REG_OPTION_RESERVED (0x00000000L)
78 #define REG_OPTION_NON_VOLATILE (0x00000000L)
79 #define REG_OPTION_VOLATILE (0x00000001L)
80 #define REG_OPTION_CREATE_LINK (0x00000002L)
81 #define REG_OPTION_BACKUP_RESTORE (0x00000004L)
82 #define REG_OPTION_OPEN_LINK (0x00000008L)
83
84 #define REG_LEGAL_OPTION \
85 (REG_OPTION_RESERVED |\
86 REG_OPTION_NON_VOLATILE |\
87 REG_OPTION_VOLATILE |\
88 REG_OPTION_CREATE_LINK |\
89 REG_OPTION_BACKUP_RESTORE |\
90 REG_OPTION_OPEN_LINK)
91
92 /* Key creation/open disposition */
93 #define REG_CREATED_NEW_KEY (0x00000001L)
94 #define REG_OPENED_EXISTING_KEY (0x00000002L)
95
96 /* Key restore & hive load flags */
97 #define REG_WHOLE_HIVE_VOLATILE (0x00000001L)
98 #define REG_REFRESH_HIVE (0x00000002L)
99 #define REG_NO_LAZY_FLUSH (0x00000004L)
100 #define REG_FORCE_RESTORE (0x00000008L)
101 #define REG_APP_HIVE (0x00000010L)
102 #define REG_PROCESS_PRIVATE (0x00000020L)
103 #define REG_START_JOURNAL (0x00000040L)
104 #define REG_HIVE_EXACT_FILE_GROWTH (0x00000080L)
105 #define REG_HIVE_NO_RM (0x00000100L)
106 #define REG_HIVE_SINGLE_LOG (0x00000200L)
107
108 /* Unload Flags */
109 #define REG_FORCE_UNLOAD 1
110
111 /* Notify Filter Values */
112 #define REG_NOTIFY_CHANGE_NAME (0x00000001L)
113 #define REG_NOTIFY_CHANGE_ATTRIBUTES (0x00000002L)
114 #define REG_NOTIFY_CHANGE_LAST_SET (0x00000004L)
115 #define REG_NOTIFY_CHANGE_SECURITY (0x00000008L)
116
117 #define REG_LEGAL_CHANGE_FILTER \
118 (REG_NOTIFY_CHANGE_NAME |\
119 REG_NOTIFY_CHANGE_ATTRIBUTES |\
120 REG_NOTIFY_CHANGE_LAST_SET |\
121 REG_NOTIFY_CHANGE_SECURITY)
122
123 typedef struct _CM_FLOPPY_DEVICE_DATA {
124 USHORT Version;
125 USHORT Revision;
126 CHAR Size[8];
127 ULONG MaxDensity;
128 ULONG MountDensity;
129 UCHAR StepRateHeadUnloadTime;
130 UCHAR HeadLoadTime;
131 UCHAR MotorOffTime;
132 UCHAR SectorLengthCode;
133 UCHAR SectorPerTrack;
134 UCHAR ReadWriteGapLength;
135 UCHAR DataTransferLength;
136 UCHAR FormatGapLength;
137 UCHAR FormatFillCharacter;
138 UCHAR HeadSettleTime;
139 UCHAR MotorSettleTime;
140 UCHAR MaximumTrackValue;
141 UCHAR DataTransferRate;
142 } CM_FLOPPY_DEVICE_DATA, *PCM_FLOPPY_DEVICE_DATA;
143
144 #include <pshpack4.h>
145 typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR {
146 UCHAR Type;
147 UCHAR ShareDisposition;
148 USHORT Flags;
149 union {
150 struct {
151 PHYSICAL_ADDRESS Start;
152 ULONG Length;
153 } Generic;
154 struct {
155 PHYSICAL_ADDRESS Start;
156 ULONG Length;
157 } Port;
158 struct {
159 #if defined(NT_PROCESSOR_GROUPS)
160 USHORT Level;
161 USHORT Group;
162 #else
163 ULONG Level;
164 #endif
165 ULONG Vector;
166 KAFFINITY Affinity;
167 } Interrupt;
168 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
169 struct {
170 __GNU_EXTENSION union {
171 struct {
172 #if defined(NT_PROCESSOR_GROUPS)
173 USHORT Group;
174 #else
175 USHORT Reserved;
176 #endif
177 USHORT MessageCount;
178 ULONG Vector;
179 KAFFINITY Affinity;
180 } Raw;
181 struct {
182 #if defined(NT_PROCESSOR_GROUPS)
183 USHORT Level;
184 USHORT Group;
185 #else
186 ULONG Level;
187 #endif
188 ULONG Vector;
189 KAFFINITY Affinity;
190 } Translated;
191 } DUMMYUNIONNAME;
192 } MessageInterrupt;
193 #endif
194 struct {
195 PHYSICAL_ADDRESS Start;
196 ULONG Length;
197 } Memory;
198 struct {
199 ULONG Channel;
200 ULONG Port;
201 ULONG Reserved1;
202 } Dma;
203 struct {
204 ULONG Data[3];
205 } DevicePrivate;
206 struct {
207 ULONG Start;
208 ULONG Length;
209 ULONG Reserved;
210 } BusNumber;
211 struct {
212 ULONG DataSize;
213 ULONG Reserved1;
214 ULONG Reserved2;
215 } DeviceSpecificData;
216 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
217 struct {
218 PHYSICAL_ADDRESS Start;
219 ULONG Length40;
220 } Memory40;
221 struct {
222 PHYSICAL_ADDRESS Start;
223 ULONG Length48;
224 } Memory48;
225 struct {
226 PHYSICAL_ADDRESS Start;
227 ULONG Length64;
228 } Memory64;
229 #endif
230 } u;
231 } CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR;
232 #include <poppack.h>
233
234 /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Type */
235 #define CmResourceTypeNull 0
236 #define CmResourceTypePort 1
237 #define CmResourceTypeInterrupt 2
238 #define CmResourceTypeMemory 3
239 #define CmResourceTypeDma 4
240 #define CmResourceTypeDeviceSpecific 5
241 #define CmResourceTypeBusNumber 6
242 #define CmResourceTypeMemoryLarge 7
243 #define CmResourceTypeNonArbitrated 128
244 #define CmResourceTypeConfigData 128
245 #define CmResourceTypeDevicePrivate 129
246 #define CmResourceTypePcCardConfig 130
247 #define CmResourceTypeMfCardConfig 131
248
249 /* CM_PARTIAL_RESOURCE_DESCRIPTOR.ShareDisposition */
250 typedef enum _CM_SHARE_DISPOSITION {
251 CmResourceShareUndetermined,
252 CmResourceShareDeviceExclusive,
253 CmResourceShareDriverExclusive,
254 CmResourceShareShared
255 } CM_SHARE_DISPOSITION;
256
257 /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypePort */
258 #define CM_RESOURCE_PORT_MEMORY 0x0000
259 #define CM_RESOURCE_PORT_IO 0x0001
260 #define CM_RESOURCE_PORT_10_BIT_DECODE 0x0004
261 #define CM_RESOURCE_PORT_12_BIT_DECODE 0x0008
262 #define CM_RESOURCE_PORT_16_BIT_DECODE 0x0010
263 #define CM_RESOURCE_PORT_POSITIVE_DECODE 0x0020
264 #define CM_RESOURCE_PORT_PASSIVE_DECODE 0x0040
265 #define CM_RESOURCE_PORT_WINDOW_DECODE 0x0080
266 #define CM_RESOURCE_PORT_BAR 0x0100
267
268 /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeInterrupt */
269 #define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE 0x0000
270 #define CM_RESOURCE_INTERRUPT_LATCHED 0x0001
271 #define CM_RESOURCE_INTERRUPT_MESSAGE 0x0002
272 #define CM_RESOURCE_INTERRUPT_POLICY_INCLUDED 0x0004
273
274 /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeMemory */
275 #define CM_RESOURCE_MEMORY_READ_WRITE 0x0000
276 #define CM_RESOURCE_MEMORY_READ_ONLY 0x0001
277 #define CM_RESOURCE_MEMORY_WRITE_ONLY 0x0002
278 #define CM_RESOURCE_MEMORY_WRITEABILITY_MASK 0x0003
279 #define CM_RESOURCE_MEMORY_PREFETCHABLE 0x0004
280 #define CM_RESOURCE_MEMORY_COMBINEDWRITE 0x0008
281 #define CM_RESOURCE_MEMORY_24 0x0010
282 #define CM_RESOURCE_MEMORY_CACHEABLE 0x0020
283 #define CM_RESOURCE_MEMORY_WINDOW_DECODE 0x0040
284 #define CM_RESOURCE_MEMORY_BAR 0x0080
285 #define CM_RESOURCE_MEMORY_COMPAT_FOR_INACCESSIBLE_RANGE 0x0100
286
287 /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeDma */
288 #define CM_RESOURCE_DMA_8 0x0000
289 #define CM_RESOURCE_DMA_16 0x0001
290 #define CM_RESOURCE_DMA_32 0x0002
291 #define CM_RESOURCE_DMA_8_AND_16 0x0004
292 #define CM_RESOURCE_DMA_BUS_MASTER 0x0008
293 #define CM_RESOURCE_DMA_TYPE_A 0x0010
294 #define CM_RESOURCE_DMA_TYPE_B 0x0020
295 #define CM_RESOURCE_DMA_TYPE_F 0x0040
296
297 typedef struct _CM_PARTIAL_RESOURCE_LIST {
298 USHORT Version;
299 USHORT Revision;
300 ULONG Count;
301 CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1];
302 } CM_PARTIAL_RESOURCE_LIST, *PCM_PARTIAL_RESOURCE_LIST;
303
304 typedef struct _CM_FULL_RESOURCE_DESCRIPTOR {
305 INTERFACE_TYPE InterfaceType;
306 ULONG BusNumber;
307 CM_PARTIAL_RESOURCE_LIST PartialResourceList;
308 } CM_FULL_RESOURCE_DESCRIPTOR, *PCM_FULL_RESOURCE_DESCRIPTOR;
309
310 typedef struct _CM_RESOURCE_LIST {
311 ULONG Count;
312 CM_FULL_RESOURCE_DESCRIPTOR List[1];
313 } CM_RESOURCE_LIST, *PCM_RESOURCE_LIST;
314
315 #include <pshpack1.h>
316 typedef struct _CM_INT13_DRIVE_PARAMETER {
317 USHORT DriveSelect;
318 ULONG MaxCylinders;
319 USHORT SectorsPerTrack;
320 USHORT MaxHeads;
321 USHORT NumberDrives;
322 } CM_INT13_DRIVE_PARAMETER, *PCM_INT13_DRIVE_PARAMETER;
323
324 typedef struct _CM_PNP_BIOS_DEVICE_NODE {
325 USHORT Size;
326 UCHAR Node;
327 ULONG ProductId;
328 UCHAR DeviceType[3];
329 USHORT DeviceAttributes;
330 } CM_PNP_BIOS_DEVICE_NODE,*PCM_PNP_BIOS_DEVICE_NODE;
331
332 typedef struct _CM_PNP_BIOS_INSTALLATION_CHECK {
333 UCHAR Signature[4];
334 UCHAR Revision;
335 UCHAR Length;
336 USHORT ControlField;
337 UCHAR Checksum;
338 ULONG EventFlagAddress;
339 USHORT RealModeEntryOffset;
340 USHORT RealModeEntrySegment;
341 USHORT ProtectedModeEntryOffset;
342 ULONG ProtectedModeCodeBaseAddress;
343 ULONG OemDeviceId;
344 USHORT RealModeDataBaseAddress;
345 ULONG ProtectedModeDataBaseAddress;
346 } CM_PNP_BIOS_INSTALLATION_CHECK, *PCM_PNP_BIOS_INSTALLATION_CHECK;
347 #include <poppack.h>
348
349 typedef struct _CM_DISK_GEOMETRY_DEVICE_DATA {
350 ULONG BytesPerSector;
351 ULONG NumberOfCylinders;
352 ULONG SectorsPerTrack;
353 ULONG NumberOfHeads;
354 } CM_DISK_GEOMETRY_DEVICE_DATA, *PCM_DISK_GEOMETRY_DEVICE_DATA;
355
356 typedef struct _CM_KEYBOARD_DEVICE_DATA {
357 USHORT Version;
358 USHORT Revision;
359 UCHAR Type;
360 UCHAR Subtype;
361 USHORT KeyboardFlags;
362 } CM_KEYBOARD_DEVICE_DATA, *PCM_KEYBOARD_DEVICE_DATA;
363
364 typedef struct _CM_MCA_POS_DATA {
365 USHORT AdapterId;
366 UCHAR PosData1;
367 UCHAR PosData2;
368 UCHAR PosData3;
369 UCHAR PosData4;
370 } CM_MCA_POS_DATA, *PCM_MCA_POS_DATA;
371
372 #if (NTDDI_VERSION >= NTDDI_WINXP)
373 typedef struct CM_Power_Data_s {
374 ULONG PD_Size;
375 DEVICE_POWER_STATE PD_MostRecentPowerState;
376 ULONG PD_Capabilities;
377 ULONG PD_D1Latency;
378 ULONG PD_D2Latency;
379 ULONG PD_D3Latency;
380 DEVICE_POWER_STATE PD_PowerStateMapping[PowerSystemMaximum];
381 SYSTEM_POWER_STATE PD_DeepestSystemWake;
382 } CM_POWER_DATA, *PCM_POWER_DATA;
383
384 #define PDCAP_D0_SUPPORTED 0x00000001
385 #define PDCAP_D1_SUPPORTED 0x00000002
386 #define PDCAP_D2_SUPPORTED 0x00000004
387 #define PDCAP_D3_SUPPORTED 0x00000008
388 #define PDCAP_WAKE_FROM_D0_SUPPORTED 0x00000010
389 #define PDCAP_WAKE_FROM_D1_SUPPORTED 0x00000020
390 #define PDCAP_WAKE_FROM_D2_SUPPORTED 0x00000040
391 #define PDCAP_WAKE_FROM_D3_SUPPORTED 0x00000080
392 #define PDCAP_WARM_EJECT_SUPPORTED 0x00000100
393
394 #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
395
396 typedef struct _CM_SCSI_DEVICE_DATA {
397 USHORT Version;
398 USHORT Revision;
399 UCHAR HostIdentifier;
400 } CM_SCSI_DEVICE_DATA, *PCM_SCSI_DEVICE_DATA;
401
402 typedef struct _CM_SERIAL_DEVICE_DATA {
403 USHORT Version;
404 USHORT Revision;
405 ULONG BaudClock;
406 } CM_SERIAL_DEVICE_DATA, *PCM_SERIAL_DEVICE_DATA;
407
408 typedef enum _KEY_INFORMATION_CLASS {
409 KeyBasicInformation,
410 KeyNodeInformation,
411 KeyFullInformation,
412 KeyNameInformation,
413 KeyCachedInformation,
414 KeyFlagsInformation
415 } KEY_INFORMATION_CLASS;
416
417 typedef struct _KEY_BASIC_INFORMATION {
418 LARGE_INTEGER LastWriteTime;
419 ULONG TitleIndex;
420 ULONG NameLength;
421 WCHAR Name[1];
422 } KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
423
424 typedef struct _KEY_FULL_INFORMATION {
425 LARGE_INTEGER LastWriteTime;
426 ULONG TitleIndex;
427 ULONG ClassOffset;
428 ULONG ClassLength;
429 ULONG SubKeys;
430 ULONG MaxNameLen;
431 ULONG MaxClassLen;
432 ULONG Values;
433 ULONG MaxValueNameLen;
434 ULONG MaxValueDataLen;
435 WCHAR Class[1];
436 } KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
437
438 typedef struct _KEY_NODE_INFORMATION {
439 LARGE_INTEGER LastWriteTime;
440 ULONG TitleIndex;
441 ULONG ClassOffset;
442 ULONG ClassLength;
443 ULONG NameLength;
444 WCHAR Name[1];
445 } KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
446
447 typedef struct _KEY_VALUE_BASIC_INFORMATION {
448 ULONG TitleIndex;
449 ULONG Type;
450 ULONG NameLength;
451 WCHAR Name[1];
452 } KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
453
454 typedef struct _KEY_VALUE_FULL_INFORMATION {
455 ULONG TitleIndex;
456 ULONG Type;
457 ULONG DataOffset;
458 ULONG DataLength;
459 ULONG NameLength;
460 WCHAR Name[1];
461 } KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
462
463 typedef struct _KEY_VALUE_PARTIAL_INFORMATION {
464 ULONG TitleIndex;
465 ULONG Type;
466 ULONG DataLength;
467 UCHAR Data[1];
468 } KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
469
470 typedef struct _KEY_VALUE_PARTIAL_INFORMATION_ALIGN64 {
471 ULONG Type;
472 ULONG DataLength;
473 UCHAR Data[1];
474 } KEY_VALUE_PARTIAL_INFORMATION_ALIGN64, *PKEY_VALUE_PARTIAL_INFORMATION_ALIGN64;
475
476 typedef struct _KEY_VALUE_ENTRY {
477 PUNICODE_STRING ValueName;
478 ULONG DataLength;
479 ULONG DataOffset;
480 ULONG Type;
481 } KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
482
483 typedef enum _KEY_VALUE_INFORMATION_CLASS {
484 KeyValueBasicInformation,
485 KeyValueFullInformation,
486 KeyValuePartialInformation,
487 KeyValueFullInformationAlign64,
488 KeyValuePartialInformationAlign64
489 } KEY_VALUE_INFORMATION_CLASS;
490
491 typedef struct _KEY_WRITE_TIME_INFORMATION {
492 LARGE_INTEGER LastWriteTime;
493 } KEY_WRITE_TIME_INFORMATION, *PKEY_WRITE_TIME_INFORMATION;
494
495 typedef enum _KEY_SET_INFORMATION_CLASS {
496 KeyWriteTimeInformation,
497 KeyWow64FlagsInformation,
498 KeyControlFlagsInformation,
499 KeySetVirtualizationInformation,
500 KeySetDebugInformation,
501 KeySetHandleTagsInformation,
502 MaxKeySetInfoClass
503 } KEY_SET_INFORMATION_CLASS;
504
505 typedef enum _REG_NOTIFY_CLASS {
506 RegNtDeleteKey,
507 RegNtPreDeleteKey = RegNtDeleteKey,
508 RegNtSetValueKey,
509 RegNtPreSetValueKey = RegNtSetValueKey,
510 RegNtDeleteValueKey,
511 RegNtPreDeleteValueKey = RegNtDeleteValueKey,
512 RegNtSetInformationKey,
513 RegNtPreSetInformationKey = RegNtSetInformationKey,
514 RegNtRenameKey,
515 RegNtPreRenameKey = RegNtRenameKey,
516 RegNtEnumerateKey,
517 RegNtPreEnumerateKey = RegNtEnumerateKey,
518 RegNtEnumerateValueKey,
519 RegNtPreEnumerateValueKey = RegNtEnumerateValueKey,
520 RegNtQueryKey,
521 RegNtPreQueryKey = RegNtQueryKey,
522 RegNtQueryValueKey,
523 RegNtPreQueryValueKey = RegNtQueryValueKey,
524 RegNtQueryMultipleValueKey,
525 RegNtPreQueryMultipleValueKey = RegNtQueryMultipleValueKey,
526 RegNtPreCreateKey,
527 RegNtPostCreateKey,
528 RegNtPreOpenKey,
529 RegNtPostOpenKey,
530 RegNtKeyHandleClose,
531 RegNtPreKeyHandleClose = RegNtKeyHandleClose,
532 RegNtPostDeleteKey,
533 RegNtPostSetValueKey,
534 RegNtPostDeleteValueKey,
535 RegNtPostSetInformationKey,
536 RegNtPostRenameKey,
537 RegNtPostEnumerateKey,
538 RegNtPostEnumerateValueKey,
539 RegNtPostQueryKey,
540 RegNtPostQueryValueKey,
541 RegNtPostQueryMultipleValueKey,
542 RegNtPostKeyHandleClose,
543 RegNtPreCreateKeyEx,
544 RegNtPostCreateKeyEx,
545 RegNtPreOpenKeyEx,
546 RegNtPostOpenKeyEx,
547 RegNtPreFlushKey,
548 RegNtPostFlushKey,
549 RegNtPreLoadKey,
550 RegNtPostLoadKey,
551 RegNtPreUnLoadKey,
552 RegNtPostUnLoadKey,
553 RegNtPreQueryKeySecurity,
554 RegNtPostQueryKeySecurity,
555 RegNtPreSetKeySecurity,
556 RegNtPostSetKeySecurity,
557 RegNtCallbackObjectContextCleanup,
558 RegNtPreRestoreKey,
559 RegNtPostRestoreKey,
560 RegNtPreSaveKey,
561 RegNtPostSaveKey,
562 RegNtPreReplaceKey,
563 RegNtPostReplaceKey,
564 MaxRegNtNotifyClass
565 } REG_NOTIFY_CLASS, *PREG_NOTIFY_CLASS;
566
567 typedef NTSTATUS
568 (NTAPI *PEX_CALLBACK_FUNCTION)(
569 IN PVOID CallbackContext,
570 IN PVOID Argument1,
571 IN PVOID Argument2);
572
573 typedef struct _REG_DELETE_KEY_INFORMATION {
574 PVOID Object;
575 PVOID CallContext;
576 PVOID ObjectContext;
577 PVOID Reserved;
578 } REG_DELETE_KEY_INFORMATION, *PREG_DELETE_KEY_INFORMATION
579 #if (NTDDI_VERSION >= NTDDI_VISTA)
580 , REG_FLUSH_KEY_INFORMATION, *PREG_FLUSH_KEY_INFORMATION
581 #endif
582 ;
583
584 typedef struct _REG_SET_VALUE_KEY_INFORMATION {
585 PVOID Object;
586 PUNICODE_STRING ValueName;
587 ULONG TitleIndex;
588 ULONG Type;
589 PVOID Data;
590 ULONG DataSize;
591 PVOID CallContext;
592 PVOID ObjectContext;
593 PVOID Reserved;
594 } REG_SET_VALUE_KEY_INFORMATION, *PREG_SET_VALUE_KEY_INFORMATION;
595
596 typedef struct _REG_DELETE_VALUE_KEY_INFORMATION {
597 PVOID Object;
598 PUNICODE_STRING ValueName;
599 PVOID CallContext;
600 PVOID ObjectContext;
601 PVOID Reserved;
602 } REG_DELETE_VALUE_KEY_INFORMATION, *PREG_DELETE_VALUE_KEY_INFORMATION;
603
604 typedef struct _REG_SET_INFORMATION_KEY_INFORMATION {
605 PVOID Object;
606 KEY_SET_INFORMATION_CLASS KeySetInformationClass;
607 PVOID KeySetInformation;
608 ULONG KeySetInformationLength;
609 PVOID CallContext;
610 PVOID ObjectContext;
611 PVOID Reserved;
612 } REG_SET_INFORMATION_KEY_INFORMATION, *PREG_SET_INFORMATION_KEY_INFORMATION;
613
614 typedef struct _REG_ENUMERATE_KEY_INFORMATION {
615 PVOID Object;
616 ULONG Index;
617 KEY_INFORMATION_CLASS KeyInformationClass;
618 PVOID KeyInformation;
619 ULONG Length;
620 PULONG ResultLength;
621 PVOID CallContext;
622 PVOID ObjectContext;
623 PVOID Reserved;
624 } REG_ENUMERATE_KEY_INFORMATION, *PREG_ENUMERATE_KEY_INFORMATION;
625
626 typedef struct _REG_ENUMERATE_VALUE_KEY_INFORMATION {
627 PVOID Object;
628 ULONG Index;
629 KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass;
630 PVOID KeyValueInformation;
631 ULONG Length;
632 PULONG ResultLength;
633 PVOID CallContext;
634 PVOID ObjectContext;
635 PVOID Reserved;
636 } REG_ENUMERATE_VALUE_KEY_INFORMATION, *PREG_ENUMERATE_VALUE_KEY_INFORMATION;
637
638 typedef struct _REG_QUERY_KEY_INFORMATION {
639 PVOID Object;
640 KEY_INFORMATION_CLASS KeyInformationClass;
641 PVOID KeyInformation;
642 ULONG Length;
643 PULONG ResultLength;
644 PVOID CallContext;
645 PVOID ObjectContext;
646 PVOID Reserved;
647 } REG_QUERY_KEY_INFORMATION, *PREG_QUERY_KEY_INFORMATION;
648
649 typedef struct _REG_QUERY_VALUE_KEY_INFORMATION {
650 PVOID Object;
651 PUNICODE_STRING ValueName;
652 KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass;
653 PVOID KeyValueInformation;
654 ULONG Length;
655 PULONG ResultLength;
656 PVOID CallContext;
657 PVOID ObjectContext;
658 PVOID Reserved;
659 } REG_QUERY_VALUE_KEY_INFORMATION, *PREG_QUERY_VALUE_KEY_INFORMATION;
660
661 typedef struct _REG_QUERY_MULTIPLE_VALUE_KEY_INFORMATION {
662 PVOID Object;
663 PKEY_VALUE_ENTRY ValueEntries;
664 ULONG EntryCount;
665 PVOID ValueBuffer;
666 PULONG BufferLength;
667 PULONG RequiredBufferLength;
668 PVOID CallContext;
669 PVOID ObjectContext;
670 PVOID Reserved;
671 } REG_QUERY_MULTIPLE_VALUE_KEY_INFORMATION, *PREG_QUERY_MULTIPLE_VALUE_KEY_INFORMATION;
672
673 typedef struct _REG_PRE_CREATE_KEY_INFORMATION {
674 PUNICODE_STRING CompleteName;
675 } REG_PRE_CREATE_KEY_INFORMATION, REG_PRE_OPEN_KEY_INFORMATION,*PREG_PRE_CREATE_KEY_INFORMATION, *PREG_PRE_OPEN_KEY_INFORMATION;;
676
677 typedef struct _REG_POST_CREATE_KEY_INFORMATION {
678 PUNICODE_STRING CompleteName;
679 PVOID Object;
680 NTSTATUS Status;
681 } REG_POST_CREATE_KEY_INFORMATION,REG_POST_OPEN_KEY_INFORMATION, *PREG_POST_CREATE_KEY_INFORMATION, *PREG_POST_OPEN_KEY_INFORMATION;
682
683 typedef struct _REG_POST_OPERATION_INFORMATION {
684 PVOID Object;
685 NTSTATUS Status;
686 PVOID PreInformation;
687 NTSTATUS ReturnStatus;
688 PVOID CallContext;
689 PVOID ObjectContext;
690 PVOID Reserved;
691 } REG_POST_OPERATION_INFORMATION,*PREG_POST_OPERATION_INFORMATION;
692
693 typedef struct _REG_KEY_HANDLE_CLOSE_INFORMATION {
694 PVOID Object;
695 PVOID CallContext;
696 PVOID ObjectContext;
697 PVOID Reserved;
698 } REG_KEY_HANDLE_CLOSE_INFORMATION, *PREG_KEY_HANDLE_CLOSE_INFORMATION;
699
700 $endif
701
702