123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- /*++
- Copyright (c) Microsoft Corporation. All rights reserved.
- Module Name:
- cfg.h
- Abstract:
- This module contains the common Configuration Manager definitions for
- both user mode and kernel mode code.
- Author:
- Paula Tomlinson (paulat) 06/19/1995
- Revision History:
- --*/
- #ifndef _CFG_INCLUDED_
- #define _CFG_INCLUDED_
- #if _MSC_VER > 1000
- #pragma once
- #endif
- //
- // The following definitions are also used by kernel mode code to
- // set up the registry.
- //
- //
- // VetoType used in
- // CM_Disable_DevNode
- // CM_Uninstall_DevNode
- // CM_Query_And_Remove_SubTree
- //
- typedef enum _PNP_VETO_TYPE {
- PNP_VetoTypeUnknown, // Name is unspecified
- PNP_VetoLegacyDevice, // Name is an Instance Path
- PNP_VetoPendingClose, // Name is an Instance Path
- PNP_VetoWindowsApp, // Name is a Module
- PNP_VetoWindowsService, // Name is a Service
- PNP_VetoOutstandingOpen, // Name is an Instance Path
- PNP_VetoDevice, // Name is an Instance Path
- PNP_VetoDriver, // Name is a Driver Service Name
- PNP_VetoIllegalDeviceRequest, // Name is an Instance Path
- PNP_VetoInsufficientPower, // Name is unspecified
- PNP_VetoNonDisableable, // Name is an Instance Path
- PNP_VetoLegacyDriver, // Name is a Service
- PNP_VetoInsufficientRights // Name is unspecified
- } PNP_VETO_TYPE, *PPNP_VETO_TYPE;
- //
- // DevInst problem values, returned by call to CM_Get_DevInst_Status
- //
- #define CM_PROB_NOT_CONFIGURED (0x00000001) // no config for device
- #define CM_PROB_DEVLOADER_FAILED (0x00000002) // service load failed
- #define CM_PROB_OUT_OF_MEMORY (0x00000003) // out of memory
- #define CM_PROB_ENTRY_IS_WRONG_TYPE (0x00000004) //
- #define CM_PROB_LACKED_ARBITRATOR (0x00000005) //
- #define CM_PROB_BOOT_CONFIG_CONFLICT (0x00000006) // boot config conflict
- #define CM_PROB_FAILED_FILTER (0x00000007) //
- #define CM_PROB_DEVLOADER_NOT_FOUND (0x00000008) // Devloader not found
- #define CM_PROB_INVALID_DATA (0x00000009) //
- #define CM_PROB_FAILED_START (0x0000000A) //
- #define CM_PROB_LIAR (0x0000000B) //
- #define CM_PROB_NORMAL_CONFLICT (0x0000000C) // config conflict
- #define CM_PROB_NOT_VERIFIED (0x0000000D) //
- #define CM_PROB_NEED_RESTART (0x0000000E) // requires restart
- #define CM_PROB_REENUMERATION (0x0000000F) //
- #define CM_PROB_PARTIAL_LOG_CONF (0x00000010) //
- #define CM_PROB_UNKNOWN_RESOURCE (0x00000011) // unknown res type
- #define CM_PROB_REINSTALL (0x00000012) //
- #define CM_PROB_REGISTRY (0x00000013) //
- #define CM_PROB_VXDLDR (0x00000014) // WINDOWS 95 ONLY
- #define CM_PROB_WILL_BE_REMOVED (0x00000015) // devinst will remove
- #define CM_PROB_DISABLED (0x00000016) // devinst is disabled
- #define CM_PROB_DEVLOADER_NOT_READY (0x00000017) // Devloader not ready
- #define CM_PROB_DEVICE_NOT_THERE (0x00000018) // device doesn't exist
- #define CM_PROB_MOVED (0x00000019) //
- #define CM_PROB_TOO_EARLY (0x0000001A) //
- #define CM_PROB_NO_VALID_LOG_CONF (0x0000001B) // no valid log config
- #define CM_PROB_FAILED_INSTALL (0x0000001C) // install failed
- #define CM_PROB_HARDWARE_DISABLED (0x0000001D) // device disabled
- #define CM_PROB_CANT_SHARE_IRQ (0x0000001E) // can't share IRQ
- #define CM_PROB_FAILED_ADD (0x0000001F) // driver failed add
- #define CM_PROB_DISABLED_SERVICE (0x00000020) // service's Start = 4
- #define CM_PROB_TRANSLATION_FAILED (0x00000021) // resource translation failed
- #define CM_PROB_NO_SOFTCONFIG (0x00000022) // no soft config
- #define CM_PROB_BIOS_TABLE (0x00000023) // device missing in BIOS table
- #define CM_PROB_IRQ_TRANSLATION_FAILED (0x00000024) // IRQ translator failed
- #define CM_PROB_FAILED_DRIVER_ENTRY (0x00000025) // DriverEntry() failed.
- #define CM_PROB_DRIVER_FAILED_PRIOR_UNLOAD (0x00000026) // Driver should have unloaded.
- #define CM_PROB_DRIVER_FAILED_LOAD (0x00000027) // Driver load unsuccessful.
- #define CM_PROB_DRIVER_SERVICE_KEY_INVALID (0x00000028) // Error accessing driver's service key
- #define CM_PROB_LEGACY_SERVICE_NO_DEVICES (0x00000029) // Loaded legacy service created no devices
- #define CM_PROB_DUPLICATE_DEVICE (0x0000002A) // Two devices were discovered with the same name
- #define CM_PROB_FAILED_POST_START (0x0000002B) // The drivers set the device state to failed
- #define CM_PROB_HALTED (0x0000002C) // This device was failed post start via usermode
- #define CM_PROB_PHANTOM (0x0000002D) // The devinst currently exists only in the registry
- #define CM_PROB_SYSTEM_SHUTDOWN (0x0000002E) // The system is shutting down
- #define CM_PROB_HELD_FOR_EJECT (0x0000002F) // The device is offline awaiting removal
- #define CM_PROB_DRIVER_BLOCKED (0x00000030) // One or more drivers is blocked from loading
- #define CM_PROB_REGISTRY_TOO_LARGE (0x00000031) // System hive has grown too large
- #define NUM_CM_PROB (0x00000032)
- //
- // Configuration Manager Global State Flags (returned by CM_Get_Global_State)
- //
- #define CM_GLOBAL_STATE_CAN_DO_UI (0x00000001) // Can do UI?
- #define CM_GLOBAL_STATE_ON_BIG_STACK (0x00000002) // WINDOWS 95 ONLY
- #define CM_GLOBAL_STATE_SERVICES_AVAILABLE (0x00000004) // CM APIs available?
- #define CM_GLOBAL_STATE_SHUTTING_DOWN (0x00000008) // CM shutting down
- #define CM_GLOBAL_STATE_DETECTION_PENDING (0x00000010) // detection pending
- //
- // Device Instance status flags, returned by call to CM_Get_DevInst_Status
- //
- #define DN_ROOT_ENUMERATED (0x00000001) // Was enumerated by ROOT
- #define DN_DRIVER_LOADED (0x00000002) // Has Register_Device_Driver
- #define DN_ENUM_LOADED (0x00000004) // Has Register_Enumerator
- #define DN_STARTED (0x00000008) // Is currently configured
- #define DN_MANUAL (0x00000010) // Manually installed
- #define DN_NEED_TO_ENUM (0x00000020) // May need reenumeration
- #define DN_NOT_FIRST_TIME (0x00000040) // Has received a config
- #define DN_HARDWARE_ENUM (0x00000080) // Enum generates hardware ID
- #define DN_LIAR (0x00000100) // Lied about can reconfig once
- #define DN_HAS_MARK (0x00000200) // Not CM_Create_DevInst lately
- #define DN_HAS_PROBLEM (0x00000400) // Need device installer
- #define DN_FILTERED (0x00000800) // Is filtered
- #define DN_MOVED (0x00001000) // Has been moved
- #define DN_DISABLEABLE (0x00002000) // Can be rebalanced
- #define DN_REMOVABLE (0x00004000) // Can be removed
- #define DN_PRIVATE_PROBLEM (0x00008000) // Has a private problem
- #define DN_MF_PARENT (0x00010000) // Multi function parent
- #define DN_MF_CHILD (0x00020000) // Multi function child
- #define DN_WILL_BE_REMOVED (0x00040000) // DevInst is being removed
- //
- // Windows 4 OPK2 Flags
- //
- #define DN_NOT_FIRST_TIMEE 0x00080000 // S: Has received a config enumerate
- #define DN_STOP_FREE_RES 0x00100000 // S: When child is stopped, free resources
- #define DN_REBAL_CANDIDATE 0x00200000 // S: Don't skip during rebalance
- #define DN_BAD_PARTIAL 0x00400000 // S: This devnode's log_confs do not have same resources
- #define DN_NT_ENUMERATOR 0x00800000 // S: This devnode's is an NT enumerator
- #define DN_NT_DRIVER 0x01000000 // S: This devnode's is an NT driver
- //
- // Windows 4.1 Flags
- //
- #define DN_NEEDS_LOCKING 0x02000000 // S: Devnode need lock resume processing
- #define DN_ARM_WAKEUP 0x04000000 // S: Devnode can be the wakeup device
- #define DN_APM_ENUMERATOR 0x08000000 // S: APM aware enumerator
- #define DN_APM_DRIVER 0x10000000 // S: APM aware driver
- #define DN_SILENT_INSTALL 0x20000000 // S: Silent install
- #define DN_NO_SHOW_IN_DM 0x40000000 // S: No show in device manager
- #define DN_BOOT_LOG_PROB 0x80000000 // S: Had a problem during preassignment of boot log conf
- //
- // Windows NT Flags
- //
- // These are overloaded on top of unused Win 9X flags
- //
- //#define DN_LIAR (0x00000100) // Lied about can reconfig once
- #define DN_NEED_RESTART DN_LIAR // System needs to be restarted for this Devnode to work properly
- // #define DN_NOT_FIRST_TIME (0x00000040) // Has Register_Enumerator
- #define DN_DRIVER_BLOCKED DN_NOT_FIRST_TIME // One or more drivers are blocked from loading for this Devnode
- //#define DN_MOVED (0x00001000) // Has been moved
- #define DN_LEGACY_DRIVER DN_MOVED // This device is using a legacy driver
- //#define DN_HAS_MARK (0x00000200) // Not CM_Create_DevInst lately
- #define DN_CHILD_WITH_INVALID_ID DN_HAS_MARK // One or more children have invalid ID(s)
- #define DN_CHANGEABLE_FLAGS (DN_NOT_FIRST_TIME+\
- DN_HARDWARE_ENUM+\
- DN_HAS_MARK+\
- DN_DISABLEABLE+\
- DN_REMOVABLE+\
- DN_MF_CHILD+\
- DN_MF_PARENT+\
- DN_NOT_FIRST_TIMEE+\
- DN_STOP_FREE_RES+\
- DN_REBAL_CANDIDATE+\
- DN_NT_ENUMERATOR+\
- DN_NT_DRIVER+\
- DN_SILENT_INSTALL+\
- DN_NO_SHOW_IN_DM)
- //
- // Logical configuration Priority values
- //
- // These priority values are used in user-mode calls to CM_Add_Empty_Log_Conf.
- // Drivers may also specify priority values for a given IO_RESOURCE_LIST
- // structure by including a ConfigData member union as the first
- // IO_RESOURCE_DESCRIPTOR in the IO_RESOURCE_LIST. In this case, the descriptor
- // type would be CmResourceTypeConfigData.
- //
- #define LCPRI_FORCECONFIG (0x00000000) // Coming from a forced config
- #define LCPRI_BOOTCONFIG (0x00000001) // Coming from a boot config
- #define LCPRI_DESIRED (0x00002000) // Preferable (better performance)
- #define LCPRI_NORMAL (0x00003000) // Workable (acceptable performance)
- #define LCPRI_LASTBESTCONFIG (0x00003FFF) // CM only--do not use
- #define LCPRI_SUBOPTIMAL (0x00005000) // Not desired, but will work
- #define LCPRI_LASTSOFTCONFIG (0x00007FFF) // CM only--do not use
- #define LCPRI_RESTART (0x00008000) // Need to restart
- #define LCPRI_REBOOT (0x00009000) // Need to reboot
- #define LCPRI_POWEROFF (0x0000A000) // Need to shutdown/power-off
- #define LCPRI_HARDRECONFIG (0x0000C000) // Need to change a jumper
- #define LCPRI_HARDWIRED (0x0000E000) // Cannot be changed
- #define LCPRI_IMPOSSIBLE (0x0000F000) // Impossible configuration
- #define LCPRI_DISABLED (0x0000FFFF) // Disabled configuration
- #define MAX_LCPRI (0x0000FFFF) // Maximum known LC Priority
- #endif // _CFG_INCLUDED_
|