Something went wrong. Try again.
Reactos
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058/****************************************************************************** * Configuration Manager Types * ******************************************************************************/
$if (_WDMDDK_)/* Resource list definitions */typedef int CM_RESOURCE_TYPE;
#define CmResourceTypeNull 0#define CmResourceTypePort 1#define CmResourceTypeInterrupt 2#define CmResourceTypeMemory 3#define CmResourceTypeDma 4#define CmResourceTypeDeviceSpecific 5#define CmResourceTypeBusNumber 6#define CmResourceTypeNonArbitrated 128#define CmResourceTypeConfigData 128#define CmResourceTypeDevicePrivate 129#define CmResourceTypePcCardConfig 130#define CmResourceTypeMfCardConfig 131
/* KEY_VALUE_Xxx.Type */#define REG_NONE 0#define REG_SZ 1#define REG_EXPAND_SZ 2#define REG_BINARY 3#define REG_DWORD 4#define REG_DWORD_LITTLE_ENDIAN 4#define REG_DWORD_BIG_ENDIAN 5#define REG_LINK 6#define REG_MULTI_SZ 7#define REG_RESOURCE_LIST 8#define REG_FULL_RESOURCE_DESCRIPTOR 9#define REG_RESOURCE_REQUIREMENTS_LIST 10#define REG_QWORD 11#define REG_QWORD_LITTLE_ENDIAN 11
/* Registry Access Rights */#define KEY_QUERY_VALUE (0x0001)#define KEY_SET_VALUE (0x0002)#define KEY_CREATE_SUB_KEY (0x0004)#define KEY_ENUMERATE_SUB_KEYS (0x0008)#define KEY_NOTIFY (0x0010)#define KEY_CREATE_LINK (0x0020)#define KEY_WOW64_32KEY (0x0200)#define KEY_WOW64_64KEY (0x0100)#define KEY_WOW64_RES (0x0300)
#define KEY_READ ((STANDARD_RIGHTS_READ |\ KEY_QUERY_VALUE |\ KEY_ENUMERATE_SUB_KEYS |\ KEY_NOTIFY) \ & \ (~SYNCHRONIZE))
#define KEY_WRITE ((STANDARD_RIGHTS_WRITE |\ KEY_SET_VALUE |\ KEY_CREATE_SUB_KEY) \ & \ (~SYNCHRONIZE))
#define KEY_EXECUTE ((KEY_READ) \ & \ (~SYNCHRONIZE))
#define KEY_ALL_ACCESS ((STANDARD_RIGHTS_ALL |\ KEY_QUERY_VALUE |\ KEY_SET_VALUE |\ KEY_CREATE_SUB_KEY |\ KEY_ENUMERATE_SUB_KEYS |\ KEY_NOTIFY |\ KEY_CREATE_LINK) \ & \ (~SYNCHRONIZE))
/* Registry Open/Create Options */#define REG_OPTION_RESERVED (0x00000000L)#define REG_OPTION_NON_VOLATILE (0x00000000L)#define REG_OPTION_VOLATILE (0x00000001L)#define REG_OPTION_CREATE_LINK (0x00000002L)#define REG_OPTION_BACKUP_RESTORE (0x00000004L)#define REG_OPTION_OPEN_LINK (0x00000008L)
#define REG_LEGAL_OPTION \ (REG_OPTION_RESERVED |\ REG_OPTION_NON_VOLATILE |\ REG_OPTION_VOLATILE |\ REG_OPTION_CREATE_LINK |\ REG_OPTION_BACKUP_RESTORE |\ REG_OPTION_OPEN_LINK)
#define REG_OPEN_LEGAL_OPTION \ (REG_OPTION_RESERVED |\ REG_OPTION_BACKUP_RESTORE |\ REG_OPTION_OPEN_LINK)
#define REG_STANDARD_FORMAT 1#define REG_LATEST_FORMAT 2#define REG_NO_COMPRESSION 4
/* Key creation/open disposition */#define REG_CREATED_NEW_KEY (0x00000001L)#define REG_OPENED_EXISTING_KEY (0x00000002L)
/* Key restore & hive load flags */#define REG_WHOLE_HIVE_VOLATILE (0x00000001L)#define REG_REFRESH_HIVE (0x00000002L)#define REG_NO_LAZY_FLUSH (0x00000004L)#define REG_FORCE_RESTORE (0x00000008L)#define REG_APP_HIVE (0x00000010L)#define REG_PROCESS_PRIVATE (0x00000020L)#define REG_START_JOURNAL (0x00000040L)#define REG_HIVE_EXACT_FILE_GROWTH (0x00000080L)#define REG_HIVE_NO_RM (0x00000100L)#define REG_HIVE_SINGLE_LOG (0x00000200L)#define REG_BOOT_HIVE (0x00000400L)
/* Unload Flags */#define REG_FORCE_UNLOAD 1
/* Notify Filter Values */#define REG_NOTIFY_CHANGE_NAME (0x00000001L)#define REG_NOTIFY_CHANGE_ATTRIBUTES (0x00000002L)#define REG_NOTIFY_CHANGE_LAST_SET (0x00000004L)#define REG_NOTIFY_CHANGE_SECURITY (0x00000008L)
#define REG_LEGAL_CHANGE_FILTER \ (REG_NOTIFY_CHANGE_NAME |\ REG_NOTIFY_CHANGE_ATTRIBUTES |\ REG_NOTIFY_CHANGE_LAST_SET |\ REG_NOTIFY_CHANGE_SECURITY)
#include <pshpack4.h>typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR { UCHAR Type; UCHAR ShareDisposition; USHORT Flags; union { struct { PHYSICAL_ADDRESS Start; ULONG Length; } Generic; struct { PHYSICAL_ADDRESS Start; ULONG Length; } Port; struct {#if defined(NT_PROCESSOR_GROUPS) USHORT Level; USHORT Group;#else ULONG Level;#endif ULONG Vector; KAFFINITY Affinity; } Interrupt;#if (NTDDI_VERSION >= NTDDI_LONGHORN) struct { _ANONYMOUS_UNION union { struct {#if defined(NT_PROCESSOR_GROUPS) USHORT Group;#else USHORT Reserved;#endif USHORT MessageCount; ULONG Vector; KAFFINITY Affinity; } Raw; struct {#if defined(NT_PROCESSOR_GROUPS) USHORT Level; USHORT Group;#else ULONG Level;#endif ULONG Vector; KAFFINITY Affinity; } Translated; } DUMMYUNIONNAME; } MessageInterrupt;#endif struct { PHYSICAL_ADDRESS Start; ULONG Length; } Memory; struct { ULONG Channel; ULONG Port; ULONG Reserved1; } Dma; struct { ULONG Data[3]; } DevicePrivate; struct { ULONG Start; ULONG Length; ULONG Reserved; } BusNumber; struct { ULONG DataSize; ULONG Reserved1; ULONG Reserved2; } DeviceSpecificData;#if (NTDDI_VERSION >= NTDDI_LONGHORN) struct { PHYSICAL_ADDRESS Start; ULONG Length40; } Memory40; struct { PHYSICAL_ADDRESS Start; ULONG Length48; } Memory48; struct { PHYSICAL_ADDRESS Start; ULONG Length64; } Memory64;#endif } u;} CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR;#include <poppack.h>
/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Type */#define CmResourceTypeNull 0#define CmResourceTypePort 1#define CmResourceTypeInterrupt 2#define CmResourceTypeMemory 3#define CmResourceTypeDma 4#define CmResourceTypeDeviceSpecific 5#define CmResourceTypeBusNumber 6#define CmResourceTypeMemoryLarge 7#define CmResourceTypeNonArbitrated 128#define CmResourceTypeConfigData 128#define CmResourceTypeDevicePrivate 129#define CmResourceTypePcCardConfig 130#define CmResourceTypeMfCardConfig 131
/* CM_PARTIAL_RESOURCE_DESCRIPTOR.ShareDisposition */typedef enum _CM_SHARE_DISPOSITION { CmResourceShareUndetermined = 0, CmResourceShareDeviceExclusive, CmResourceShareDriverExclusive, CmResourceShareShared} CM_SHARE_DISPOSITION;
/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypePort */#define CM_RESOURCE_PORT_MEMORY 0x0000#define CM_RESOURCE_PORT_IO 0x0001#define CM_RESOURCE_PORT_10_BIT_DECODE 0x0004#define CM_RESOURCE_PORT_12_BIT_DECODE 0x0008#define CM_RESOURCE_PORT_16_BIT_DECODE 0x0010#define CM_RESOURCE_PORT_POSITIVE_DECODE 0x0020#define CM_RESOURCE_PORT_PASSIVE_DECODE 0x0040#define CM_RESOURCE_PORT_WINDOW_DECODE 0x0080#define CM_RESOURCE_PORT_BAR 0x0100
/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeInterrupt */#define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE 0x0000#define CM_RESOURCE_INTERRUPT_LATCHED 0x0001#define CM_RESOURCE_INTERRUPT_MESSAGE 0x0002#define CM_RESOURCE_INTERRUPT_POLICY_INCLUDED 0x0004#define CM_RESOURCE_INTERRUPT_SECONDARY_INTERRUPT 0x0010#define CM_RESOURCE_INTERRUPT_WAKE_HINT 0x0020
#define CM_RESOURCE_INTERRUPT_LEVEL_LATCHED_BITS 0x0001
#define CM_RESOURCE_INTERRUPT_MESSAGE_TOKEN ((ULONG)-2)
/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeMemory */#define CM_RESOURCE_MEMORY_READ_WRITE 0x0000#define CM_RESOURCE_MEMORY_READ_ONLY 0x0001#define CM_RESOURCE_MEMORY_WRITE_ONLY 0x0002#define CM_RESOURCE_MEMORY_WRITEABILITY_MASK 0x0003#define CM_RESOURCE_MEMORY_PREFETCHABLE 0x0004#define CM_RESOURCE_MEMORY_COMBINEDWRITE 0x0008#define CM_RESOURCE_MEMORY_24 0x0010#define CM_RESOURCE_MEMORY_CACHEABLE 0x0020#define CM_RESOURCE_MEMORY_WINDOW_DECODE 0x0040#define CM_RESOURCE_MEMORY_BAR 0x0080#define CM_RESOURCE_MEMORY_COMPAT_FOR_INACCESSIBLE_RANGE 0x0100
#define CM_RESOURCE_MEMORY_LARGE 0x0E00#define CM_RESOURCE_MEMORY_LARGE_40 0x0200#define CM_RESOURCE_MEMORY_LARGE_48 0x0400#define CM_RESOURCE_MEMORY_LARGE_64 0x0800
#define CM_RESOURCE_MEMORY_LARGE_40_MAXLEN 0x000000FFFFFFFF00#define CM_RESOURCE_MEMORY_LARGE_48_MAXLEN 0x0000FFFFFFFF0000#define CM_RESOURCE_MEMORY_LARGE_64_MAXLEN 0xFFFFFFFF00000000
/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeDma */#define CM_RESOURCE_DMA_8 0x0000#define CM_RESOURCE_DMA_16 0x0001#define CM_RESOURCE_DMA_32 0x0002#define CM_RESOURCE_DMA_8_AND_16 0x0004#define CM_RESOURCE_DMA_BUS_MASTER 0x0008#define CM_RESOURCE_DMA_TYPE_A 0x0010#define CM_RESOURCE_DMA_TYPE_B 0x0020#define CM_RESOURCE_DMA_TYPE_F 0x0040
typedef struct _DEVICE_FLAGS { ULONG Failed:1; ULONG ReadOnly:1; ULONG Removable:1; ULONG ConsoleIn:1; ULONG ConsoleOut:1; ULONG Input:1; ULONG Output:1;} DEVICE_FLAGS, *PDEVICE_FLAGS;
typedef enum _INTERFACE_TYPE { InterfaceTypeUndefined = -1, Internal, Isa, Eisa, MicroChannel, TurboChannel, PCIBus, VMEBus, NuBus, PCMCIABus, CBus, MPIBus, MPSABus, ProcessorInternal, InternalPowerBus, PNPISABus, PNPBus, Vmcs, MaximumInterfaceType} INTERFACE_TYPE, *PINTERFACE_TYPE;
typedef struct _CM_COMPONENT_INFORMATION { DEVICE_FLAGS Flags; ULONG Version; ULONG Key; KAFFINITY AffinityMask;} CM_COMPONENT_INFORMATION, *PCM_COMPONENT_INFORMATION;
typedef struct _CM_ROM_BLOCK { ULONG Address; ULONG Size;} CM_ROM_BLOCK, *PCM_ROM_BLOCK;
typedef struct _CM_PARTIAL_RESOURCE_LIST { USHORT Version; USHORT Revision; ULONG Count; CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1];} CM_PARTIAL_RESOURCE_LIST, *PCM_PARTIAL_RESOURCE_LIST;
typedef struct _CM_FULL_RESOURCE_DESCRIPTOR { INTERFACE_TYPE InterfaceType; ULONG BusNumber; CM_PARTIAL_RESOURCE_LIST PartialResourceList;} CM_FULL_RESOURCE_DESCRIPTOR, *PCM_FULL_RESOURCE_DESCRIPTOR;
typedef struct _CM_RESOURCE_LIST { ULONG Count; CM_FULL_RESOURCE_DESCRIPTOR List[1];} CM_RESOURCE_LIST, *PCM_RESOURCE_LIST;
typedef struct _PNP_BUS_INFORMATION { GUID BusTypeGuid; INTERFACE_TYPE LegacyBusType; ULONG BusNumber;} PNP_BUS_INFORMATION, *PPNP_BUS_INFORMATION;
#include <pshpack1.h>
typedef struct _CM_INT13_DRIVE_PARAMETER { USHORT DriveSelect; ULONG MaxCylinders; USHORT SectorsPerTrack; USHORT MaxHeads; USHORT NumberDrives;} CM_INT13_DRIVE_PARAMETER, *PCM_INT13_DRIVE_PARAMETER;
typedef struct _CM_MCA_POS_DATA { USHORT AdapterId; UCHAR PosData1; UCHAR PosData2; UCHAR PosData3; UCHAR PosData4;} CM_MCA_POS_DATA, *PCM_MCA_POS_DATA;
typedef struct _CM_PNP_BIOS_DEVICE_NODE { USHORT Size; UCHAR Node; ULONG ProductId; UCHAR DeviceType[3]; USHORT DeviceAttributes;} CM_PNP_BIOS_DEVICE_NODE,*PCM_PNP_BIOS_DEVICE_NODE;
typedef struct _CM_PNP_BIOS_INSTALLATION_CHECK { UCHAR Signature[4]; UCHAR Revision; UCHAR Length; USHORT ControlField; UCHAR Checksum; ULONG EventFlagAddress; USHORT RealModeEntryOffset; USHORT RealModeEntrySegment; USHORT ProtectedModeEntryOffset; ULONG ProtectedModeCodeBaseAddress; ULONG OemDeviceId; USHORT RealModeDataBaseAddress; ULONG ProtectedModeDataBaseAddress;} CM_PNP_BIOS_INSTALLATION_CHECK, *PCM_PNP_BIOS_INSTALLATION_CHECK;
#include <poppack.h>
typedef struct _CM_DISK_GEOMETRY_DEVICE_DATA { ULONG BytesPerSector; ULONG NumberOfCylinders; ULONG SectorsPerTrack; ULONG NumberOfHeads;} CM_DISK_GEOMETRY_DEVICE_DATA, *PCM_DISK_GEOMETRY_DEVICE_DATA;
typedef struct _CM_KEYBOARD_DEVICE_DATA { USHORT Version; USHORT Revision; UCHAR Type; UCHAR Subtype; USHORT KeyboardFlags;} CM_KEYBOARD_DEVICE_DATA, *PCM_KEYBOARD_DEVICE_DATA;
typedef struct _CM_SCSI_DEVICE_DATA { USHORT Version; USHORT Revision; UCHAR HostIdentifier;} CM_SCSI_DEVICE_DATA, *PCM_SCSI_DEVICE_DATA;
typedef struct _CM_VIDEO_DEVICE_DATA { USHORT Version; USHORT Revision; ULONG VideoClock;} CM_VIDEO_DEVICE_DATA, *PCM_VIDEO_DEVICE_DATA;
typedef struct _CM_SONIC_DEVICE_DATA { USHORT Version; USHORT Revision; USHORT DataConfigurationRegister; UCHAR EthernetAddress[8];} CM_SONIC_DEVICE_DATA, *PCM_SONIC_DEVICE_DATA;
typedef struct _CM_SERIAL_DEVICE_DATA { USHORT Version; USHORT Revision; ULONG BaudClock;} CM_SERIAL_DEVICE_DATA, *PCM_SERIAL_DEVICE_DATA;
typedef struct _CM_MONITOR_DEVICE_DATA { USHORT Version; USHORT Revision; USHORT HorizontalScreenSize; USHORT VerticalScreenSize; USHORT HorizontalResolution; USHORT VerticalResolution; USHORT HorizontalDisplayTimeLow; USHORT HorizontalDisplayTime; USHORT HorizontalDisplayTimeHigh; USHORT HorizontalBackPorchLow; USHORT HorizontalBackPorch; USHORT HorizontalBackPorchHigh; USHORT HorizontalFrontPorchLow; USHORT HorizontalFrontPorch; USHORT HorizontalFrontPorchHigh; USHORT HorizontalSyncLow; USHORT HorizontalSync; USHORT HorizontalSyncHigh; USHORT VerticalBackPorchLow; USHORT VerticalBackPorch; USHORT VerticalBackPorchHigh; USHORT VerticalFrontPorchLow; USHORT VerticalFrontPorch; USHORT VerticalFrontPorchHigh; USHORT VerticalSyncLow; USHORT VerticalSync; USHORT VerticalSyncHigh;} CM_MONITOR_DEVICE_DATA, *PCM_MONITOR_DEVICE_DATA;
typedef struct _CM_FLOPPY_DEVICE_DATA { USHORT Version; USHORT Revision; CHAR Size[8]; ULONG MaxDensity; ULONG MountDensity; UCHAR StepRateHeadUnloadTime; UCHAR HeadLoadTime; UCHAR MotorOffTime; UCHAR SectorLengthCode; UCHAR SectorPerTrack; UCHAR ReadWriteGapLength; UCHAR DataTransferLength; UCHAR FormatGapLength; UCHAR FormatFillCharacter; UCHAR HeadSettleTime; UCHAR MotorSettleTime; UCHAR MaximumTrackValue; UCHAR DataTransferRate;} CM_FLOPPY_DEVICE_DATA, *PCM_FLOPPY_DEVICE_DATA;
typedef enum _KEY_INFORMATION_CLASS { KeyBasicInformation, KeyNodeInformation, KeyFullInformation, KeyNameInformation, KeyCachedInformation, KeyFlagsInformation, KeyVirtualizationInformation, KeyHandleTagsInformation, MaxKeyInfoClass} KEY_INFORMATION_CLASS;
typedef struct _KEY_BASIC_INFORMATION { LARGE_INTEGER LastWriteTime; ULONG TitleIndex; ULONG NameLength; WCHAR Name[1];} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
typedef struct _KEY_CONTROL_FLAGS_INFORMATION { ULONG ControlFlags;} KEY_CONTROL_FLAGS_INFORMATION, *PKEY_CONTROL_FLAGS_INFORMATION;
typedef struct _KEY_FULL_INFORMATION { LARGE_INTEGER LastWriteTime; ULONG TitleIndex; ULONG ClassOffset; ULONG ClassLength; ULONG SubKeys; ULONG MaxNameLen; ULONG MaxClassLen; ULONG Values; ULONG MaxValueNameLen; ULONG MaxValueDataLen; WCHAR Class[1];} KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
typedef struct _KEY_HANDLE_TAGS_INFORMATION { ULONG HandleTags;} KEY_HANDLE_TAGS_INFORMATION, *PKEY_HANDLE_TAGS_INFORMATION;
typedef struct _KEY_NODE_INFORMATION { LARGE_INTEGER LastWriteTime; ULONG TitleIndex; ULONG ClassOffset; ULONG ClassLength; ULONG NameLength; WCHAR Name[1];} KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
typedef enum _KEY_SET_INFORMATION_CLASS { KeyWriteTimeInformation, KeyWow64FlagsInformation, KeyControlFlagsInformation, KeySetVirtualizationInformation, KeySetDebugInformation, KeySetHandleTagsInformation, MaxKeySetInfoClass} KEY_SET_INFORMATION_CLASS;
typedef struct _KEY_SET_VIRTUALIZATION_INFORMATION { ULONG VirtualTarget:1; ULONG VirtualStore:1; ULONG VirtualSource:1; ULONG Reserved:29;} KEY_SET_VIRTUALIZATION_INFORMATION, *PKEY_SET_VIRTUALIZATION_INFORMATION;
typedef struct _KEY_VALUE_BASIC_INFORMATION { ULONG TitleIndex; ULONG Type; ULONG NameLength; WCHAR Name[1];} KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
typedef struct _KEY_VALUE_FULL_INFORMATION { ULONG TitleIndex; ULONG Type; ULONG DataOffset; ULONG DataLength; ULONG NameLength; WCHAR Name[1];} KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
typedef struct _KEY_VALUE_PARTIAL_INFORMATION { ULONG TitleIndex; ULONG Type; ULONG DataLength; _Field_size_bytes_(DataLength) UCHAR Data[1];} KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
typedef struct _KEY_VALUE_PARTIAL_INFORMATION_ALIGN64 { ULONG Type; ULONG DataLength; _Field_size_bytes_(DataLength) UCHAR Data[1];} KEY_VALUE_PARTIAL_INFORMATION_ALIGN64, *PKEY_VALUE_PARTIAL_INFORMATION_ALIGN64;
typedef struct _KEY_VALUE_ENTRY { PUNICODE_STRING ValueName; ULONG DataLength; ULONG DataOffset; ULONG Type;} KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
typedef enum _KEY_VALUE_INFORMATION_CLASS { KeyValueBasicInformation, KeyValueFullInformation, KeyValuePartialInformation, KeyValueFullInformationAlign64, KeyValuePartialInformationAlign64} KEY_VALUE_INFORMATION_CLASS;
typedef struct _KEY_WOW64_FLAGS_INFORMATION { ULONG UserFlags;} KEY_WOW64_FLAGS_INFORMATION, *PKEY_WOW64_FLAGS_INFORMATION;
typedef struct _KEY_WRITE_TIME_INFORMATION { LARGE_INTEGER LastWriteTime;} KEY_WRITE_TIME_INFORMATION, *PKEY_WRITE_TIME_INFORMATION;
#if (NTDDI_VERSION < NTDDI_VISTA)typedef struct _KEY_USER_FLAGS_INFORMATION { ULONG UserFlags;} KEY_USER_FLAGS_INFORMATION, *PKEY_USER_FLAGS_INFORMATION;#endif
typedef enum _REG_NOTIFY_CLASS { RegNtDeleteKey, RegNtPreDeleteKey = RegNtDeleteKey, RegNtSetValueKey, RegNtPreSetValueKey = RegNtSetValueKey, RegNtDeleteValueKey, RegNtPreDeleteValueKey = RegNtDeleteValueKey, RegNtSetInformationKey, RegNtPreSetInformationKey = RegNtSetInformationKey, RegNtRenameKey, RegNtPreRenameKey = RegNtRenameKey, RegNtEnumerateKey, RegNtPreEnumerateKey = RegNtEnumerateKey, RegNtEnumerateValueKey, RegNtPreEnumerateValueKey = RegNtEnumerateValueKey, RegNtQueryKey, RegNtPreQueryKey = RegNtQueryKey, RegNtQueryValueKey, RegNtPreQueryValueKey = RegNtQueryValueKey, RegNtQueryMultipleValueKey, RegNtPreQueryMultipleValueKey = RegNtQueryMultipleValueKey, RegNtPreCreateKey, RegNtPostCreateKey, RegNtPreOpenKey, RegNtPostOpenKey, RegNtKeyHandleClose, RegNtPreKeyHandleClose = RegNtKeyHandleClose, RegNtPostDeleteKey, RegNtPostSetValueKey, RegNtPostDeleteValueKey, RegNtPostSetInformationKey, RegNtPostRenameKey, RegNtPostEnumerateKey, RegNtPostEnumerateValueKey, RegNtPostQueryKey, RegNtPostQueryValueKey, RegNtPostQueryMultipleValueKey, RegNtPostKeyHandleClose, RegNtPreCreateKeyEx, RegNtPostCreateKeyEx, RegNtPreOpenKeyEx, RegNtPostOpenKeyEx, RegNtPreFlushKey, RegNtPostFlushKey, RegNtPreLoadKey, RegNtPostLoadKey, RegNtPreUnLoadKey, RegNtPostUnLoadKey, RegNtPreQueryKeySecurity, RegNtPostQueryKeySecurity, RegNtPreSetKeySecurity, RegNtPostSetKeySecurity, RegNtCallbackObjectContextCleanup, RegNtPreRestoreKey, RegNtPostRestoreKey, RegNtPreSaveKey, RegNtPostSaveKey, RegNtPreReplaceKey, RegNtPostReplaceKey, MaxRegNtNotifyClass} REG_NOTIFY_CLASS, *PREG_NOTIFY_CLASS;
_IRQL_requires_same__Function_class_(EX_CALLBACK_FUNCTION)typedef NTSTATUS(NTAPI EX_CALLBACK_FUNCTION)( _In_ PVOID CallbackContext, _In_opt_ PVOID Argument1, _In_opt_ PVOID Argument2);typedef EX_CALLBACK_FUNCTION *PEX_CALLBACK_FUNCTION;
typedef struct _REG_DELETE_KEY_INFORMATION { PVOID Object; PVOID CallContext; PVOID ObjectContext; PVOID Reserved;} REG_DELETE_KEY_INFORMATION, *PREG_DELETE_KEY_INFORMATION#if (NTDDI_VERSION >= NTDDI_VISTA), REG_FLUSH_KEY_INFORMATION, *PREG_FLUSH_KEY_INFORMATION#endif;
typedef struct _REG_SET_VALUE_KEY_INFORMATION { PVOID Object; PUNICODE_STRING ValueName; ULONG TitleIndex; ULONG Type; PVOID Data; ULONG DataSize; PVOID CallContext; PVOID ObjectContext; PVOID Reserved;} REG_SET_VALUE_KEY_INFORMATION, *PREG_SET_VALUE_KEY_INFORMATION;
typedef struct _REG_DELETE_VALUE_KEY_INFORMATION { PVOID Object; PUNICODE_STRING ValueName; PVOID CallContext; PVOID ObjectContext; PVOID Reserved;} REG_DELETE_VALUE_KEY_INFORMATION, *PREG_DELETE_VALUE_KEY_INFORMATION;
typedef struct _REG_SET_INFORMATION_KEY_INFORMATION { PVOID Object; KEY_SET_INFORMATION_CLASS KeySetInformationClass; PVOID KeySetInformation; ULONG KeySetInformationLength; PVOID CallContext; PVOID ObjectContext; PVOID Reserved;} REG_SET_INFORMATION_KEY_INFORMATION, *PREG_SET_INFORMATION_KEY_INFORMATION;
typedef struct _REG_ENUMERATE_KEY_INFORMATION { PVOID Object; ULONG Index; KEY_INFORMATION_CLASS KeyInformationClass; PVOID KeyInformation; ULONG Length; PULONG ResultLength; PVOID CallContext; PVOID ObjectContext; PVOID Reserved;} REG_ENUMERATE_KEY_INFORMATION, *PREG_ENUMERATE_KEY_INFORMATION;
typedef struct _REG_ENUMERATE_VALUE_KEY_INFORMATION { PVOID Object; ULONG Index; KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass; PVOID KeyValueInformation; ULONG Length; PULONG ResultLength; PVOID CallContext; PVOID ObjectContext; PVOID Reserved;} REG_ENUMERATE_VALUE_KEY_INFORMATION, *PREG_ENUMERATE_VALUE_KEY_INFORMATION;
typedef struct _REG_QUERY_KEY_INFORMATION { PVOID Object; KEY_INFORMATION_CLASS KeyInformationClass; PVOID KeyInformation; ULONG Length; PULONG ResultLength; PVOID CallContext; PVOID ObjectContext; PVOID Reserved;} REG_QUERY_KEY_INFORMATION, *PREG_QUERY_KEY_INFORMATION;
typedef struct _REG_QUERY_VALUE_KEY_INFORMATION { PVOID Object; PUNICODE_STRING ValueName; KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass; PVOID KeyValueInformation; ULONG Length; PULONG ResultLength; PVOID CallContext; PVOID ObjectContext; PVOID Reserved;} REG_QUERY_VALUE_KEY_INFORMATION, *PREG_QUERY_VALUE_KEY_INFORMATION;
typedef struct _REG_QUERY_MULTIPLE_VALUE_KEY_INFORMATION { PVOID Object; PKEY_VALUE_ENTRY ValueEntries; ULONG EntryCount; PVOID ValueBuffer; PULONG BufferLength; PULONG RequiredBufferLength; PVOID CallContext; PVOID ObjectContext; PVOID Reserved;} REG_QUERY_MULTIPLE_VALUE_KEY_INFORMATION, *PREG_QUERY_MULTIPLE_VALUE_KEY_INFORMATION;
typedef struct _REG_RENAME_KEY_INFORMATION { PVOID Object; PUNICODE_STRING NewName; PVOID CallContext; PVOID ObjectContext; PVOID Reserved;} REG_RENAME_KEY_INFORMATION, *PREG_RENAME_KEY_INFORMATION;
typedef struct _REG_CREATE_KEY_INFORMATION { PUNICODE_STRING CompleteName; PVOID RootObject; PVOID ObjectType; ULONG CreateOptions; PUNICODE_STRING Class; PVOID SecurityDescriptor; PVOID SecurityQualityOfService; ACCESS_MASK DesiredAccess; ACCESS_MASK GrantedAccess; PULONG Disposition; PVOID *ResultObject; PVOID CallContext; PVOID RootObjectContext; PVOID Transaction; PVOID Reserved;} REG_CREATE_KEY_INFORMATION, REG_OPEN_KEY_INFORMATION,*PREG_CREATE_KEY_INFORMATION, *PREG_OPEN_KEY_INFORMATION;
typedef struct _REG_CREATE_KEY_INFORMATION_V1 { PUNICODE_STRING CompleteName; PVOID RootObject; PVOID ObjectType; ULONG Options; PUNICODE_STRING Class; PVOID SecurityDescriptor; PVOID SecurityQualityOfService; ACCESS_MASK DesiredAccess; ACCESS_MASK GrantedAccess; PULONG Disposition; PVOID *ResultObject; PVOID CallContext; PVOID RootObjectContext; PVOID Transaction; ULONG_PTR Version; PUNICODE_STRING RemainingName; ULONG Wow64Flags; ULONG Attributes; KPROCESSOR_MODE CheckAccessMode;} REG_CREATE_KEY_INFORMATION_V1, REG_OPEN_KEY_INFORMATION_V1,*PREG_CREATE_KEY_INFORMATION_V1, *PREG_OPEN_KEY_INFORMATION_V1;
typedef struct _REG_PRE_CREATE_KEY_INFORMATION { PUNICODE_STRING CompleteName;} REG_PRE_CREATE_KEY_INFORMATION, REG_PRE_OPEN_KEY_INFORMATION,*PREG_PRE_CREATE_KEY_INFORMATION, *PREG_PRE_OPEN_KEY_INFORMATION;
typedef struct _REG_POST_CREATE_KEY_INFORMATION { PUNICODE_STRING CompleteName; PVOID Object; NTSTATUS Status;} REG_POST_CREATE_KEY_INFORMATION,REG_POST_OPEN_KEY_INFORMATION, *PREG_POST_CREATE_KEY_INFORMATION, *PREG_POST_OPEN_KEY_INFORMATION;
typedef struct _REG_POST_OPERATION_INFORMATION { PVOID Object; NTSTATUS Status; PVOID PreInformation; NTSTATUS ReturnStatus; PVOID CallContext; PVOID ObjectContext; PVOID Reserved;} REG_POST_OPERATION_INFORMATION,*PREG_POST_OPERATION_INFORMATION;
typedef struct _REG_KEY_HANDLE_CLOSE_INFORMATION { PVOID Object; PVOID CallContext; PVOID ObjectContext; PVOID Reserved;} REG_KEY_HANDLE_CLOSE_INFORMATION, *PREG_KEY_HANDLE_CLOSE_INFORMATION;
#if (NTDDI_VERSION >= NTDDI_VISTA)
typedef struct _REG_LOAD_KEY_INFORMATION { PVOID Object; PUNICODE_STRING KeyName; PUNICODE_STRING SourceFile; ULONG Flags; PVOID TrustClassObject; PVOID UserEvent; ACCESS_MASK DesiredAccess; PHANDLE RootHandle; PVOID CallContext; PVOID ObjectContext; PVOID Reserved;} REG_LOAD_KEY_INFORMATION, *PREG_LOAD_KEY_INFORMATION;
typedef struct _REG_UNLOAD_KEY_INFORMATION { PVOID Object; PVOID UserEvent; PVOID CallContext; PVOID ObjectContext; PVOID Reserved;} REG_UNLOAD_KEY_INFORMATION, *PREG_UNLOAD_KEY_INFORMATION;
typedef struct _REG_CALLBACK_CONTEXT_CLEANUP_INFORMATION { PVOID Object; PVOID ObjectContext; PVOID Reserved;} REG_CALLBACK_CONTEXT_CLEANUP_INFORMATION, *PREG_CALLBACK_CONTEXT_CLEANUP_INFORMATION;
typedef struct _REG_QUERY_KEY_SECURITY_INFORMATION { PVOID Object; PSECURITY_INFORMATION SecurityInformation; PSECURITY_DESCRIPTOR SecurityDescriptor; PULONG Length; PVOID CallContext; PVOID ObjectContext; PVOID Reserved;} REG_QUERY_KEY_SECURITY_INFORMATION, *PREG_QUERY_KEY_SECURITY_INFORMATION;
typedef struct _REG_SET_KEY_SECURITY_INFORMATION { PVOID Object; PSECURITY_INFORMATION SecurityInformation; PSECURITY_DESCRIPTOR SecurityDescriptor; PVOID CallContext; PVOID ObjectContext; PVOID Reserved;} REG_SET_KEY_SECURITY_INFORMATION, *PREG_SET_KEY_SECURITY_INFORMATION;
typedef struct _REG_RESTORE_KEY_INFORMATION { PVOID Object; HANDLE FileHandle; ULONG Flags; PVOID CallContext; PVOID ObjectContext; PVOID Reserved;} REG_RESTORE_KEY_INFORMATION, *PREG_RESTORE_KEY_INFORMATION;
typedef struct _REG_SAVE_KEY_INFORMATION { PVOID Object; HANDLE FileHandle; ULONG Format; PVOID CallContext; PVOID ObjectContext; PVOID Reserved;} REG_SAVE_KEY_INFORMATION, *PREG_SAVE_KEY_INFORMATION;
typedef struct _REG_REPLACE_KEY_INFORMATION { PVOID Object; PUNICODE_STRING OldFileName; PUNICODE_STRING NewFileName; PVOID CallContext; PVOID ObjectContext; PVOID Reserved;} REG_REPLACE_KEY_INFORMATION, *PREG_REPLACE_KEY_INFORMATION;
#endif /* NTDDI_VERSION >= NTDDI_VISTA */
#define SERVICE_KERNEL_DRIVER 0x00000001#define SERVICE_FILE_SYSTEM_DRIVER 0x00000002#define SERVICE_ADAPTER 0x00000004#define SERVICE_RECOGNIZER_DRIVER 0x00000008
#define SERVICE_DRIVER (SERVICE_KERNEL_DRIVER | \ SERVICE_FILE_SYSTEM_DRIVER | \ SERVICE_RECOGNIZER_DRIVER)
#define SERVICE_WIN32_OWN_PROCESS 0x00000010#define SERVICE_WIN32_SHARE_PROCESS 0x00000020#define SERVICE_WIN32 (SERVICE_WIN32_OWN_PROCESS | \ SERVICE_WIN32_SHARE_PROCESS)
#define SERVICE_INTERACTIVE_PROCESS 0x00000100
#define SERVICE_TYPE_ALL (SERVICE_WIN32 | \ SERVICE_ADAPTER | \ SERVICE_DRIVER | \ SERVICE_INTERACTIVE_PROCESS)
/* Service Start Types */#define SERVICE_BOOT_START 0x00000000#define SERVICE_SYSTEM_START 0x00000001#define SERVICE_AUTO_START 0x00000002#define SERVICE_DEMAND_START 0x00000003#define SERVICE_DISABLED 0x00000004
#define SERVICE_ERROR_IGNORE 0x00000000#define SERVICE_ERROR_NORMAL 0x00000001#define SERVICE_ERROR_SEVERE 0x00000002#define SERVICE_ERROR_CRITICAL 0x00000003
typedef enum _CM_SERVICE_NODE_TYPE { DriverType = SERVICE_KERNEL_DRIVER, FileSystemType = SERVICE_FILE_SYSTEM_DRIVER, Win32ServiceOwnProcess = SERVICE_WIN32_OWN_PROCESS, Win32ServiceShareProcess = SERVICE_WIN32_SHARE_PROCESS, AdapterType = SERVICE_ADAPTER, RecognizerType = SERVICE_RECOGNIZER_DRIVER} SERVICE_NODE_TYPE;
typedef enum _CM_SERVICE_LOAD_TYPE { BootLoad = SERVICE_BOOT_START, SystemLoad = SERVICE_SYSTEM_START, AutoLoad = SERVICE_AUTO_START, DemandLoad = SERVICE_DEMAND_START, DisableLoad = SERVICE_DISABLED} SERVICE_LOAD_TYPE;
typedef enum _CM_ERROR_CONTROL_TYPE { IgnoreError = SERVICE_ERROR_IGNORE, NormalError = SERVICE_ERROR_NORMAL, SevereError = SERVICE_ERROR_SEVERE, CriticalError = SERVICE_ERROR_CRITICAL} SERVICE_ERROR_TYPE;
#define CM_SERVICE_NETWORK_BOOT_LOAD 0x00000001#define CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD 0x00000002#define CM_SERVICE_USB_DISK_BOOT_LOAD 0x00000004
#define CM_SERVICE_VALID_PROMOTION_MASK (CM_SERVICE_NETWORK_BOOT_LOAD | \ CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD | \ CM_SERVICE_USB_DISK_BOOT_LOAD)
$endif (_WDMDDK_)$if (_NTDDK_)typedef struct _KEY_NAME_INFORMATION { ULONG NameLength; WCHAR Name[1];} KEY_NAME_INFORMATION, *PKEY_NAME_INFORMATION;
typedef struct _KEY_CACHED_INFORMATION { LARGE_INTEGER LastWriteTime; ULONG TitleIndex; ULONG SubKeys; ULONG MaxNameLen; ULONG Values; ULONG MaxValueNameLen; ULONG MaxValueDataLen; ULONG NameLength;} KEY_CACHED_INFORMATION, *PKEY_CACHED_INFORMATION;
typedef struct _KEY_VIRTUALIZATION_INFORMATION { ULONG VirtualizationCandidate:1; ULONG VirtualizationEnabled:1; ULONG VirtualTarget:1; ULONG VirtualStore:1; ULONG VirtualSource:1; ULONG Reserved:27;} KEY_VIRTUALIZATION_INFORMATION, *PKEY_VIRTUALIZATION_INFORMATION;
#define CmResourceTypeMaximum 8
typedef struct _CM_PCCARD_DEVICE_DATA { UCHAR Flags; UCHAR ErrorCode; USHORT Reserved; ULONG BusData; ULONG DeviceId; ULONG LegacyBaseAddress; UCHAR IRQMap[16];} CM_PCCARD_DEVICE_DATA, *PCM_PCCARD_DEVICE_DATA;
$endif (_NTDDK_)