1 /******************************************************************************
2 * Configuration Manager Types *
3 ******************************************************************************/
6 /* Resource list definitions */
7 typedef int CM_RESOURCE_TYPE
;
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
22 /* KEY_VALUE_Xxx.Type */
25 #define REG_EXPAND_SZ 2
28 #define REG_DWORD_LITTLE_ENDIAN 4
29 #define REG_DWORD_BIG_ENDIAN 5
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
36 #define REG_QWORD_LITTLE_ENDIAN 11
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)
49 #define KEY_READ ((STANDARD_RIGHTS_READ |\
51 KEY_ENUMERATE_SUB_KEYS |\
56 #define KEY_WRITE ((STANDARD_RIGHTS_WRITE |\
62 #define KEY_EXECUTE ((KEY_READ) \
66 #define KEY_ALL_ACCESS ((STANDARD_RIGHTS_ALL |\
70 KEY_ENUMERATE_SUB_KEYS |\
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)
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 |\
92 #define REG_OPEN_LEGAL_OPTION \
93 (REG_OPTION_RESERVED |\
94 REG_OPTION_BACKUP_RESTORE |\
97 #define REG_STANDARD_FORMAT 1
98 #define REG_LATEST_FORMAT 2
99 #define REG_NO_COMPRESSION 4
101 /* Key creation/open disposition */
102 #define REG_CREATED_NEW_KEY (0x00000001L)
103 #define REG_OPENED_EXISTING_KEY (0x00000002L)
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)
119 #define REG_FORCE_UNLOAD 1
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)
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)
133 #include <pshpack4.h>
134 typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR
{
136 UCHAR ShareDisposition
;
140 PHYSICAL_ADDRESS Start
;
144 PHYSICAL_ADDRESS Start
;
148 #if defined(NT_PROCESSOR_GROUPS)
157 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
159 __GNU_EXTENSION
union {
161 #if defined(NT_PROCESSOR_GROUPS)
171 #if defined(NT_PROCESSOR_GROUPS)
184 PHYSICAL_ADDRESS Start
;
204 } DeviceSpecificData
;
205 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
207 PHYSICAL_ADDRESS Start
;
211 PHYSICAL_ADDRESS Start
;
215 PHYSICAL_ADDRESS Start
;
220 } CM_PARTIAL_RESOURCE_DESCRIPTOR
, *PCM_PARTIAL_RESOURCE_DESCRIPTOR
;
223 /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Type */
224 #define CmResourceTypeNull 0
225 #define CmResourceTypePort 1
226 #define CmResourceTypeInterrupt 2
227 #define CmResourceTypeMemory 3
228 #define CmResourceTypeDma 4
229 #define CmResourceTypeDeviceSpecific 5
230 #define CmResourceTypeBusNumber 6
231 #define CmResourceTypeMemoryLarge 7
232 #define CmResourceTypeNonArbitrated 128
233 #define CmResourceTypeConfigData 128
234 #define CmResourceTypeDevicePrivate 129
235 #define CmResourceTypePcCardConfig 130
236 #define CmResourceTypeMfCardConfig 131
238 /* CM_PARTIAL_RESOURCE_DESCRIPTOR.ShareDisposition */
239 typedef enum _CM_SHARE_DISPOSITION
{
240 CmResourceShareUndetermined
= 0,
241 CmResourceShareDeviceExclusive
,
242 CmResourceShareDriverExclusive
,
243 CmResourceShareShared
244 } CM_SHARE_DISPOSITION
;
246 /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypePort */
247 #define CM_RESOURCE_PORT_MEMORY 0x0000
248 #define CM_RESOURCE_PORT_IO 0x0001
249 #define CM_RESOURCE_PORT_10_BIT_DECODE 0x0004
250 #define CM_RESOURCE_PORT_12_BIT_DECODE 0x0008
251 #define CM_RESOURCE_PORT_16_BIT_DECODE 0x0010
252 #define CM_RESOURCE_PORT_POSITIVE_DECODE 0x0020
253 #define CM_RESOURCE_PORT_PASSIVE_DECODE 0x0040
254 #define CM_RESOURCE_PORT_WINDOW_DECODE 0x0080
255 #define CM_RESOURCE_PORT_BAR 0x0100
257 /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeInterrupt */
258 #define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE 0x0000
259 #define CM_RESOURCE_INTERRUPT_LATCHED 0x0001
260 #define CM_RESOURCE_INTERRUPT_MESSAGE 0x0002
261 #define CM_RESOURCE_INTERRUPT_POLICY_INCLUDED 0x0004
263 #define CM_RESOURCE_INTERRUPT_LEVEL_LATCHED_BITS 0x0001
265 #define CM_RESOURCE_INTERRUPT_MESSAGE_TOKEN ((ULONG)-2)
267 /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeMemory */
268 #define CM_RESOURCE_MEMORY_READ_WRITE 0x0000
269 #define CM_RESOURCE_MEMORY_READ_ONLY 0x0001
270 #define CM_RESOURCE_MEMORY_WRITE_ONLY 0x0002
271 #define CM_RESOURCE_MEMORY_WRITEABILITY_MASK 0x0003
272 #define CM_RESOURCE_MEMORY_PREFETCHABLE 0x0004
273 #define CM_RESOURCE_MEMORY_COMBINEDWRITE 0x0008
274 #define CM_RESOURCE_MEMORY_24 0x0010
275 #define CM_RESOURCE_MEMORY_CACHEABLE 0x0020
276 #define CM_RESOURCE_MEMORY_WINDOW_DECODE 0x0040
277 #define CM_RESOURCE_MEMORY_BAR 0x0080
278 #define CM_RESOURCE_MEMORY_COMPAT_FOR_INACCESSIBLE_RANGE 0x0100
280 #define CM_RESOURCE_MEMORY_LARGE 0x0E00
281 #define CM_RESOURCE_MEMORY_LARGE_40 0x0200
282 #define CM_RESOURCE_MEMORY_LARGE_48 0x0400
283 #define CM_RESOURCE_MEMORY_LARGE_64 0x0800
285 #define CM_RESOURCE_MEMORY_LARGE_40_MAXLEN 0x000000FFFFFFFF00
286 #define CM_RESOURCE_MEMORY_LARGE_48_MAXLEN 0x0000FFFFFFFF0000
287 #define CM_RESOURCE_MEMORY_LARGE_64_MAXLEN 0xFFFFFFFF00000000
289 /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeDma */
290 #define CM_RESOURCE_DMA_8 0x0000
291 #define CM_RESOURCE_DMA_16 0x0001
292 #define CM_RESOURCE_DMA_32 0x0002
293 #define CM_RESOURCE_DMA_8_AND_16 0x0004
294 #define CM_RESOURCE_DMA_BUS_MASTER 0x0008
295 #define CM_RESOURCE_DMA_TYPE_A 0x0010
296 #define CM_RESOURCE_DMA_TYPE_B 0x0020
297 #define CM_RESOURCE_DMA_TYPE_F 0x0040
299 typedef struct _DEVICE_FLAGS
{
307 } DEVICE_FLAGS
, *PDEVICE_FLAGS
;
309 typedef enum _INTERFACE_TYPE
{
310 InterfaceTypeUndefined
= -1,
329 } INTERFACE_TYPE
, *PINTERFACE_TYPE
;
331 typedef struct _CM_COMPONENT_INFORMATION
{
335 KAFFINITY AffinityMask
;
336 } CM_COMPONENT_INFORMATION
, *PCM_COMPONENT_INFORMATION
;
338 typedef struct _CM_ROM_BLOCK
{
341 } CM_ROM_BLOCK
, *PCM_ROM_BLOCK
;
343 typedef struct _CM_PARTIAL_RESOURCE_LIST
{
347 CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors
[1];
348 } CM_PARTIAL_RESOURCE_LIST
, *PCM_PARTIAL_RESOURCE_LIST
;
350 typedef struct _CM_FULL_RESOURCE_DESCRIPTOR
{
351 INTERFACE_TYPE InterfaceType
;
353 CM_PARTIAL_RESOURCE_LIST PartialResourceList
;
354 } CM_FULL_RESOURCE_DESCRIPTOR
, *PCM_FULL_RESOURCE_DESCRIPTOR
;
356 typedef struct _CM_RESOURCE_LIST
{
358 CM_FULL_RESOURCE_DESCRIPTOR List
[1];
359 } CM_RESOURCE_LIST
, *PCM_RESOURCE_LIST
;
361 typedef struct _PNP_BUS_INFORMATION
{
363 INTERFACE_TYPE LegacyBusType
;
365 } PNP_BUS_INFORMATION
, *PPNP_BUS_INFORMATION
;
367 #include <pshpack1.h>
369 typedef struct _CM_INT13_DRIVE_PARAMETER
{
372 USHORT SectorsPerTrack
;
375 } CM_INT13_DRIVE_PARAMETER
, *PCM_INT13_DRIVE_PARAMETER
;
377 typedef struct _CM_MCA_POS_DATA
{
383 } CM_MCA_POS_DATA
, *PCM_MCA_POS_DATA
;
385 typedef struct _CM_PNP_BIOS_DEVICE_NODE
{
390 USHORT DeviceAttributes
;
391 } CM_PNP_BIOS_DEVICE_NODE
,*PCM_PNP_BIOS_DEVICE_NODE
;
393 typedef struct _CM_PNP_BIOS_INSTALLATION_CHECK
{
399 ULONG EventFlagAddress
;
400 USHORT RealModeEntryOffset
;
401 USHORT RealModeEntrySegment
;
402 USHORT ProtectedModeEntryOffset
;
403 ULONG ProtectedModeCodeBaseAddress
;
405 USHORT RealModeDataBaseAddress
;
406 ULONG ProtectedModeDataBaseAddress
;
407 } CM_PNP_BIOS_INSTALLATION_CHECK
, *PCM_PNP_BIOS_INSTALLATION_CHECK
;
411 typedef struct _CM_DISK_GEOMETRY_DEVICE_DATA
{
412 ULONG BytesPerSector
;
413 ULONG NumberOfCylinders
;
414 ULONG SectorsPerTrack
;
416 } CM_DISK_GEOMETRY_DEVICE_DATA
, *PCM_DISK_GEOMETRY_DEVICE_DATA
;
418 typedef struct _CM_KEYBOARD_DEVICE_DATA
{
423 USHORT KeyboardFlags
;
424 } CM_KEYBOARD_DEVICE_DATA
, *PCM_KEYBOARD_DEVICE_DATA
;
426 typedef struct _CM_SCSI_DEVICE_DATA
{
429 UCHAR HostIdentifier
;
430 } CM_SCSI_DEVICE_DATA
, *PCM_SCSI_DEVICE_DATA
;
432 typedef struct _CM_VIDEO_DEVICE_DATA
{
436 } CM_VIDEO_DEVICE_DATA
, *PCM_VIDEO_DEVICE_DATA
;
438 typedef struct _CM_SONIC_DEVICE_DATA
{
441 USHORT DataConfigurationRegister
;
442 UCHAR EthernetAddress
[8];
443 } CM_SONIC_DEVICE_DATA
, *PCM_SONIC_DEVICE_DATA
;
445 typedef struct _CM_SERIAL_DEVICE_DATA
{
449 } CM_SERIAL_DEVICE_DATA
, *PCM_SERIAL_DEVICE_DATA
;
451 typedef struct _CM_MONITOR_DEVICE_DATA
{
454 USHORT HorizontalScreenSize
;
455 USHORT VerticalScreenSize
;
456 USHORT HorizontalResolution
;
457 USHORT VerticalResolution
;
458 USHORT HorizontalDisplayTimeLow
;
459 USHORT HorizontalDisplayTime
;
460 USHORT HorizontalDisplayTimeHigh
;
461 USHORT HorizontalBackPorchLow
;
462 USHORT HorizontalBackPorch
;
463 USHORT HorizontalBackPorchHigh
;
464 USHORT HorizontalFrontPorchLow
;
465 USHORT HorizontalFrontPorch
;
466 USHORT HorizontalFrontPorchHigh
;
467 USHORT HorizontalSyncLow
;
468 USHORT HorizontalSync
;
469 USHORT HorizontalSyncHigh
;
470 USHORT VerticalBackPorchLow
;
471 USHORT VerticalBackPorch
;
472 USHORT VerticalBackPorchHigh
;
473 USHORT VerticalFrontPorchLow
;
474 USHORT VerticalFrontPorch
;
475 USHORT VerticalFrontPorchHigh
;
476 USHORT VerticalSyncLow
;
478 USHORT VerticalSyncHigh
;
479 } CM_MONITOR_DEVICE_DATA
, *PCM_MONITOR_DEVICE_DATA
;
481 typedef struct _CM_FLOPPY_DEVICE_DATA
{
487 UCHAR StepRateHeadUnloadTime
;
490 UCHAR SectorLengthCode
;
491 UCHAR SectorPerTrack
;
492 UCHAR ReadWriteGapLength
;
493 UCHAR DataTransferLength
;
494 UCHAR FormatGapLength
;
495 UCHAR FormatFillCharacter
;
496 UCHAR HeadSettleTime
;
497 UCHAR MotorSettleTime
;
498 UCHAR MaximumTrackValue
;
499 UCHAR DataTransferRate
;
500 } CM_FLOPPY_DEVICE_DATA
, *PCM_FLOPPY_DEVICE_DATA
;
502 typedef enum _KEY_INFORMATION_CLASS
{
507 KeyCachedInformation
,
509 KeyVirtualizationInformation
,
510 KeyHandleTagsInformation
,
512 } KEY_INFORMATION_CLASS
;
514 typedef struct _KEY_BASIC_INFORMATION
{
515 LARGE_INTEGER LastWriteTime
;
519 } KEY_BASIC_INFORMATION
, *PKEY_BASIC_INFORMATION
;
521 typedef struct _KEY_CONTROL_FLAGS_INFORMATION
{
523 } KEY_CONTROL_FLAGS_INFORMATION
, *PKEY_CONTROL_FLAGS_INFORMATION
;
525 typedef struct _KEY_FULL_INFORMATION
{
526 LARGE_INTEGER LastWriteTime
;
534 ULONG MaxValueNameLen
;
535 ULONG MaxValueDataLen
;
537 } KEY_FULL_INFORMATION
, *PKEY_FULL_INFORMATION
;
539 typedef struct _KEY_HANDLE_TAGS_INFORMATION
{
541 } KEY_HANDLE_TAGS_INFORMATION
, *PKEY_HANDLE_TAGS_INFORMATION
;
543 typedef struct _KEY_NODE_INFORMATION
{
544 LARGE_INTEGER LastWriteTime
;
550 } KEY_NODE_INFORMATION
, *PKEY_NODE_INFORMATION
;
552 typedef enum _KEY_SET_INFORMATION_CLASS
{
553 KeyWriteTimeInformation
,
554 KeyWow64FlagsInformation
,
555 KeyControlFlagsInformation
,
556 KeySetVirtualizationInformation
,
557 KeySetDebugInformation
,
558 KeySetHandleTagsInformation
,
560 } KEY_SET_INFORMATION_CLASS
;
562 typedef struct _KEY_SET_VIRTUALIZATION_INFORMATION
{
563 ULONG VirtualTarget
:1;
564 ULONG VirtualStore
:1;
565 ULONG VirtualSource
:1;
567 } KEY_SET_VIRTUALIZATION_INFORMATION
, *PKEY_SET_VIRTUALIZATION_INFORMATION
;
569 typedef struct _KEY_VALUE_BASIC_INFORMATION
{
574 } KEY_VALUE_BASIC_INFORMATION
, *PKEY_VALUE_BASIC_INFORMATION
;
576 typedef struct _KEY_VALUE_FULL_INFORMATION
{
583 } KEY_VALUE_FULL_INFORMATION
, *PKEY_VALUE_FULL_INFORMATION
;
585 typedef struct _KEY_VALUE_PARTIAL_INFORMATION
{
590 } KEY_VALUE_PARTIAL_INFORMATION
, *PKEY_VALUE_PARTIAL_INFORMATION
;
592 typedef struct _KEY_VALUE_PARTIAL_INFORMATION_ALIGN64
{
596 } KEY_VALUE_PARTIAL_INFORMATION_ALIGN64
, *PKEY_VALUE_PARTIAL_INFORMATION_ALIGN64
;
598 typedef struct _KEY_VALUE_ENTRY
{
599 PUNICODE_STRING ValueName
;
603 } KEY_VALUE_ENTRY
, *PKEY_VALUE_ENTRY
;
605 typedef enum _KEY_VALUE_INFORMATION_CLASS
{
606 KeyValueBasicInformation
,
607 KeyValueFullInformation
,
608 KeyValuePartialInformation
,
609 KeyValueFullInformationAlign64
,
610 KeyValuePartialInformationAlign64
611 } KEY_VALUE_INFORMATION_CLASS
;
613 typedef struct _KEY_WOW64_FLAGS_INFORMATION
{
615 } KEY_WOW64_FLAGS_INFORMATION
, *PKEY_WOW64_FLAGS_INFORMATION
;
617 typedef struct _KEY_WRITE_TIME_INFORMATION
{
618 LARGE_INTEGER LastWriteTime
;
619 } KEY_WRITE_TIME_INFORMATION
, *PKEY_WRITE_TIME_INFORMATION
;
621 typedef enum _REG_NOTIFY_CLASS
{
623 RegNtPreDeleteKey
= RegNtDeleteKey
,
625 RegNtPreSetValueKey
= RegNtSetValueKey
,
627 RegNtPreDeleteValueKey
= RegNtDeleteValueKey
,
628 RegNtSetInformationKey
,
629 RegNtPreSetInformationKey
= RegNtSetInformationKey
,
631 RegNtPreRenameKey
= RegNtRenameKey
,
633 RegNtPreEnumerateKey
= RegNtEnumerateKey
,
634 RegNtEnumerateValueKey
,
635 RegNtPreEnumerateValueKey
= RegNtEnumerateValueKey
,
637 RegNtPreQueryKey
= RegNtQueryKey
,
639 RegNtPreQueryValueKey
= RegNtQueryValueKey
,
640 RegNtQueryMultipleValueKey
,
641 RegNtPreQueryMultipleValueKey
= RegNtQueryMultipleValueKey
,
647 RegNtPreKeyHandleClose
= RegNtKeyHandleClose
,
649 RegNtPostSetValueKey
,
650 RegNtPostDeleteValueKey
,
651 RegNtPostSetInformationKey
,
653 RegNtPostEnumerateKey
,
654 RegNtPostEnumerateValueKey
,
656 RegNtPostQueryValueKey
,
657 RegNtPostQueryMultipleValueKey
,
658 RegNtPostKeyHandleClose
,
660 RegNtPostCreateKeyEx
,
669 RegNtPreQueryKeySecurity
,
670 RegNtPostQueryKeySecurity
,
671 RegNtPreSetKeySecurity
,
672 RegNtPostSetKeySecurity
,
673 RegNtCallbackObjectContextCleanup
,
681 } REG_NOTIFY_CLASS
, *PREG_NOTIFY_CLASS
;
684 (NTAPI EX_CALLBACK_FUNCTION
)(
685 IN PVOID CallbackContext
,
688 typedef EX_CALLBACK_FUNCTION
*PEX_CALLBACK_FUNCTION
;
690 typedef struct _REG_DELETE_KEY_INFORMATION
{
695 } REG_DELETE_KEY_INFORMATION
, *PREG_DELETE_KEY_INFORMATION
696 #if (NTDDI_VERSION >= NTDDI_VISTA)
697 , REG_FLUSH_KEY_INFORMATION
, *PREG_FLUSH_KEY_INFORMATION
701 typedef struct _REG_SET_VALUE_KEY_INFORMATION
{
703 PUNICODE_STRING ValueName
;
711 } REG_SET_VALUE_KEY_INFORMATION
, *PREG_SET_VALUE_KEY_INFORMATION
;
713 typedef struct _REG_DELETE_VALUE_KEY_INFORMATION
{
715 PUNICODE_STRING ValueName
;
719 } REG_DELETE_VALUE_KEY_INFORMATION
, *PREG_DELETE_VALUE_KEY_INFORMATION
;
721 typedef struct _REG_SET_INFORMATION_KEY_INFORMATION
{
723 KEY_SET_INFORMATION_CLASS KeySetInformationClass
;
724 PVOID KeySetInformation
;
725 ULONG KeySetInformationLength
;
729 } REG_SET_INFORMATION_KEY_INFORMATION
, *PREG_SET_INFORMATION_KEY_INFORMATION
;
731 typedef struct _REG_ENUMERATE_KEY_INFORMATION
{
734 KEY_INFORMATION_CLASS KeyInformationClass
;
735 PVOID KeyInformation
;
741 } REG_ENUMERATE_KEY_INFORMATION
, *PREG_ENUMERATE_KEY_INFORMATION
;
743 typedef struct _REG_ENUMERATE_VALUE_KEY_INFORMATION
{
746 KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass
;
747 PVOID KeyValueInformation
;
753 } REG_ENUMERATE_VALUE_KEY_INFORMATION
, *PREG_ENUMERATE_VALUE_KEY_INFORMATION
;
755 typedef struct _REG_QUERY_KEY_INFORMATION
{
757 KEY_INFORMATION_CLASS KeyInformationClass
;
758 PVOID KeyInformation
;
764 } REG_QUERY_KEY_INFORMATION
, *PREG_QUERY_KEY_INFORMATION
;
766 typedef struct _REG_QUERY_VALUE_KEY_INFORMATION
{
768 PUNICODE_STRING ValueName
;
769 KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass
;
770 PVOID KeyValueInformation
;
776 } REG_QUERY_VALUE_KEY_INFORMATION
, *PREG_QUERY_VALUE_KEY_INFORMATION
;
778 typedef struct _REG_QUERY_MULTIPLE_VALUE_KEY_INFORMATION
{
780 PKEY_VALUE_ENTRY ValueEntries
;
784 PULONG RequiredBufferLength
;
788 } REG_QUERY_MULTIPLE_VALUE_KEY_INFORMATION
, *PREG_QUERY_MULTIPLE_VALUE_KEY_INFORMATION
;
790 typedef struct _REG_RENAME_KEY_INFORMATION
{
792 PUNICODE_STRING NewName
;
796 } REG_RENAME_KEY_INFORMATION
, *PREG_RENAME_KEY_INFORMATION
;
798 typedef struct _REG_CREATE_KEY_INFORMATION
{
799 PUNICODE_STRING CompleteName
;
803 PUNICODE_STRING Class
;
804 PVOID SecurityDescriptor
;
805 PVOID SecurityQualityOfService
;
806 ACCESS_MASK DesiredAccess
;
807 ACCESS_MASK GrantedAccess
;
811 PVOID RootObjectContext
;
814 } REG_CREATE_KEY_INFORMATION
, REG_OPEN_KEY_INFORMATION
,*PREG_CREATE_KEY_INFORMATION
, *PREG_OPEN_KEY_INFORMATION
;
816 typedef struct _REG_CREATE_KEY_INFORMATION_V1
{
817 PUNICODE_STRING CompleteName
;
821 PUNICODE_STRING Class
;
822 PVOID SecurityDescriptor
;
823 PVOID SecurityQualityOfService
;
824 ACCESS_MASK DesiredAccess
;
825 ACCESS_MASK GrantedAccess
;
829 PVOID RootObjectContext
;
832 PUNICODE_STRING RemainingName
;
835 KPROCESSOR_MODE CheckAccessMode
;
836 } REG_CREATE_KEY_INFORMATION_V1
, REG_OPEN_KEY_INFORMATION_V1
,*PREG_CREATE_KEY_INFORMATION_V1
, *PREG_OPEN_KEY_INFORMATION_V1
;
838 typedef struct _REG_PRE_CREATE_KEY_INFORMATION
{
839 PUNICODE_STRING CompleteName
;
840 } REG_PRE_CREATE_KEY_INFORMATION
, REG_PRE_OPEN_KEY_INFORMATION
,*PREG_PRE_CREATE_KEY_INFORMATION
, *PREG_PRE_OPEN_KEY_INFORMATION
;;
842 typedef struct _REG_POST_CREATE_KEY_INFORMATION
{
843 PUNICODE_STRING CompleteName
;
846 } REG_POST_CREATE_KEY_INFORMATION
,REG_POST_OPEN_KEY_INFORMATION
, *PREG_POST_CREATE_KEY_INFORMATION
, *PREG_POST_OPEN_KEY_INFORMATION
;
848 typedef struct _REG_POST_OPERATION_INFORMATION
{
851 PVOID PreInformation
;
852 NTSTATUS ReturnStatus
;
856 } REG_POST_OPERATION_INFORMATION
,*PREG_POST_OPERATION_INFORMATION
;
858 typedef struct _REG_KEY_HANDLE_CLOSE_INFORMATION
{
863 } REG_KEY_HANDLE_CLOSE_INFORMATION
, *PREG_KEY_HANDLE_CLOSE_INFORMATION
;
865 #if (NTDDI_VERSION >= NTDDI_VISTA)
867 typedef struct _REG_LOAD_KEY_INFORMATION
{
869 PUNICODE_STRING KeyName
;
870 PUNICODE_STRING SourceFile
;
872 PVOID TrustClassObject
;
874 ACCESS_MASK DesiredAccess
;
879 } REG_LOAD_KEY_INFORMATION
, *PREG_LOAD_KEY_INFORMATION
;
881 typedef struct _REG_UNLOAD_KEY_INFORMATION
{
887 } REG_UNLOAD_KEY_INFORMATION
, *PREG_UNLOAD_KEY_INFORMATION
;
889 typedef struct _REG_CALLBACK_CONTEXT_CLEANUP_INFORMATION
{
893 } REG_CALLBACK_CONTEXT_CLEANUP_INFORMATION
, *PREG_CALLBACK_CONTEXT_CLEANUP_INFORMATION
;
895 typedef struct _REG_QUERY_KEY_SECURITY_INFORMATION
{
897 PSECURITY_INFORMATION SecurityInformation
;
898 PSECURITY_DESCRIPTOR SecurityDescriptor
;
903 } REG_QUERY_KEY_SECURITY_INFORMATION
, *PREG_QUERY_KEY_SECURITY_INFORMATION
;
905 typedef struct _REG_SET_KEY_SECURITY_INFORMATION
{
907 PSECURITY_INFORMATION SecurityInformation
;
908 PSECURITY_DESCRIPTOR SecurityDescriptor
;
912 } REG_SET_KEY_SECURITY_INFORMATION
, *PREG_SET_KEY_SECURITY_INFORMATION
;
914 typedef struct _REG_RESTORE_KEY_INFORMATION
{
921 } REG_RESTORE_KEY_INFORMATION
, *PREG_RESTORE_KEY_INFORMATION
;
923 typedef struct _REG_SAVE_KEY_INFORMATION
{
930 } REG_SAVE_KEY_INFORMATION
, *PREG_SAVE_KEY_INFORMATION
;
932 typedef struct _REG_REPLACE_KEY_INFORMATION
{
934 PUNICODE_STRING OldFileName
;
935 PUNICODE_STRING NewFileName
;
939 } REG_REPLACE_KEY_INFORMATION
, *PREG_REPLACE_KEY_INFORMATION
;
941 #endif /* NTDDI_VERSION >= NTDDI_VISTA */
943 #define SERVICE_KERNEL_DRIVER 0x00000001
944 #define SERVICE_FILE_SYSTEM_DRIVER 0x00000002
945 #define SERVICE_ADAPTER 0x00000004
946 #define SERVICE_RECOGNIZER_DRIVER 0x00000008
948 #define SERVICE_DRIVER (SERVICE_KERNEL_DRIVER | \
949 SERVICE_FILE_SYSTEM_DRIVER | \
950 SERVICE_RECOGNIZER_DRIVER)
952 #define SERVICE_WIN32_OWN_PROCESS 0x00000010
953 #define SERVICE_WIN32_SHARE_PROCESS 0x00000020
954 #define SERVICE_WIN32 (SERVICE_WIN32_OWN_PROCESS | \
955 SERVICE_WIN32_SHARE_PROCESS)
957 #define SERVICE_INTERACTIVE_PROCESS 0x00000100
959 #define SERVICE_TYPE_ALL (SERVICE_WIN32 | \
962 SERVICE_INTERACTIVE_PROCESS)
964 /* Service Start Types */
965 #define SERVICE_BOOT_START 0x00000000
966 #define SERVICE_SYSTEM_START 0x00000001
967 #define SERVICE_AUTO_START 0x00000002
968 #define SERVICE_DEMAND_START 0x00000003
969 #define SERVICE_DISABLED 0x00000004
971 #define SERVICE_ERROR_IGNORE 0x00000000
972 #define SERVICE_ERROR_NORMAL 0x00000001
973 #define SERVICE_ERROR_SEVERE 0x00000002
974 #define SERVICE_ERROR_CRITICAL 0x00000003
976 typedef enum _CM_SERVICE_NODE_TYPE
{
977 DriverType
= SERVICE_KERNEL_DRIVER
,
978 FileSystemType
= SERVICE_FILE_SYSTEM_DRIVER
,
979 Win32ServiceOwnProcess
= SERVICE_WIN32_OWN_PROCESS
,
980 Win32ServiceShareProcess
= SERVICE_WIN32_SHARE_PROCESS
,
981 AdapterType
= SERVICE_ADAPTER
,
982 RecognizerType
= SERVICE_RECOGNIZER_DRIVER
985 typedef enum _CM_SERVICE_LOAD_TYPE
{
986 BootLoad
= SERVICE_BOOT_START
,
987 SystemLoad
= SERVICE_SYSTEM_START
,
988 AutoLoad
= SERVICE_AUTO_START
,
989 DemandLoad
= SERVICE_DEMAND_START
,
990 DisableLoad
= SERVICE_DISABLED
993 typedef enum _CM_ERROR_CONTROL_TYPE
{
994 IgnoreError
= SERVICE_ERROR_IGNORE
,
995 NormalError
= SERVICE_ERROR_NORMAL
,
996 SevereError
= SERVICE_ERROR_SEVERE
,
997 CriticalError
= SERVICE_ERROR_CRITICAL
998 } SERVICE_ERROR_TYPE
;
1000 #define CM_SERVICE_NETWORK_BOOT_LOAD 0x00000001
1001 #define CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD 0x00000002
1002 #define CM_SERVICE_USB_DISK_BOOT_LOAD 0x00000004
1004 #define CM_SERVICE_VALID_PROMOTION_MASK (CM_SERVICE_NETWORK_BOOT_LOAD | \
1005 CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD | \
1006 CM_SERVICE_USB_DISK_BOOT_LOAD)
1010 typedef struct _KEY_NAME_INFORMATION
{
1013 } KEY_NAME_INFORMATION
, *PKEY_NAME_INFORMATION
;
1015 typedef struct _KEY_CACHED_INFORMATION
{
1016 LARGE_INTEGER LastWriteTime
;
1021 ULONG MaxValueNameLen
;
1022 ULONG MaxValueDataLen
;
1024 } KEY_CACHED_INFORMATION
, *PKEY_CACHED_INFORMATION
;
1026 typedef struct _KEY_VIRTUALIZATION_INFORMATION
{
1027 ULONG VirtualizationCandidate
:1;
1028 ULONG VirtualizationEnabled
:1;
1029 ULONG VirtualTarget
:1;
1030 ULONG VirtualStore
:1;
1031 ULONG VirtualSource
:1;
1033 } KEY_VIRTUALIZATION_INFORMATION
, *PKEY_VIRTUALIZATION_INFORMATION
;
1035 #define CmResourceTypeMaximum 8
1037 typedef struct _CM_PCCARD_DEVICE_DATA
{
1043 ULONG LegacyBaseAddress
;
1045 } CM_PCCARD_DEVICE_DATA
, *PCM_PCCARD_DEVICE_DATA
;