mirror of
https://github.com/reactos/reactos.git
synced 2025-08-06 06:22:58 +00:00
[WDF] Add Windows Driver Framework files
Takern from Microsoft GitHub repo:
d9c6040fe9
Licensed under MIT
This commit is contained in:
parent
545df81502
commit
8a978a179f
475 changed files with 285099 additions and 0 deletions
197
sdk/lib/drivers/wdf/shared/inc/private/common/fxpoxinterface.hpp
Normal file
197
sdk/lib/drivers/wdf/shared/inc/private/common/fxpoxinterface.hpp
Normal file
|
@ -0,0 +1,197 @@
|
|||
//
|
||||
// Copyright (C) Microsoft. All rights reserved.
|
||||
//
|
||||
#ifndef _FXPOXINTERFACE_H_
|
||||
#define _FXPOXINTERFACE_H_
|
||||
|
||||
#include "FxDevicePwrReqStateMachine.hpp"
|
||||
|
||||
class FxPoxInterface {
|
||||
|
||||
friend class FxDevicePwrRequirementMachine;
|
||||
|
||||
public:
|
||||
FxPoxInterface(
|
||||
__in FxPkgPnp* PkgPnp
|
||||
);
|
||||
|
||||
~FxPoxInterface(
|
||||
VOID
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
CreateDevicePowerRequirementMachine(
|
||||
VOID
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
NotifyDevicePowerDown(
|
||||
VOID
|
||||
);
|
||||
|
||||
|
||||
VOID
|
||||
DeviceIsPoweredOn(
|
||||
VOID
|
||||
);
|
||||
|
||||
FxPkgPnp*
|
||||
PkgPnp(
|
||||
VOID
|
||||
)
|
||||
{
|
||||
return m_PkgPnp;
|
||||
}
|
||||
|
||||
POHANDLE
|
||||
GetPoHandle(
|
||||
VOID
|
||||
)
|
||||
{
|
||||
return m_PoHandle;
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
InitializeComponents(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID
|
||||
UninitializeComponents(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID
|
||||
RequestComponentActive(
|
||||
VOID
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
DeclareComponentIdle(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID
|
||||
UpdateIdleTimeoutHint(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID
|
||||
SimulateDevicePowerRequired(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID
|
||||
SimulateDevicePowerNotRequired(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID
|
||||
PoxReportDevicePoweredOn(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID
|
||||
PowerRequiredCallbackInvoked(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID
|
||||
PowerNotRequiredCallbackInvoked(
|
||||
VOID
|
||||
);
|
||||
|
||||
private:
|
||||
|
||||
NTSTATUS
|
||||
PoxRegisterDevice(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID
|
||||
DprProcessEventFromPoxCallback(
|
||||
__in FxDevicePwrRequirementEvents Event
|
||||
);
|
||||
|
||||
struct _POX_SETTINGS *
|
||||
GetPowerFrameworkSettings(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID
|
||||
PowerRequiredCallbackWorker(
|
||||
__in BOOLEAN InvokedFromPoxCallback
|
||||
);
|
||||
|
||||
VOID
|
||||
PowerNotRequiredCallbackWorker(
|
||||
__in BOOLEAN InvokedFromPoxCallback
|
||||
);
|
||||
|
||||
VOID
|
||||
PoxStartDevicePowerManagement(
|
||||
VOID
|
||||
);
|
||||
|
||||
|
||||
VOID
|
||||
PoxUnregisterDevice(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID
|
||||
PoxActivateComponent(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID
|
||||
PoxIdleComponent(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID
|
||||
PoxSetDeviceIdleTimeout(
|
||||
__in ULONGLONG IdleTimeout
|
||||
);
|
||||
|
||||
static PO_FX_COMPONENT_IDLE_STATE_CALLBACK StateCallback;
|
||||
static PO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK ComponentActiveCallback;
|
||||
static PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK ComponentIdleCallback;
|
||||
static PO_FX_DEVICE_POWER_REQUIRED_CALLBACK PowerRequiredCallback;
|
||||
static PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK PowerNotRequiredCallback;
|
||||
static PO_FX_POWER_CONTROL_CALLBACK PowerControlCallback;
|
||||
|
||||
public:
|
||||
//
|
||||
// Device power requirement state machine
|
||||
//
|
||||
FxDevicePwrRequirementMachine * m_DevicePowerRequirementMachine;
|
||||
|
||||
//
|
||||
// Idle timeout hint to be provided to power framework at the next
|
||||
// opportunity, i.e. a pending update to the idle timeout hint.
|
||||
//
|
||||
ULONG m_NextIdleTimeoutHint;
|
||||
|
||||
private:
|
||||
FxPkgPnp* m_PkgPnp;
|
||||
|
||||
//
|
||||
// Handle obtained upon registration with power manager
|
||||
//
|
||||
POHANDLE m_PoHandle;
|
||||
|
||||
//
|
||||
// Variable that tracks whether device power is required and the lock that
|
||||
// protects this variable
|
||||
//
|
||||
BOOLEAN m_DevicePowerRequired;
|
||||
MxLock m_DevicePowerRequiredLock;
|
||||
|
||||
//
|
||||
// Idle timeout hint currently provided to power framework.
|
||||
//
|
||||
ULONG m_CurrentIdleTimeoutHint;
|
||||
};
|
||||
|
||||
#endif // _FXPOXINTERFACE_H_
|
Loading…
Add table
Add a link
Reference in a new issue