Changes to suit addition of a single macro in the types header.
[reactos.git] / reactos / include / ddk / potypes.h
1 #ifndef __INCLUDE_DDK_POTYPES_H
2 #define __INCLUDE_DDK_POTYPES_H
3
4 struct _DEVICE_OBJECT;
5 struct _IO_STATUS_BLOCK;
6
7 // Flags for PoSetSystemState
8 typedef ULONG EXECUTION_STATE;
9
10 #define ES_SYSTEM_REQUIRED ((EXECUTION_STATE)0x00000001)
11 #define ES_DISPLAY_REQUIRED ((EXECUTION_STATE)0x00000002)
12 #define ES_USER_PRESENT ((EXECUTION_STATE)0x00000004)
13 #define ES_CONTINUOUS ((EXECUTION_STATE)0x80000000)
14
15 // PowerState for PoRequestPowerIrp
16 typedef enum _SYSTEM_POWER_STATE {
17 PowerSystemUnspecified = 0,
18 PowerSystemWorking,
19 PowerSystemSleeping1,
20 PowerSystemSleeping2,
21 PowerSystemSleeping3,
22 PowerSystemHibernate,
23 PowerSystemShutdown,
24 PowerSystemMaximum
25 } SYSTEM_POWER_STATE, *PSYSTEM_POWER_STATE;
26
27 // Values for IRP_MN_QUERY_POWER/IRP_MN_SET_POWER
28 typedef enum {
29 PowerActionNone = 0,
30 PowerActionReserved,
31 PowerActionSleep,
32 PowerActionHibernate,
33 PowerActionShutdown,
34 PowerActionShutdownReset,
35 PowerActionShutdownOff,
36 PowerActionWarmEject
37 } POWER_ACTION, *PPOWER_ACTION;
38
39 // State for PoRegisterDeviceForIdleDetection
40 typedef enum _DEVICE_POWER_STATE {
41 PowerDeviceUnspecified = 0,
42 PowerDeviceD0,
43 PowerDeviceD1,
44 PowerDeviceD2,
45 PowerDeviceD3,
46 PowerDeviceMaximum
47 } DEVICE_POWER_STATE, *PDEVICE_POWER_STATE;
48
49 // State for PoSetPowerState
50 typedef union _POWER_STATE {
51 SYSTEM_POWER_STATE SystemState;
52 DEVICE_POWER_STATE DeviceState;
53 } POWER_STATE, *PPOWER_STATE;
54
55 // Type for PoSetPowerState
56 typedef enum _POWER_STATE_TYPE {
57 SystemPowerState = 0,
58 DevicePowerState
59 } POWER_STATE_TYPE, *PPOWER_STATE_TYPE;
60
61 // CompletionFunction for PoRequestPowerIrp
62 typedef VOID STDCALL_FUNC
63 (*PREQUEST_POWER_COMPLETE) (
64 IN struct _DEVICE_OBJECT *DeviceObject,
65 IN UCHAR MinorFunction,
66 IN POWER_STATE PowerState,
67 IN PVOID Context,
68 IN struct _IO_STATUS_BLOCK *IoStatus);
69
70
71 typedef struct _POWER_SEQUENCE {
72 ULONG SequenceD1;
73 ULONG SequenceD2;
74 ULONG SequenceD3;
75 } POWER_SEQUENCE, *PPOWER_SEQUENCE;
76
77 typedef VOID STDCALL_FUNC (*PINTERFACE_REFERENCE)(PVOID Context);
78 typedef VOID STDCALL_FUNC (*PINTERFACE_DEREFERENCE)(PVOID Context);
79
80 typedef struct _INTERFACE {
81 USHORT Size;
82 USHORT Version;
83 PVOID Context;
84 PINTERFACE_REFERENCE InterfaceReference;
85 PINTERFACE_DEREFERENCE InterfaceDereference;
86 } INTERFACE, *PINTERFACE;
87
88 typedef enum {
89 BusQueryDeviceID = 0,
90 BusQueryHardwareIDs = 1,
91 BusQueryCompatibleIDs = 2,
92 BusQueryInstanceID = 3,
93 BusQueryDeviceSerialNumber = 4
94 } BUS_QUERY_ID_TYPE, *PBUS_QUERY_ID_TYPE;
95
96 typedef enum {
97 DeviceTextDescription = 0,
98 DeviceTextLocationInformation = 1
99 } DEVICE_TEXT_TYPE, *PDEVICE_TEXT_TYPE;
100
101 #endif /* __INCLUDE_DDK_POTYPES_H */