92 PowerState.DeviceState = DevExt->Common.DevicePowerState;
177 if (NewState == DevExt->Common.DevicePowerState)
213 DevExt->Common.DevicePowerState = NewState;
227 INFO(
"CH %lu: Powering up idle device '%s'\n", PortData->PortNumber, DevExt->FriendlyName);
237 ERR(
"CH %lu: Failed to power up device '%s' %lx\n",
238 PortData->PortNumber, DevExt->FriendlyName,
Status);
278 INFO(
"Powering up device, lower driver status %lx\n",
Status);
308 if (NewState < DevExt->Common.DevicePowerState)
323 INFO(
"Powering down device\n");
398 ERR(
"Failed to change power state for device '%s' %lx\n", DevExt->FriendlyName,
Status);
514 Status = PoCallDriver(ChanExt->Common.LowerDeviceObject,
Irp);
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
#define IDE_COMMAND_FLUSH_CACHE_EXT
#define IDE_COMMAND_STANDBY_IMMEDIATE
#define IDE_COMMAND_IDLE_IMMEDIATE
#define QUEUE_FLAG_FROZEN_POWER
DECLSPEC_NOINLINE_FROM_PAGED VOID AtaReqThawQueue(_In_ PATAPORT_DEVICE_EXTENSION DevExt, _In_ ULONG ReasonFlags)
DECLSPEC_NOINLINE_FROM_PAGED VOID AtaDeviceQueueEvent(_In_ PATAPORT_PORT_DATA PortData, _In_opt_ PATAPORT_DEVICE_EXTENSION DevExt, _In_ ATA_PORT_ACTION Action)
NTSTATUS AtaPortSendRequest(_In_ PATAPORT_PORT_DATA PortData, _In_ PATAPORT_DEVICE_EXTENSION DevExt)
DECLSPEC_NOINLINE_FROM_PAGED VOID AtaReqFreezeQueue(_In_ PATAPORT_DEVICE_EXTENSION DevExt, _In_ ULONG ReasonFlags)
static VOID AtaPdoQueuePowerIrp(_In_ PATAPORT_DEVICE_EXTENSION DevExt, _In_ PIRP Irp)
static IO_COMPLETION_ROUTINE AtaPdoPowerUpCompletionRoutine
VOID AtaDeviceFlushPowerIrpQueue(_In_ PATAPORT_DEVICE_EXTENSION DevExt)
static VOID AtaPdoPowerGetDevStateForSysState(_In_ SYSTEM_POWER_STATE SystemState, _Out_ PDEVICE_POWER_STATE DeviceState)
static NTSTATUS AtaDeviceSetStandbyMode(_In_ PATAPORT_PORT_DATA PortData, _In_ PATAPORT_DEVICE_EXTENSION DevExt)
static REQUEST_POWER_COMPLETE AtaPdoPowerSetSysStateWithDevStateComplete
static NTSTATUS AtaDeviceSetIdleMode(_In_ PATAPORT_PORT_DATA PortData, _In_ PATAPORT_DEVICE_EXTENSION DevExt)
NTSTATUS NTAPI AtaDispatchPower(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PIRP Irp)
static VOID AtaDeviceCompletePowerIrp(_In_ PATAPORT_DEVICE_EXTENSION DevExt, _In_ PIRP Irp)
static NTSTATUS AtaPowerCompleteIrp(_In_ PATAPORT_COMMON_EXTENSION CommonExt, _In_ PIRP Irp, _In_ NTSTATUS Status)
static NTSTATUS AtaPdoPowerSetDevicePowerState(_In_ PATAPORT_DEVICE_EXTENSION DevExt, _In_ PIRP Irp)
UCHAR AtaDeviceGetFlushCacheCommand(_In_ PATAPORT_DEVICE_EXTENSION DevExt)
NTSTATUS AtaPortCheckDevicePowerState(_In_ PATAPORT_PORT_DATA PortData, _In_ PATAPORT_DEVICE_EXTENSION DevExt)
static NTSTATUS AtaPdoPowerSetSystemPowerState(_In_ PATAPORT_DEVICE_EXTENSION DevExt, _In_ PIRP Irp)
static NTSTATUS AtaDeviceFlushCache(_In_ PATAPORT_PORT_DATA PortData, _In_ PATAPORT_DEVICE_EXTENSION DevExt)
static NTSTATUS AtaPdoPower(_In_ PATAPORT_DEVICE_EXTENSION DevExt, _Inout_ PIRP Irp)
static NTSTATUS AtaFdoPower(_In_ PATAPORT_CHANNEL_EXTENSION ChanExt, _Inout_ PIRP Irp)
NTSTATUS AtaPortDeviceProcessPowerChange(_In_ PATAPORT_PORT_DATA PortData, _In_ PATAPORT_DEVICE_EXTENSION DevExt)
#define NT_SUCCESS(StatCode)
#define InsertTailList(ListHead, Entry)
#define IsListEmpty(ListHead)
#define KeReleaseSpinLock(sl, irql)
#define KeAcquireSpinLock(sl, irql)
#define RemoveHeadList(ListHead)
FORCEINLINE BOOLEAN AtaDevHasFlushCache(_In_ PIDENTIFY_DEVICE_DATA IdentifyData)
FORCEINLINE BOOLEAN AtaDevHasFlushCacheExt(_In_ PIDENTIFY_DEVICE_DATA IdentifyData)
#define IoSetCompletionRoutine(_Irp, _CompletionRoutine, _Context, _InvokeOnSuccess, _InvokeOnError, _InvokeOnCancel)
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
#define _In_reads_opt_(s)
#define UNREFERENCED_PARAMETER(P)
static OUT PIO_STATUS_BLOCK IoStatusBlock
#define IoSkipCurrentIrpStackLocation(Irp)
#define IoCopyCurrentIrpStackLocationToNext(Irp)
#define IoCompleteRequest
POWER_STATE NTAPI PoSetPowerState(IN PDEVICE_OBJECT DeviceObject, IN POWER_STATE_TYPE Type, IN POWER_STATE State)
VOID NTAPI PoStartNextPowerIrp(IN PIRP Irp)
NTSTATUS NTAPI PoRequestPowerIrp(_In_ PDEVICE_OBJECT DeviceObject, _In_ UCHAR MinorFunction, _In_ POWER_STATE PowerState, _In_opt_ PREQUEST_POWER_COMPLETE CompletionFunction, _In_opt_ __drv_aliasesMem PVOID Context, _Outptr_opt_ PIRP *pIrp)
enum _DEVICE_POWER_STATE * PDEVICE_POWER_STATE
enum _DEVICE_POWER_STATE DEVICE_POWER_STATE
enum _SYSTEM_POWER_STATE SYSTEM_POWER_STATE
#define STATUS_ADAPTER_HARDWARE_ERROR
long _InterlockedOr(_Interlocked_operand_ long volatile *_Value, long _Mask)
#define STATUS_MORE_PROCESSING_REQUIRED
ATAPORT_COMMON_EXTENSION Common
IO_REMOVE_LOCK RemoveLock
SYSTEM_POWER_STATE SystemPowerState
ATAPORT_COMMON_EXTENSION Common
union _IO_STACK_LOCATION::@1696 Parameters
struct _IO_STACK_LOCATION::@4366::@4402 Power
#define RtlZeroMemory(Destination, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_NO_SUCH_DEVICE
#define IDE_COMMAND_FLUSH_CACHE
DEVICE_POWER_STATE DeviceState
_In_ PDEVICE_OBJECT DeviceObject
_In_ WDFDEVICE _Out_ PWDF_DEVICE_STATE DeviceState
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ WDF_DEVICE_POWER_STATE PowerState
_In_ UCHAR _In_ UCHAR MinorFunction
#define IoAcquireRemoveLock(RemoveLock, Tag)
#define IoReleaseRemoveLock(_RemoveLock, _Tag)
#define STATUS_CONTINUE_COMPLETION
_In_ SYSTEM_POWER_STATE SystemPowerState
#define IRP_MN_QUERY_POWER