/*++ Copyright (c) 1997 Microsoft Corporation Module Name: wake.h Abstract: Handles wake code for the entire ACPI subsystem Author: splante (splante) Environment: Kernel mode only. Revision History: 06-18-97: Initial Revision 11-24-97: Rewrite --*/ #ifndef _WAKE_H_ #define _WAKE_H_ // // This structure is used only within this module to ensure that we run // the _PSW methods in a synchronized and well behabed manner // typedef struct _ACPI_WAKE_PSW_CONTEXT { LIST_ENTRY ListEntry; PDEVICE_EXTENSION DeviceExtension; BOOLEAN Enable; ULONG Count; PFNACB CallBack; PVOID Context; } ACPI_WAKE_PSW_CONTEXT, *PACPI_WAKE_PSW_CONTEXT; // // This structure is used when we wake up from hibernate and we need to // re-enable all of the outstanding _PSWs // typedef struct _ACPI_WAKE_RESTORE_PSW_CONTEXT { PACPI_POWER_CALLBACK CallBack; PVOID CallBackContext; } ACPI_WAKE_RESTORE_PSW_CONTEXT, *PACPI_WAKE_RESTORE_PSW_CONTEXT; extern NPAGED_LOOKASIDE_LIST PswContextLookAsideList; extern BOOLEAN PciPmeInterfaceInstantiated; VOID ACPIWakeCompleteRequestQueue( IN PLIST_ENTRY RequestList, IN NTSTATUS Status ); NTSTATUS ACPIWakeDisableAsync( IN PDEVICE_EXTENSION DeviceExtenion, IN PLIST_ENTRY RequestList, IN PFNACB CallBack, IN PVOID Context ); NTSTATUS ACPIWakeEmptyRequestQueue( IN PDEVICE_EXTENSION DeviceExtension ); NTSTATUS ACPIWakeEnableDisableAsync( IN PDEVICE_EXTENSION DeviceExtension, IN BOOLEAN Enable, IN PFNACB CallBack, IN PVOID Context ); VOID EXPORT ACPIWakeEnableDisableAsyncCallBack( IN PNSOBJ AcpiObject, IN NTSTATUS Status, IN POBJDATA ObjData, IN PVOID Context ); VOID ACPIWakeEnableDisablePciDevice( IN PDEVICE_EXTENSION DeviceExtension, IN BOOLEAN Enable ); NTSTATUS ACPIWakeEnableDisableSync( IN PDEVICE_EXTENSION DeviceExtension, IN BOOLEAN Enable ); VOID EXPORT ACPIWakeEnableDisableSyncCallBack( IN PNSOBJ AcpiObject, IN NTSTATUS Status, IN POBJDATA ObjData, IN PVOID Context ); VOID ACPIWakeEnableWakeEvents( VOID ); NTSTATUS ACPIWakeInitializePciDevice( IN PDEVICE_OBJECT DeviceObject ); NTSTATUS ACPIWakeInitializePmeRouting( IN PDEVICE_OBJECT DeviceObject ); VOID ACPIWakeRemoveDevicesAndUpdate( IN PDEVICE_EXTENSION TargetExtension, IN PLIST_ENTRY ListHead ); NTSTATUS ACPIWakeRestoreEnables( IN PACPI_BUILD_CALLBACK CallBack, IN PVOID CallBackContext ); VOID ACPIWakeRestoreEnablesCompletion( IN PDEVICE_EXTENSION DeviceExtension, IN PVOID Context, IN NTSTATUS Status ); NTSTATUS ACPIWakeWaitIrp( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ); #endif