update for HEAD-2003021201
[reactos.git] / 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 */