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