ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

cmtypes.h
Go to the documentation of this file.
00001 /******************************************************************************
00002  *                            Configuration Manager Types                     *
00003  ******************************************************************************/
00004 
00005 $if (_WDMDDK_)
00006 /* Resource list definitions */
00007 typedef int CM_RESOURCE_TYPE;
00008 
00009 #define CmResourceTypeNull              0
00010 #define CmResourceTypePort              1
00011 #define CmResourceTypeInterrupt         2
00012 #define CmResourceTypeMemory            3
00013 #define CmResourceTypeDma               4
00014 #define CmResourceTypeDeviceSpecific    5
00015 #define CmResourceTypeBusNumber         6
00016 #define CmResourceTypeNonArbitrated     128
00017 #define CmResourceTypeConfigData        128
00018 #define CmResourceTypeDevicePrivate     129
00019 #define CmResourceTypePcCardConfig      130
00020 #define CmResourceTypeMfCardConfig      131
00021 
00022 /* KEY_VALUE_Xxx.Type */
00023 #define REG_NONE                           0
00024 #define REG_SZ                             1
00025 #define REG_EXPAND_SZ                      2
00026 #define REG_BINARY                         3
00027 #define REG_DWORD                          4
00028 #define REG_DWORD_LITTLE_ENDIAN            4
00029 #define REG_DWORD_BIG_ENDIAN               5
00030 #define REG_LINK                           6
00031 #define REG_MULTI_SZ                       7
00032 #define REG_RESOURCE_LIST                  8
00033 #define REG_FULL_RESOURCE_DESCRIPTOR       9
00034 #define REG_RESOURCE_REQUIREMENTS_LIST     10
00035 #define REG_QWORD                          11
00036 #define REG_QWORD_LITTLE_ENDIAN            11
00037 
00038 /* Registry Access Rights */
00039 #define KEY_QUERY_VALUE         (0x0001)
00040 #define KEY_SET_VALUE           (0x0002)
00041 #define KEY_CREATE_SUB_KEY      (0x0004)
00042 #define KEY_ENUMERATE_SUB_KEYS  (0x0008)
00043 #define KEY_NOTIFY              (0x0010)
00044 #define KEY_CREATE_LINK         (0x0020)
00045 #define KEY_WOW64_32KEY         (0x0200)
00046 #define KEY_WOW64_64KEY         (0x0100)
00047 #define KEY_WOW64_RES           (0x0300)
00048 
00049 #define KEY_READ                ((STANDARD_RIGHTS_READ       |\
00050                                   KEY_QUERY_VALUE            |\
00051                                   KEY_ENUMERATE_SUB_KEYS     |\
00052                                   KEY_NOTIFY)                 \
00053                                   &                           \
00054                                  (~SYNCHRONIZE))
00055 
00056 #define KEY_WRITE               ((STANDARD_RIGHTS_WRITE      |\
00057                                   KEY_SET_VALUE              |\
00058                                   KEY_CREATE_SUB_KEY)         \
00059                                   &                           \
00060                                  (~SYNCHRONIZE))
00061 
00062 #define KEY_EXECUTE             ((KEY_READ)                   \
00063                                   &                           \
00064                                  (~SYNCHRONIZE))
00065 
00066 #define KEY_ALL_ACCESS          ((STANDARD_RIGHTS_ALL        |\
00067                                   KEY_QUERY_VALUE            |\
00068                                   KEY_SET_VALUE              |\
00069                                   KEY_CREATE_SUB_KEY         |\
00070                                   KEY_ENUMERATE_SUB_KEYS     |\
00071                                   KEY_NOTIFY                 |\
00072                                   KEY_CREATE_LINK)            \
00073                                   &                           \
00074                                  (~SYNCHRONIZE))
00075 
00076 /* Registry Open/Create Options */
00077 #define REG_OPTION_RESERVED         (0x00000000L)
00078 #define REG_OPTION_NON_VOLATILE     (0x00000000L)
00079 #define REG_OPTION_VOLATILE         (0x00000001L)
00080 #define REG_OPTION_CREATE_LINK      (0x00000002L)
00081 #define REG_OPTION_BACKUP_RESTORE   (0x00000004L)
00082 #define REG_OPTION_OPEN_LINK        (0x00000008L)
00083 
00084 #define REG_LEGAL_OPTION            \
00085                 (REG_OPTION_RESERVED            |\
00086                  REG_OPTION_NON_VOLATILE        |\
00087                  REG_OPTION_VOLATILE            |\
00088                  REG_OPTION_CREATE_LINK         |\
00089                  REG_OPTION_BACKUP_RESTORE      |\
00090                  REG_OPTION_OPEN_LINK)
00091 
00092 #define REG_OPEN_LEGAL_OPTION       \
00093                 (REG_OPTION_RESERVED            |\
00094                  REG_OPTION_BACKUP_RESTORE      |\
00095                  REG_OPTION_OPEN_LINK)
00096 
00097 #define REG_STANDARD_FORMAT            1
00098 #define REG_LATEST_FORMAT              2
00099 #define REG_NO_COMPRESSION             4
00100 
00101 /* Key creation/open disposition */
00102 #define REG_CREATED_NEW_KEY         (0x00000001L)
00103 #define REG_OPENED_EXISTING_KEY     (0x00000002L)
00104 
00105 /* Key restore & hive load flags */
00106 #define REG_WHOLE_HIVE_VOLATILE         (0x00000001L)
00107 #define REG_REFRESH_HIVE                (0x00000002L)
00108 #define REG_NO_LAZY_FLUSH               (0x00000004L)
00109 #define REG_FORCE_RESTORE               (0x00000008L)
00110 #define REG_APP_HIVE                    (0x00000010L)
00111 #define REG_PROCESS_PRIVATE             (0x00000020L)
00112 #define REG_START_JOURNAL               (0x00000040L)
00113 #define REG_HIVE_EXACT_FILE_GROWTH      (0x00000080L)
00114 #define REG_HIVE_NO_RM                  (0x00000100L)
00115 #define REG_HIVE_SINGLE_LOG             (0x00000200L)
00116 #define REG_BOOT_HIVE                   (0x00000400L)
00117 
00118 /* Unload Flags */
00119 #define REG_FORCE_UNLOAD            1
00120 
00121 /* Notify Filter Values */
00122 #define REG_NOTIFY_CHANGE_NAME          (0x00000001L)
00123 #define REG_NOTIFY_CHANGE_ATTRIBUTES    (0x00000002L)
00124 #define REG_NOTIFY_CHANGE_LAST_SET      (0x00000004L)
00125 #define REG_NOTIFY_CHANGE_SECURITY      (0x00000008L)
00126 
00127 #define REG_LEGAL_CHANGE_FILTER                 \
00128                 (REG_NOTIFY_CHANGE_NAME          |\
00129                  REG_NOTIFY_CHANGE_ATTRIBUTES    |\
00130                  REG_NOTIFY_CHANGE_LAST_SET      |\
00131                  REG_NOTIFY_CHANGE_SECURITY)
00132 
00133 #include <pshpack4.h>
00134 typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR {
00135   UCHAR Type;
00136   UCHAR ShareDisposition;
00137   USHORT Flags;
00138   union {
00139     struct {
00140       PHYSICAL_ADDRESS Start;
00141       ULONG Length;
00142     } Generic;
00143     struct {
00144       PHYSICAL_ADDRESS Start;
00145       ULONG Length;
00146     } Port;
00147     struct {
00148 #if defined(NT_PROCESSOR_GROUPS)
00149       USHORT Level;
00150       USHORT Group;
00151 #else
00152       ULONG Level;
00153 #endif
00154       ULONG Vector;
00155       KAFFINITY Affinity;
00156     } Interrupt;
00157 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
00158     struct {
00159       _ANONYMOUS_UNION union {
00160         struct {
00161 #if defined(NT_PROCESSOR_GROUPS)
00162           USHORT Group;
00163 #else
00164           USHORT Reserved;
00165 #endif
00166           USHORT MessageCount;
00167           ULONG Vector;
00168           KAFFINITY Affinity;
00169         } Raw;
00170         struct {
00171 #if defined(NT_PROCESSOR_GROUPS)
00172           USHORT Level;
00173           USHORT Group;
00174 #else
00175           ULONG Level;
00176 #endif
00177           ULONG Vector;
00178           KAFFINITY Affinity;
00179         } Translated;
00180       } DUMMYUNIONNAME;
00181     } MessageInterrupt;
00182 #endif
00183     struct {
00184       PHYSICAL_ADDRESS Start;
00185       ULONG Length;
00186     } Memory;
00187     struct {
00188       ULONG Channel;
00189       ULONG Port;
00190       ULONG Reserved1;
00191     } Dma;
00192     struct {
00193       ULONG Data[3];
00194     } DevicePrivate;
00195     struct {
00196       ULONG Start;
00197       ULONG Length;
00198       ULONG Reserved;
00199     } BusNumber;
00200     struct {
00201       ULONG DataSize;
00202       ULONG Reserved1;
00203       ULONG Reserved2;
00204     } DeviceSpecificData;
00205 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
00206     struct {
00207       PHYSICAL_ADDRESS Start;
00208       ULONG Length40;
00209     } Memory40;
00210     struct {
00211       PHYSICAL_ADDRESS Start;
00212       ULONG Length48;
00213     } Memory48;
00214     struct {
00215       PHYSICAL_ADDRESS Start;
00216       ULONG Length64;
00217     } Memory64;
00218 #endif
00219   } u;
00220 } CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR;
00221 #include <poppack.h>
00222 
00223 /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Type */
00224 #define CmResourceTypeNull                0
00225 #define CmResourceTypePort                1
00226 #define CmResourceTypeInterrupt           2
00227 #define CmResourceTypeMemory              3
00228 #define CmResourceTypeDma                 4
00229 #define CmResourceTypeDeviceSpecific      5
00230 #define CmResourceTypeBusNumber           6
00231 #define CmResourceTypeMemoryLarge         7
00232 #define CmResourceTypeNonArbitrated       128
00233 #define CmResourceTypeConfigData          128
00234 #define CmResourceTypeDevicePrivate       129
00235 #define CmResourceTypePcCardConfig        130
00236 #define CmResourceTypeMfCardConfig        131
00237 
00238 /* CM_PARTIAL_RESOURCE_DESCRIPTOR.ShareDisposition */
00239 typedef enum _CM_SHARE_DISPOSITION {
00240   CmResourceShareUndetermined = 0,
00241   CmResourceShareDeviceExclusive,
00242   CmResourceShareDriverExclusive,
00243   CmResourceShareShared
00244 } CM_SHARE_DISPOSITION;
00245 
00246 /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypePort */
00247 #define CM_RESOURCE_PORT_MEMORY           0x0000
00248 #define CM_RESOURCE_PORT_IO               0x0001
00249 #define CM_RESOURCE_PORT_10_BIT_DECODE    0x0004
00250 #define CM_RESOURCE_PORT_12_BIT_DECODE    0x0008
00251 #define CM_RESOURCE_PORT_16_BIT_DECODE    0x0010
00252 #define CM_RESOURCE_PORT_POSITIVE_DECODE  0x0020
00253 #define CM_RESOURCE_PORT_PASSIVE_DECODE   0x0040
00254 #define CM_RESOURCE_PORT_WINDOW_DECODE    0x0080
00255 #define CM_RESOURCE_PORT_BAR              0x0100
00256 
00257 /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeInterrupt */
00258 #define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE 0x0000
00259 #define CM_RESOURCE_INTERRUPT_LATCHED         0x0001
00260 #define CM_RESOURCE_INTERRUPT_MESSAGE         0x0002
00261 #define CM_RESOURCE_INTERRUPT_POLICY_INCLUDED 0x0004
00262 
00263 #define CM_RESOURCE_INTERRUPT_LEVEL_LATCHED_BITS 0x0001
00264 
00265 #define CM_RESOURCE_INTERRUPT_MESSAGE_TOKEN   ((ULONG)-2)
00266 
00267 /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeMemory */
00268 #define CM_RESOURCE_MEMORY_READ_WRITE                    0x0000
00269 #define CM_RESOURCE_MEMORY_READ_ONLY                     0x0001
00270 #define CM_RESOURCE_MEMORY_WRITE_ONLY                    0x0002
00271 #define CM_RESOURCE_MEMORY_WRITEABILITY_MASK             0x0003
00272 #define CM_RESOURCE_MEMORY_PREFETCHABLE                  0x0004
00273 #define CM_RESOURCE_MEMORY_COMBINEDWRITE                 0x0008
00274 #define CM_RESOURCE_MEMORY_24                            0x0010
00275 #define CM_RESOURCE_MEMORY_CACHEABLE                     0x0020
00276 #define CM_RESOURCE_MEMORY_WINDOW_DECODE                 0x0040
00277 #define CM_RESOURCE_MEMORY_BAR                           0x0080
00278 #define CM_RESOURCE_MEMORY_COMPAT_FOR_INACCESSIBLE_RANGE 0x0100
00279 
00280 #define CM_RESOURCE_MEMORY_LARGE                         0x0E00
00281 #define CM_RESOURCE_MEMORY_LARGE_40                      0x0200
00282 #define CM_RESOURCE_MEMORY_LARGE_48                      0x0400
00283 #define CM_RESOURCE_MEMORY_LARGE_64                      0x0800
00284 
00285 #define CM_RESOURCE_MEMORY_LARGE_40_MAXLEN               0x000000FFFFFFFF00
00286 #define CM_RESOURCE_MEMORY_LARGE_48_MAXLEN               0x0000FFFFFFFF0000
00287 #define CM_RESOURCE_MEMORY_LARGE_64_MAXLEN               0xFFFFFFFF00000000
00288 
00289 /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeDma */
00290 #define CM_RESOURCE_DMA_8                 0x0000
00291 #define CM_RESOURCE_DMA_16                0x0001
00292 #define CM_RESOURCE_DMA_32                0x0002
00293 #define CM_RESOURCE_DMA_8_AND_16          0x0004
00294 #define CM_RESOURCE_DMA_BUS_MASTER        0x0008
00295 #define CM_RESOURCE_DMA_TYPE_A            0x0010
00296 #define CM_RESOURCE_DMA_TYPE_B            0x0020
00297 #define CM_RESOURCE_DMA_TYPE_F            0x0040
00298 
00299 typedef struct _DEVICE_FLAGS {
00300   ULONG Failed:1;
00301   ULONG ReadOnly:1;
00302   ULONG Removable:1;
00303   ULONG ConsoleIn:1;
00304   ULONG ConsoleOut:1;
00305   ULONG Input:1;
00306   ULONG Output:1;
00307 } DEVICE_FLAGS, *PDEVICE_FLAGS;
00308 
00309 typedef enum _INTERFACE_TYPE {
00310   InterfaceTypeUndefined = -1,
00311   Internal,
00312   Isa,
00313   Eisa,
00314   MicroChannel,
00315   TurboChannel,
00316   PCIBus,
00317   VMEBus,
00318   NuBus,
00319   PCMCIABus,
00320   CBus,
00321   MPIBus,
00322   MPSABus,
00323   ProcessorInternal,
00324   InternalPowerBus,
00325   PNPISABus,
00326   PNPBus,
00327   Vmcs,
00328   MaximumInterfaceType
00329 } INTERFACE_TYPE, *PINTERFACE_TYPE;
00330 
00331 typedef struct _CM_COMPONENT_INFORMATION {
00332   DEVICE_FLAGS Flags;
00333   ULONG Version;
00334   ULONG Key;
00335   KAFFINITY AffinityMask;
00336 } CM_COMPONENT_INFORMATION, *PCM_COMPONENT_INFORMATION;
00337 
00338 typedef struct _CM_ROM_BLOCK {
00339   ULONG Address;
00340   ULONG Size;
00341 } CM_ROM_BLOCK, *PCM_ROM_BLOCK;
00342 
00343 typedef struct _CM_PARTIAL_RESOURCE_LIST {
00344   USHORT Version;
00345   USHORT Revision;
00346   ULONG Count;
00347   CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1];
00348 } CM_PARTIAL_RESOURCE_LIST, *PCM_PARTIAL_RESOURCE_LIST;
00349 
00350 typedef struct _CM_FULL_RESOURCE_DESCRIPTOR {
00351   INTERFACE_TYPE InterfaceType;
00352   ULONG BusNumber;
00353   CM_PARTIAL_RESOURCE_LIST PartialResourceList;
00354 } CM_FULL_RESOURCE_DESCRIPTOR, *PCM_FULL_RESOURCE_DESCRIPTOR;
00355 
00356 typedef struct _CM_RESOURCE_LIST {
00357   ULONG Count;
00358   CM_FULL_RESOURCE_DESCRIPTOR List[1];
00359 } CM_RESOURCE_LIST, *PCM_RESOURCE_LIST;
00360 
00361 typedef struct _PNP_BUS_INFORMATION {
00362   GUID BusTypeGuid;
00363   INTERFACE_TYPE LegacyBusType;
00364   ULONG BusNumber;
00365 } PNP_BUS_INFORMATION, *PPNP_BUS_INFORMATION;
00366 
00367 #include <pshpack1.h>
00368 
00369 typedef struct _CM_INT13_DRIVE_PARAMETER {
00370   USHORT DriveSelect;
00371   ULONG MaxCylinders;
00372   USHORT SectorsPerTrack;
00373   USHORT MaxHeads;
00374   USHORT NumberDrives;
00375 } CM_INT13_DRIVE_PARAMETER, *PCM_INT13_DRIVE_PARAMETER;
00376 
00377 typedef struct _CM_MCA_POS_DATA {
00378   USHORT AdapterId;
00379   UCHAR PosData1;
00380   UCHAR PosData2;
00381   UCHAR PosData3;
00382   UCHAR PosData4;
00383 } CM_MCA_POS_DATA, *PCM_MCA_POS_DATA;
00384 
00385 typedef struct _CM_PNP_BIOS_DEVICE_NODE {
00386   USHORT Size;
00387   UCHAR Node;
00388   ULONG ProductId;
00389   UCHAR DeviceType[3];
00390   USHORT DeviceAttributes;
00391 } CM_PNP_BIOS_DEVICE_NODE,*PCM_PNP_BIOS_DEVICE_NODE;
00392 
00393 typedef struct _CM_PNP_BIOS_INSTALLATION_CHECK {
00394   UCHAR Signature[4];
00395   UCHAR Revision;
00396   UCHAR Length;
00397   USHORT ControlField;
00398   UCHAR Checksum;
00399   ULONG EventFlagAddress;
00400   USHORT RealModeEntryOffset;
00401   USHORT RealModeEntrySegment;
00402   USHORT ProtectedModeEntryOffset;
00403   ULONG ProtectedModeCodeBaseAddress;
00404   ULONG OemDeviceId;
00405   USHORT RealModeDataBaseAddress;
00406   ULONG ProtectedModeDataBaseAddress;
00407 } CM_PNP_BIOS_INSTALLATION_CHECK, *PCM_PNP_BIOS_INSTALLATION_CHECK;
00408 
00409 #include <poppack.h>
00410 
00411 typedef struct _CM_DISK_GEOMETRY_DEVICE_DATA {
00412   ULONG BytesPerSector;
00413   ULONG NumberOfCylinders;
00414   ULONG SectorsPerTrack;
00415   ULONG NumberOfHeads;
00416 } CM_DISK_GEOMETRY_DEVICE_DATA, *PCM_DISK_GEOMETRY_DEVICE_DATA;
00417 
00418 typedef struct _CM_KEYBOARD_DEVICE_DATA {
00419   USHORT Version;
00420   USHORT Revision;
00421   UCHAR Type;
00422   UCHAR Subtype;
00423   USHORT KeyboardFlags;
00424 } CM_KEYBOARD_DEVICE_DATA, *PCM_KEYBOARD_DEVICE_DATA;
00425 
00426 typedef struct _CM_SCSI_DEVICE_DATA {
00427   USHORT Version;
00428   USHORT Revision;
00429   UCHAR HostIdentifier;
00430 } CM_SCSI_DEVICE_DATA, *PCM_SCSI_DEVICE_DATA;
00431 
00432 typedef struct _CM_VIDEO_DEVICE_DATA {
00433   USHORT Version;
00434   USHORT Revision;
00435   ULONG VideoClock;
00436 } CM_VIDEO_DEVICE_DATA, *PCM_VIDEO_DEVICE_DATA;
00437 
00438 typedef struct _CM_SONIC_DEVICE_DATA {
00439   USHORT Version;
00440   USHORT Revision;
00441   USHORT DataConfigurationRegister;
00442   UCHAR EthernetAddress[8];
00443 } CM_SONIC_DEVICE_DATA, *PCM_SONIC_DEVICE_DATA;
00444 
00445 typedef struct _CM_SERIAL_DEVICE_DATA {
00446   USHORT Version;
00447   USHORT Revision;
00448   ULONG BaudClock;
00449 } CM_SERIAL_DEVICE_DATA, *PCM_SERIAL_DEVICE_DATA;
00450 
00451 typedef struct _CM_MONITOR_DEVICE_DATA {
00452   USHORT Version;
00453   USHORT Revision;
00454   USHORT HorizontalScreenSize;
00455   USHORT VerticalScreenSize;
00456   USHORT HorizontalResolution;
00457   USHORT VerticalResolution;
00458   USHORT HorizontalDisplayTimeLow;
00459   USHORT HorizontalDisplayTime;
00460   USHORT HorizontalDisplayTimeHigh;
00461   USHORT HorizontalBackPorchLow;
00462   USHORT HorizontalBackPorch;
00463   USHORT HorizontalBackPorchHigh;
00464   USHORT HorizontalFrontPorchLow;
00465   USHORT HorizontalFrontPorch;
00466   USHORT HorizontalFrontPorchHigh;
00467   USHORT HorizontalSyncLow;
00468   USHORT HorizontalSync;
00469   USHORT HorizontalSyncHigh;
00470   USHORT VerticalBackPorchLow;
00471   USHORT VerticalBackPorch;
00472   USHORT VerticalBackPorchHigh;
00473   USHORT VerticalFrontPorchLow;
00474   USHORT VerticalFrontPorch;
00475   USHORT VerticalFrontPorchHigh;
00476   USHORT VerticalSyncLow;
00477   USHORT VerticalSync;
00478   USHORT VerticalSyncHigh;
00479 } CM_MONITOR_DEVICE_DATA, *PCM_MONITOR_DEVICE_DATA;
00480 
00481 typedef struct _CM_FLOPPY_DEVICE_DATA {
00482   USHORT Version;
00483   USHORT Revision;
00484   CHAR Size[8];
00485   ULONG MaxDensity;
00486   ULONG MountDensity;
00487   UCHAR StepRateHeadUnloadTime;
00488   UCHAR HeadLoadTime;
00489   UCHAR MotorOffTime;
00490   UCHAR SectorLengthCode;
00491   UCHAR SectorPerTrack;
00492   UCHAR ReadWriteGapLength;
00493   UCHAR DataTransferLength;
00494   UCHAR FormatGapLength;
00495   UCHAR FormatFillCharacter;
00496   UCHAR HeadSettleTime;
00497   UCHAR MotorSettleTime;
00498   UCHAR MaximumTrackValue;
00499   UCHAR DataTransferRate;
00500 } CM_FLOPPY_DEVICE_DATA, *PCM_FLOPPY_DEVICE_DATA;
00501 
00502 typedef enum _KEY_INFORMATION_CLASS {
00503   KeyBasicInformation,
00504   KeyNodeInformation,
00505   KeyFullInformation,
00506   KeyNameInformation,
00507   KeyCachedInformation,
00508   KeyFlagsInformation,
00509   KeyVirtualizationInformation,
00510   KeyHandleTagsInformation,
00511   MaxKeyInfoClass
00512 } KEY_INFORMATION_CLASS;
00513 
00514 typedef struct _KEY_BASIC_INFORMATION {
00515   LARGE_INTEGER LastWriteTime;
00516   ULONG TitleIndex;
00517   ULONG NameLength;
00518   WCHAR Name[1];
00519 } KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
00520 
00521 typedef struct _KEY_CONTROL_FLAGS_INFORMATION {
00522   ULONG ControlFlags;
00523 } KEY_CONTROL_FLAGS_INFORMATION, *PKEY_CONTROL_FLAGS_INFORMATION;
00524 
00525 typedef struct _KEY_FULL_INFORMATION {
00526   LARGE_INTEGER LastWriteTime;
00527   ULONG TitleIndex;
00528   ULONG ClassOffset;
00529   ULONG ClassLength;
00530   ULONG SubKeys;
00531   ULONG MaxNameLen;
00532   ULONG MaxClassLen;
00533   ULONG Values;
00534   ULONG MaxValueNameLen;
00535   ULONG MaxValueDataLen;
00536   WCHAR Class[1];
00537 } KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
00538 
00539 typedef struct _KEY_HANDLE_TAGS_INFORMATION {
00540   ULONG HandleTags;
00541 } KEY_HANDLE_TAGS_INFORMATION, *PKEY_HANDLE_TAGS_INFORMATION;
00542 
00543 typedef struct _KEY_NODE_INFORMATION {
00544   LARGE_INTEGER LastWriteTime;
00545   ULONG TitleIndex;
00546   ULONG ClassOffset;
00547   ULONG ClassLength;
00548   ULONG NameLength;
00549   WCHAR Name[1];
00550 } KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
00551 
00552 typedef enum _KEY_SET_INFORMATION_CLASS {
00553   KeyWriteTimeInformation,
00554   KeyWow64FlagsInformation,
00555   KeyControlFlagsInformation,
00556   KeySetVirtualizationInformation,
00557   KeySetDebugInformation,
00558   KeySetHandleTagsInformation,
00559   MaxKeySetInfoClass
00560 } KEY_SET_INFORMATION_CLASS;
00561 
00562 typedef struct _KEY_SET_VIRTUALIZATION_INFORMATION {
00563   ULONG VirtualTarget:1;
00564   ULONG VirtualStore:1;
00565   ULONG VirtualSource:1;
00566   ULONG Reserved:29;
00567 } KEY_SET_VIRTUALIZATION_INFORMATION, *PKEY_SET_VIRTUALIZATION_INFORMATION;
00568 
00569 typedef struct _KEY_VALUE_BASIC_INFORMATION {
00570   ULONG TitleIndex;
00571   ULONG Type;
00572   ULONG NameLength;
00573   WCHAR Name[1];
00574 } KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
00575 
00576 typedef struct _KEY_VALUE_FULL_INFORMATION {
00577   ULONG TitleIndex;
00578   ULONG Type;
00579   ULONG DataOffset;
00580   ULONG DataLength;
00581   ULONG NameLength;
00582   WCHAR Name[1];
00583 } KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
00584 
00585 typedef struct _KEY_VALUE_PARTIAL_INFORMATION {
00586   ULONG TitleIndex;
00587   ULONG Type;
00588   ULONG DataLength;
00589   _Field_size_bytes_(DataLength) UCHAR Data[1];
00590 } KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
00591 
00592 typedef struct _KEY_VALUE_PARTIAL_INFORMATION_ALIGN64 {
00593   ULONG Type;
00594   ULONG DataLength;
00595   _Field_size_bytes_(DataLength) UCHAR Data[1];
00596 } KEY_VALUE_PARTIAL_INFORMATION_ALIGN64, *PKEY_VALUE_PARTIAL_INFORMATION_ALIGN64;
00597 
00598 typedef struct _KEY_VALUE_ENTRY {
00599   PUNICODE_STRING ValueName;
00600   ULONG DataLength;
00601   ULONG DataOffset;
00602   ULONG Type;
00603 } KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
00604 
00605 typedef enum _KEY_VALUE_INFORMATION_CLASS {
00606   KeyValueBasicInformation,
00607   KeyValueFullInformation,
00608   KeyValuePartialInformation,
00609   KeyValueFullInformationAlign64,
00610   KeyValuePartialInformationAlign64
00611 } KEY_VALUE_INFORMATION_CLASS;
00612 
00613 typedef struct _KEY_WOW64_FLAGS_INFORMATION {
00614   ULONG UserFlags;
00615 } KEY_WOW64_FLAGS_INFORMATION, *PKEY_WOW64_FLAGS_INFORMATION;
00616 
00617 typedef struct _KEY_WRITE_TIME_INFORMATION {
00618   LARGE_INTEGER LastWriteTime;
00619 } KEY_WRITE_TIME_INFORMATION, *PKEY_WRITE_TIME_INFORMATION;
00620 
00621 typedef enum _REG_NOTIFY_CLASS {
00622   RegNtDeleteKey,
00623   RegNtPreDeleteKey = RegNtDeleteKey,
00624   RegNtSetValueKey,
00625   RegNtPreSetValueKey = RegNtSetValueKey,
00626   RegNtDeleteValueKey,
00627   RegNtPreDeleteValueKey = RegNtDeleteValueKey,
00628   RegNtSetInformationKey,
00629   RegNtPreSetInformationKey = RegNtSetInformationKey,
00630   RegNtRenameKey,
00631   RegNtPreRenameKey = RegNtRenameKey,
00632   RegNtEnumerateKey,
00633   RegNtPreEnumerateKey = RegNtEnumerateKey,
00634   RegNtEnumerateValueKey,
00635   RegNtPreEnumerateValueKey = RegNtEnumerateValueKey,
00636   RegNtQueryKey,
00637   RegNtPreQueryKey = RegNtQueryKey,
00638   RegNtQueryValueKey,
00639   RegNtPreQueryValueKey = RegNtQueryValueKey,
00640   RegNtQueryMultipleValueKey,
00641   RegNtPreQueryMultipleValueKey = RegNtQueryMultipleValueKey,
00642   RegNtPreCreateKey,
00643   RegNtPostCreateKey,
00644   RegNtPreOpenKey,
00645   RegNtPostOpenKey,
00646   RegNtKeyHandleClose,
00647   RegNtPreKeyHandleClose = RegNtKeyHandleClose,
00648   RegNtPostDeleteKey,
00649   RegNtPostSetValueKey,
00650   RegNtPostDeleteValueKey,
00651   RegNtPostSetInformationKey,
00652   RegNtPostRenameKey,
00653   RegNtPostEnumerateKey,
00654   RegNtPostEnumerateValueKey,
00655   RegNtPostQueryKey,
00656   RegNtPostQueryValueKey,
00657   RegNtPostQueryMultipleValueKey,
00658   RegNtPostKeyHandleClose,
00659   RegNtPreCreateKeyEx,
00660   RegNtPostCreateKeyEx,
00661   RegNtPreOpenKeyEx,
00662   RegNtPostOpenKeyEx,
00663   RegNtPreFlushKey,
00664   RegNtPostFlushKey,
00665   RegNtPreLoadKey,
00666   RegNtPostLoadKey,
00667   RegNtPreUnLoadKey,
00668   RegNtPostUnLoadKey,
00669   RegNtPreQueryKeySecurity,
00670   RegNtPostQueryKeySecurity,
00671   RegNtPreSetKeySecurity,
00672   RegNtPostSetKeySecurity,
00673   RegNtCallbackObjectContextCleanup,
00674   RegNtPreRestoreKey,
00675   RegNtPostRestoreKey,
00676   RegNtPreSaveKey,
00677   RegNtPostSaveKey,
00678   RegNtPreReplaceKey,
00679   RegNtPostReplaceKey,
00680   MaxRegNtNotifyClass
00681 } REG_NOTIFY_CLASS, *PREG_NOTIFY_CLASS;
00682 
00683 _IRQL_requires_same_
00684 _Function_class_(EX_CALLBACK_FUNCTION)
00685 typedef NTSTATUS
00686 (NTAPI EX_CALLBACK_FUNCTION)(
00687   _In_ PVOID CallbackContext,
00688   _In_opt_ PVOID Argument1,
00689   _In_opt_ PVOID Argument2);
00690 typedef EX_CALLBACK_FUNCTION *PEX_CALLBACK_FUNCTION;
00691 
00692 typedef struct _REG_DELETE_KEY_INFORMATION {
00693   PVOID Object;
00694   PVOID CallContext;
00695   PVOID ObjectContext;
00696   PVOID Reserved;
00697 } REG_DELETE_KEY_INFORMATION, *PREG_DELETE_KEY_INFORMATION
00698 #if (NTDDI_VERSION >= NTDDI_VISTA)
00699 , REG_FLUSH_KEY_INFORMATION, *PREG_FLUSH_KEY_INFORMATION
00700 #endif
00701 ;
00702 
00703 typedef struct _REG_SET_VALUE_KEY_INFORMATION {
00704   PVOID Object;
00705   PUNICODE_STRING ValueName;
00706   ULONG TitleIndex;
00707   ULONG Type;
00708   PVOID Data;
00709   ULONG DataSize;
00710   PVOID CallContext;
00711   PVOID ObjectContext;
00712   PVOID Reserved;
00713 } REG_SET_VALUE_KEY_INFORMATION, *PREG_SET_VALUE_KEY_INFORMATION;
00714 
00715 typedef struct _REG_DELETE_VALUE_KEY_INFORMATION {
00716   PVOID Object;
00717   PUNICODE_STRING ValueName;
00718   PVOID CallContext;
00719   PVOID ObjectContext;
00720   PVOID Reserved;
00721 } REG_DELETE_VALUE_KEY_INFORMATION, *PREG_DELETE_VALUE_KEY_INFORMATION;
00722 
00723 typedef struct _REG_SET_INFORMATION_KEY_INFORMATION {
00724   PVOID Object;
00725   KEY_SET_INFORMATION_CLASS KeySetInformationClass;
00726   PVOID KeySetInformation;
00727   ULONG KeySetInformationLength;
00728   PVOID CallContext;
00729   PVOID ObjectContext;
00730   PVOID Reserved;
00731 } REG_SET_INFORMATION_KEY_INFORMATION, *PREG_SET_INFORMATION_KEY_INFORMATION;
00732 
00733 typedef struct _REG_ENUMERATE_KEY_INFORMATION {
00734   PVOID Object;
00735   ULONG Index;
00736   KEY_INFORMATION_CLASS KeyInformationClass;
00737   PVOID KeyInformation;
00738   ULONG Length;
00739   PULONG ResultLength;
00740   PVOID CallContext;
00741   PVOID ObjectContext;
00742   PVOID Reserved;
00743 } REG_ENUMERATE_KEY_INFORMATION, *PREG_ENUMERATE_KEY_INFORMATION;
00744 
00745 typedef struct _REG_ENUMERATE_VALUE_KEY_INFORMATION {
00746   PVOID Object;
00747   ULONG Index;
00748   KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass;
00749   PVOID KeyValueInformation;
00750   ULONG Length;
00751   PULONG ResultLength;
00752   PVOID CallContext;
00753   PVOID ObjectContext;
00754   PVOID Reserved;
00755 } REG_ENUMERATE_VALUE_KEY_INFORMATION, *PREG_ENUMERATE_VALUE_KEY_INFORMATION;
00756 
00757 typedef struct _REG_QUERY_KEY_INFORMATION {
00758   PVOID Object;
00759   KEY_INFORMATION_CLASS KeyInformationClass;
00760   PVOID KeyInformation;
00761   ULONG Length;
00762   PULONG ResultLength;
00763   PVOID CallContext;
00764   PVOID ObjectContext;
00765   PVOID Reserved;
00766 } REG_QUERY_KEY_INFORMATION, *PREG_QUERY_KEY_INFORMATION;
00767 
00768 typedef struct _REG_QUERY_VALUE_KEY_INFORMATION {
00769   PVOID Object;
00770   PUNICODE_STRING ValueName;
00771   KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass;
00772   PVOID KeyValueInformation;
00773   ULONG Length;
00774   PULONG ResultLength;
00775   PVOID CallContext;
00776   PVOID ObjectContext;
00777   PVOID Reserved;
00778 } REG_QUERY_VALUE_KEY_INFORMATION, *PREG_QUERY_VALUE_KEY_INFORMATION;
00779 
00780 typedef struct _REG_QUERY_MULTIPLE_VALUE_KEY_INFORMATION {
00781   PVOID Object;
00782   PKEY_VALUE_ENTRY ValueEntries;
00783   ULONG EntryCount;
00784   PVOID ValueBuffer;
00785   PULONG BufferLength;
00786   PULONG RequiredBufferLength;
00787   PVOID CallContext;
00788   PVOID ObjectContext;
00789   PVOID Reserved;
00790 } REG_QUERY_MULTIPLE_VALUE_KEY_INFORMATION, *PREG_QUERY_MULTIPLE_VALUE_KEY_INFORMATION;
00791 
00792 typedef struct _REG_RENAME_KEY_INFORMATION {
00793   PVOID Object;
00794   PUNICODE_STRING NewName;
00795   PVOID CallContext;
00796   PVOID ObjectContext;
00797   PVOID Reserved;
00798 } REG_RENAME_KEY_INFORMATION, *PREG_RENAME_KEY_INFORMATION;
00799 
00800 typedef struct _REG_CREATE_KEY_INFORMATION {
00801   PUNICODE_STRING CompleteName;
00802   PVOID RootObject;
00803   PVOID ObjectType;
00804   ULONG CreateOptions;
00805   PUNICODE_STRING Class;
00806   PVOID SecurityDescriptor;
00807   PVOID SecurityQualityOfService;
00808   ACCESS_MASK DesiredAccess;
00809   ACCESS_MASK GrantedAccess;
00810   PULONG Disposition;
00811   PVOID *ResultObject;
00812   PVOID CallContext;
00813   PVOID RootObjectContext;
00814   PVOID Transaction;
00815   PVOID Reserved;
00816 } REG_CREATE_KEY_INFORMATION, REG_OPEN_KEY_INFORMATION,*PREG_CREATE_KEY_INFORMATION, *PREG_OPEN_KEY_INFORMATION;
00817 
00818 typedef struct _REG_CREATE_KEY_INFORMATION_V1 {
00819   PUNICODE_STRING CompleteName;
00820   PVOID RootObject;
00821   PVOID ObjectType;
00822   ULONG Options;
00823   PUNICODE_STRING Class;
00824   PVOID SecurityDescriptor;
00825   PVOID SecurityQualityOfService;
00826   ACCESS_MASK DesiredAccess;
00827   ACCESS_MASK GrantedAccess;
00828   PULONG Disposition;
00829   PVOID *ResultObject;
00830   PVOID CallContext;
00831   PVOID RootObjectContext;
00832   PVOID Transaction;
00833   ULONG_PTR Version;
00834   PUNICODE_STRING RemainingName;
00835   ULONG Wow64Flags;
00836   ULONG Attributes;
00837   KPROCESSOR_MODE CheckAccessMode;
00838 } REG_CREATE_KEY_INFORMATION_V1, REG_OPEN_KEY_INFORMATION_V1,*PREG_CREATE_KEY_INFORMATION_V1, *PREG_OPEN_KEY_INFORMATION_V1;
00839 
00840 typedef struct _REG_PRE_CREATE_KEY_INFORMATION {
00841   PUNICODE_STRING CompleteName;
00842 } REG_PRE_CREATE_KEY_INFORMATION, REG_PRE_OPEN_KEY_INFORMATION,*PREG_PRE_CREATE_KEY_INFORMATION, *PREG_PRE_OPEN_KEY_INFORMATION;;
00843 
00844 typedef struct _REG_POST_CREATE_KEY_INFORMATION {
00845   PUNICODE_STRING CompleteName;
00846   PVOID Object;
00847   NTSTATUS Status;
00848 } REG_POST_CREATE_KEY_INFORMATION,REG_POST_OPEN_KEY_INFORMATION, *PREG_POST_CREATE_KEY_INFORMATION, *PREG_POST_OPEN_KEY_INFORMATION;
00849 
00850 typedef struct _REG_POST_OPERATION_INFORMATION {
00851   PVOID Object;
00852   NTSTATUS Status;
00853   PVOID PreInformation;
00854   NTSTATUS ReturnStatus;
00855   PVOID CallContext;
00856   PVOID ObjectContext;
00857   PVOID Reserved;
00858 } REG_POST_OPERATION_INFORMATION,*PREG_POST_OPERATION_INFORMATION;
00859 
00860 typedef struct _REG_KEY_HANDLE_CLOSE_INFORMATION {
00861   PVOID Object;
00862   PVOID CallContext;
00863   PVOID ObjectContext;
00864   PVOID Reserved;
00865 } REG_KEY_HANDLE_CLOSE_INFORMATION, *PREG_KEY_HANDLE_CLOSE_INFORMATION;
00866 
00867 #if (NTDDI_VERSION >= NTDDI_VISTA)
00868 
00869 typedef struct _REG_LOAD_KEY_INFORMATION {
00870   PVOID Object;
00871   PUNICODE_STRING KeyName;
00872   PUNICODE_STRING SourceFile;
00873   ULONG Flags;
00874   PVOID TrustClassObject;
00875   PVOID UserEvent;
00876   ACCESS_MASK DesiredAccess;
00877   PHANDLE RootHandle;
00878   PVOID CallContext;
00879   PVOID ObjectContext;
00880   PVOID Reserved;
00881 } REG_LOAD_KEY_INFORMATION, *PREG_LOAD_KEY_INFORMATION;
00882 
00883 typedef struct _REG_UNLOAD_KEY_INFORMATION {
00884   PVOID Object;
00885   PVOID UserEvent;
00886   PVOID CallContext;
00887   PVOID ObjectContext;
00888   PVOID Reserved;
00889 } REG_UNLOAD_KEY_INFORMATION, *PREG_UNLOAD_KEY_INFORMATION;
00890 
00891 typedef struct _REG_CALLBACK_CONTEXT_CLEANUP_INFORMATION {
00892   PVOID Object;
00893   PVOID ObjectContext;
00894   PVOID Reserved;
00895 } REG_CALLBACK_CONTEXT_CLEANUP_INFORMATION, *PREG_CALLBACK_CONTEXT_CLEANUP_INFORMATION;
00896 
00897 typedef struct _REG_QUERY_KEY_SECURITY_INFORMATION {
00898   PVOID Object;
00899   PSECURITY_INFORMATION SecurityInformation;
00900   PSECURITY_DESCRIPTOR SecurityDescriptor;
00901   PULONG Length;
00902   PVOID CallContext;
00903   PVOID ObjectContext;
00904   PVOID Reserved;
00905 } REG_QUERY_KEY_SECURITY_INFORMATION, *PREG_QUERY_KEY_SECURITY_INFORMATION;
00906 
00907 typedef struct _REG_SET_KEY_SECURITY_INFORMATION {
00908   PVOID Object;
00909   PSECURITY_INFORMATION SecurityInformation;
00910   PSECURITY_DESCRIPTOR SecurityDescriptor;
00911   PVOID CallContext;
00912   PVOID ObjectContext;
00913   PVOID Reserved;
00914 } REG_SET_KEY_SECURITY_INFORMATION, *PREG_SET_KEY_SECURITY_INFORMATION;
00915 
00916 typedef struct _REG_RESTORE_KEY_INFORMATION {
00917   PVOID Object;
00918   HANDLE FileHandle;
00919   ULONG Flags;
00920   PVOID CallContext;
00921   PVOID ObjectContext;
00922   PVOID Reserved;
00923 } REG_RESTORE_KEY_INFORMATION, *PREG_RESTORE_KEY_INFORMATION;
00924 
00925 typedef struct _REG_SAVE_KEY_INFORMATION {
00926   PVOID Object;
00927   HANDLE FileHandle;
00928   ULONG Format;
00929   PVOID CallContext;
00930   PVOID ObjectContext;
00931   PVOID Reserved;
00932 } REG_SAVE_KEY_INFORMATION, *PREG_SAVE_KEY_INFORMATION;
00933 
00934 typedef struct _REG_REPLACE_KEY_INFORMATION {
00935   PVOID Object;
00936   PUNICODE_STRING OldFileName;
00937   PUNICODE_STRING NewFileName;
00938   PVOID CallContext;
00939   PVOID ObjectContext;
00940   PVOID Reserved;
00941 } REG_REPLACE_KEY_INFORMATION, *PREG_REPLACE_KEY_INFORMATION;
00942 
00943 #endif /* NTDDI_VERSION >= NTDDI_VISTA */
00944 
00945 #define SERVICE_KERNEL_DRIVER          0x00000001
00946 #define SERVICE_FILE_SYSTEM_DRIVER     0x00000002
00947 #define SERVICE_ADAPTER                0x00000004
00948 #define SERVICE_RECOGNIZER_DRIVER      0x00000008
00949 
00950 #define SERVICE_DRIVER                 (SERVICE_KERNEL_DRIVER | \
00951                                         SERVICE_FILE_SYSTEM_DRIVER | \
00952                                         SERVICE_RECOGNIZER_DRIVER)
00953 
00954 #define SERVICE_WIN32_OWN_PROCESS      0x00000010
00955 #define SERVICE_WIN32_SHARE_PROCESS    0x00000020
00956 #define SERVICE_WIN32                  (SERVICE_WIN32_OWN_PROCESS | \
00957                                         SERVICE_WIN32_SHARE_PROCESS)
00958 
00959 #define SERVICE_INTERACTIVE_PROCESS    0x00000100
00960 
00961 #define SERVICE_TYPE_ALL               (SERVICE_WIN32  | \
00962                                         SERVICE_ADAPTER | \
00963                                         SERVICE_DRIVER  | \
00964                                         SERVICE_INTERACTIVE_PROCESS)
00965 
00966 /* Service Start Types */
00967 #define SERVICE_BOOT_START             0x00000000
00968 #define SERVICE_SYSTEM_START           0x00000001
00969 #define SERVICE_AUTO_START             0x00000002
00970 #define SERVICE_DEMAND_START           0x00000003
00971 #define SERVICE_DISABLED               0x00000004
00972 
00973 #define SERVICE_ERROR_IGNORE           0x00000000
00974 #define SERVICE_ERROR_NORMAL           0x00000001
00975 #define SERVICE_ERROR_SEVERE           0x00000002
00976 #define SERVICE_ERROR_CRITICAL         0x00000003
00977 
00978 typedef enum _CM_SERVICE_NODE_TYPE {
00979   DriverType = SERVICE_KERNEL_DRIVER,
00980   FileSystemType = SERVICE_FILE_SYSTEM_DRIVER,
00981   Win32ServiceOwnProcess = SERVICE_WIN32_OWN_PROCESS,
00982   Win32ServiceShareProcess = SERVICE_WIN32_SHARE_PROCESS,
00983   AdapterType = SERVICE_ADAPTER,
00984   RecognizerType = SERVICE_RECOGNIZER_DRIVER
00985 } SERVICE_NODE_TYPE;
00986 
00987 typedef enum _CM_SERVICE_LOAD_TYPE {
00988   BootLoad = SERVICE_BOOT_START,
00989   SystemLoad = SERVICE_SYSTEM_START,
00990   AutoLoad = SERVICE_AUTO_START,
00991   DemandLoad = SERVICE_DEMAND_START,
00992   DisableLoad = SERVICE_DISABLED
00993 } SERVICE_LOAD_TYPE;
00994 
00995 typedef enum _CM_ERROR_CONTROL_TYPE {
00996   IgnoreError = SERVICE_ERROR_IGNORE,
00997   NormalError = SERVICE_ERROR_NORMAL,
00998   SevereError = SERVICE_ERROR_SEVERE,
00999   CriticalError = SERVICE_ERROR_CRITICAL
01000 } SERVICE_ERROR_TYPE;
01001 
01002 #define CM_SERVICE_NETWORK_BOOT_LOAD      0x00000001
01003 #define CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD 0x00000002
01004 #define CM_SERVICE_USB_DISK_BOOT_LOAD     0x00000004
01005 
01006 #define CM_SERVICE_VALID_PROMOTION_MASK (CM_SERVICE_NETWORK_BOOT_LOAD |       \
01007                                          CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD |  \
01008                                          CM_SERVICE_USB_DISK_BOOT_LOAD)
01009 
01010 $endif (_WDMDDK_)
01011 $if (_NTDDK_)
01012 typedef struct _KEY_NAME_INFORMATION {
01013   ULONG NameLength;
01014   WCHAR Name[1];
01015 } KEY_NAME_INFORMATION, *PKEY_NAME_INFORMATION;
01016 
01017 typedef struct _KEY_CACHED_INFORMATION {
01018   LARGE_INTEGER LastWriteTime;
01019   ULONG TitleIndex;
01020   ULONG SubKeys;
01021   ULONG MaxNameLen;
01022   ULONG Values;
01023   ULONG MaxValueNameLen;
01024   ULONG MaxValueDataLen;
01025   ULONG NameLength;
01026 } KEY_CACHED_INFORMATION, *PKEY_CACHED_INFORMATION;
01027 
01028 typedef struct _KEY_VIRTUALIZATION_INFORMATION {
01029   ULONG VirtualizationCandidate:1;
01030   ULONG VirtualizationEnabled:1;
01031   ULONG VirtualTarget:1;
01032   ULONG VirtualStore:1;
01033   ULONG VirtualSource:1;
01034   ULONG Reserved:27;
01035 } KEY_VIRTUALIZATION_INFORMATION, *PKEY_VIRTUALIZATION_INFORMATION;
01036 
01037 #define CmResourceTypeMaximum             8
01038 
01039 typedef struct _CM_PCCARD_DEVICE_DATA {
01040   UCHAR Flags;
01041   UCHAR ErrorCode;
01042   USHORT Reserved;
01043   ULONG BusData;
01044   ULONG DeviceId;
01045   ULONG LegacyBaseAddress;
01046   UCHAR IRQMap[16];
01047 } CM_PCCARD_DEVICE_DATA, *PCM_PCCARD_DEVICE_DATA;
01048 
01049 $endif (_NTDDK_)

Generated on Sun May 27 2012 04:30:49 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.