2 /******************************************************************************
3 * Power Management Support Functions *
4 ******************************************************************************/
6 #define PoSetDeviceBusy(IdlePointer) ((void)(*(IdlePointer) = 0))
8 #if (NTDDI_VERSION >= NTDDI_WIN2K)
14 IN
struct _DEVICE_OBJECT
*DeviceObject
,
15 IN OUT
struct _IRP
*Irp
);
20 PoRegisterDeviceForIdleDetection(
21 IN
struct _DEVICE_OBJECT
*DeviceObject
,
22 IN ULONG ConservationIdleTime
,
23 IN ULONG PerformanceIdleTime
,
24 IN DEVICE_POWER_STATE State
);
29 PoRegisterSystemState(
30 IN OUT PVOID StateHandle OPTIONAL
,
31 IN EXECUTION_STATE Flags
);
37 IN
struct _DEVICE_OBJECT
*DeviceObject
,
38 IN UCHAR MinorFunction
,
39 IN POWER_STATE PowerState
,
40 IN PREQUEST_POWER_COMPLETE CompletionFunction OPTIONAL
,
41 IN PVOID Context OPTIONAL
,
42 OUT
struct _IRP
**Irp OPTIONAL
);
48 IN
struct _DEVICE_OBJECT
*DeviceObject
,
49 IN POWER_STATE_TYPE Type
,
50 IN POWER_STATE State
);
56 IN EXECUTION_STATE Flags
);
62 IN OUT
struct _IRP
*Irp
);
67 PoUnregisterSystemState(
68 IN OUT PVOID StateHandle
);
73 PoRequestShutdownEvent(
76 #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
80 #if (NTDDI_VERSION >= NTDDI_WINXP)
84 PoQueueShutdownWorkItem(
85 IN OUT PWORK_QUEUE_ITEM WorkItem
);
89 #if (NTDDI_VERSION >= NTDDI_VISTA)
95 IN OUT
struct _IRP
*Irp
);
101 IN
struct _IRP
*Irp
);
106 PoRegisterPowerSettingCallback(
107 IN PDEVICE_OBJECT DeviceObject OPTIONAL
,
108 IN LPCGUID SettingGuid
,
109 IN PPOWER_SETTING_CALLBACK Callback
,
110 IN PVOID Context OPTIONAL
,
111 OUT PVOID
*Handle OPTIONAL
);
116 PoUnregisterPowerSettingCallback(
117 IN OUT PVOID Handle
);
119 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
121 #if (NTDDI_VERSION >= NTDDI_VISTASP1)
126 IN OUT PULONG IdlePointer
);
127 #endif /* (NTDDI_VERSION >= NTDDI_VISTASP1) */
129 #if (NTDDI_VERSION >= NTDDI_WIN7)
135 IN OUT PULONG IdlePointer
);
141 IN OUT PULONG IdlePointer
);
147 IN PDEVICE_OBJECT Pdo
,
148 OUT PULONG SecondsRemaining
);
153 PoDeletePowerRequest(
154 IN OUT PVOID PowerRequest
);
160 IN OUT PVOID PowerRequest
,
161 IN POWER_REQUEST_TYPE Type
);
167 IN OUT PVOID PowerRequest
,
168 IN POWER_REQUEST_TYPE Type
);
173 PoCreatePowerRequest(
174 OUT PVOID
*PowerRequest
,
175 IN PDEVICE_OBJECT DeviceObject
,
176 IN PCOUNTED_REASON_CONTEXT Context
);
178 #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */