37#if defined(EVENT_TRACING)
38#include "FxPkgPnp.tmh"
45 0xdc7a8e51, 0x49b3, 0x4a3a, { 0x9e, 0x81, 0x62, 0x52, 0x05, 0xe7, 0xd7, 0x29 }
179#if (FX_CORE_MODE==FX_CORE_KERNEL_MODE)
336#if (FX_CORE_MODE==FX_CORE_KERNEL_MODE)
386 "Could not initialize QueryInterfaceLock for "
387 "WDFDEVICE %p, %!STATUS!",
396 "Could not initialize DeviceInterfaceLock for "
397 "WDFDEVICE %p, %!STATUS!",
407#if (FX_CORE_MODE==FX_CORE_USER_MODE)
413 "Could not initialize cleanup event for "
414 "WDFDEVICE %p, %!STATUS!",
423 "Could not initialize remove event for "
424 "WDFDEVICE %p, %!STATUS!",
443#if (FX_CORE_MODE==FX_CORE_KERNEL_MODE)
549#if (FX_CORE_MODE==FX_CORE_KERNEL_MODE)
568 "WDFDEVICE 0x%p !devobj 0x%p, IRP_MJ_PNP, %!pnpmn! IRP 0x%p",
577 "WDFDEVICE 0x%p !devobj 0x%p, IRP_MJ_PNP, %!pnpmn! "
578 "type %!DEVICE_RELATION_TYPE! IRP 0x%p",
588 "WDFDEVICE 0x%p !devobj 0x%p, IRP_MJ_PNP, %!pnpmn! IRP 0x%p",
615 "WDFDEVICE 0x%p !devobj 0x%p IRP_MJ_POWER, %!pwrmn! "
616 "IRP 0x%p for %!SYSTEM_POWER_STATE! (S%d)",
626 "WDFDEVICE 0x%p !devobj 0x%p IRP_MJ_POWER, %!pwrmn! "
627 "IRP 0x%p for %!DEVICE_POWER_STATE!",
638 "WDFDEVICE 0x%p !devobj 0x%p IRP_MJ_POWER, %!pwrmn! IRP 0x%p",
735 PnpDeviceState &= ~PNP_DEVICE_DONT_DISPLAY_IN_UI;
753 return PnpDeviceState;
832 "WDFDEVICE %p, WDFCHILDLIST %p returned %!STATUS! from "
833 "processing bus relations",
887 "WDFDEVICE %p, returning %!STATUS! from processing bus relations",
896 "WDFDEVICE %p returning %d devices in relations %p",
905 if (
i + 3 < pRelations->
Count) {
908 "PDO %p PDO %p PDO %p PDO %p",
915 else if (
i + 2 < pRelations->
Count) {
918 "PDO %p PDO %p PDO %p",
924 else if (
i + 1 < pRelations->
Count) {
965 if (pBusInformation !=
NULL) {
983 "WDFDEVICE %p could not allocate PNP_BUS_INFORMATION string, "
1036 type =
Irp->GetParameterQDRType();
1068 (
List->m_NeedReportMissing == 0 || pPriorRelations !=
NULL)) {
1073 if (pPriorRelations !=
NULL) {
1094 if (pNewRelations ==
NULL) {
1102 if (pPriorRelations !=
NULL) {
1105 for (
i = 0;
i < pPriorRelations->
Count;
i++) {
1110 if (
List->IncrementRetries() < 3) {
1118 "WDFDEVICE %p could not allocate device relations for type %d string, "
1130 if (pPriorRelations !=
NULL && pPriorRelations->
Count > 0) {
1143 pNewRelations->
Count++) {
1146 pdo =
entry->GetDevice();
1162 List->ZeroRetries();
1167 if (pPriorRelations !=
NULL) {
1215 "PnP State Machine init failed, %!STATUS!",
1223 "Power State Machine init failed, %!STATUS!",
1231 "Power Policy State Machine init failed, %!STATUS!",
1299 "WDFDEVICE %p, !devobj %p processing delayed deletion from pnp state "
1345 "Invalid special file type %x",
FileType);
1383 prevStatus =
Irp->GetStatus();
1400 if (pFwdIrp !=
NULL) {
1425 "WDFDEVICE %p could not allocate IRP to send QI to parent !devobj "
1467 if (
Irp->GetParameterQueryInterfaceVersion() == 1 &&
1468 Irp->GetParameterQueryInterfaceSize() >=
1520 const GUID* pInterfaceType;
1525 PVOID pExposedInterfaceSpecificData;
1534 pExposedInterface =
NULL;
1535 pExposedInterfaceSpecificData =
NULL;
1536 sendToParent =
FALSE;
1538 pInterfaceType =
Irp->GetParameterQueryInterfaceType();
1547 else if (
FxIsEqualGuid(pInterfaceType, &GUID_REENUMERATE_SELF_INTERFACE_STANDARD)) {
1549 return ((
FxPkgPdo*)
this)->HandleQueryInterfaceForReenumerate(
1567 pExposedInterface =
Irp->GetParameterQueryInterfaceInterface();
1568 pExposedInterfaceSpecificData =
1569 Irp->GetParameterQueryInterfaceInterfaceSpecificData();
1624 (
LPGUID)
Irp->GetParameterQueryInterfaceType(),
1626 pExposedInterfaceSpecificData);
1661 Irp->CopyCurrentIrpStackLocationToNext();
1666 if (pFound !=
NULL) {
2070#if (FX_CORE_MODE==FX_CORE_USER_MODE)
2099 "WDFDEVICE %p, !devobj %p waiting for pnp state machine to finish",
2107 event->EnterCRAndWaitAndLeave();
2120 "WDFDEVICE %p, !devobj %p waiting for pwr pol state machine to finish",
2123 event->EnterCRAndWaitAndLeave();
2134 "WDFDEVICE %p, !devobj %p waiting for pwr state machine to finish",
2137 event->EnterCRAndWaitAndLeave();
2147 m_DevicePowerRequirementMachine) {
2150 m_DevicePowerRequirementMachine->SetFinished(
event)) {
2154 "WDFDEVICE %p, !devobj %p waiting for device power "
2155 "requirement state machine to finish",
2159 event->EnterCRAndWaitAndLeave();
2299#if (FX_CORE_MODE==FX_CORE_USER_MODE)
2300 MxEvent *
event =
This->m_RemoveEventUm.GetSelfPointer();
2310 This->m_Device->GetRemoveLock(),
2341 "WDFDEVICE %p, !devobj %p waiting for remove event to finish processing",
2342 This->m_Device->GetHandle(),
This->m_Device->GetDeviceObject());
2350 This->m_DeviceRemoveProcessed =
NULL;
2426 return This->DispatchWaitWake(
Irp);
2459 "Received wait wake power irp %p on device %p, but the irp was "
2460 "not requested by the device (the power policy owner)",
2499 "Failing wait wake irp %p with %!STATUS! because wait wake irp "
2500 "%p already pended",
2525 if (
Irp->IsCanceled()) {
2528 "wait wake irp %p already canceled",
Irp->GetIrp());
2534 pRoutine =
Irp->SetCancelRoutine(
NULL);
2536 if (pRoutine !=
NULL) {
2557 Irp->MarkIrpPending();
2598 if (oldIrp ==
NULL) {
2610 Irp->CopyCurrentIrpStackLocationToNext();
2646 "already have a ww irp %p, failing new ww irp %p with %!STATUS!",
2724 Callbacks->EvtDeviceArmWakeFromSxWithReason;
2732 Callbacks->EvtDeviceWakeFromS0Triggered;
2734 Callbacks->EvtDeviceWakeFromSxTriggered;
2804 const LONGLONG negliblySmallIdleTimeout = -1;
2808 overridable =
FALSE;
2829 "If registry value WdfDefaultIdleInWorkingState was present, "
2830 "it was not read because DDI WdfDeviceAssignS0IdleSettings "
2831 "was not called at PASSIVE_LEVEL");
2878 "DeviceWake power state reported in device capabilities "
2879 "%!DEVICE_POWER_STATE! indicates that device can not signal"
2880 " a wake event, %!STATUS!",
2891 if (dxState > dxDeepest) {
2896 "DxState specified by driver %!DEVICE_POWER_STATE! cannot "
2897 "be lighter than lightest available device wake state"
2898 " %!DEVICE_POWER_STATE!, %!STATUS!", dxState,
2912 "DxState specified by driver %!DEVICE_POWER_STATE! cannot "
2913 "be lighter than PowerDeviceD2 for USB selective suspend "
2926 "Failed to initialize USB selective suspend %!STATUS!",
2955 idleTimeout =
Settings->IdleTimeout;
2992 overridable =
FALSE;
3034 m_TimeoutMgmt.UseSystemManagedIdleTimeout(
3047 BOOLEAN currentlyUsingSystemManagedIdleTimeout;
3048 BOOLEAN callerWantsSystemManagedIdleTimeout;
3050 currentlyUsingSystemManagedIdleTimeout =
3052 UsingSystemManagedIdleTimeout();
3053 callerWantsSystemManagedIdleTimeout =
3065 if ((callerWantsSystemManagedIdleTimeout !=
3066 currentlyUsingSystemManagedIdleTimeout)
3074 "A previous call to assign S0-idle policy specified that "
3075 "the idle timeout %s be determined by the power manager. "
3076 "This decision cannot be changed. %!STATUS!",
3077 currentlyUsingSystemManagedIdleTimeout ?
3098 powerUpOnSystemWake =
3100 Settings->PowerUpIdleDeviceOnSystemWake :
3103 switch(powerUpOnSystemWake) {
3108 "Driver turned off S0Idle optimization. Device will be "
3109 "powered up on resume from Sx even when it is idle");
3115 "Driver turned on S0Idle optimization. Device will remain "
3116 "powered off if idle when resuming from Sx");
3132 m_IdleSettings.UsbSSCapabilityKnown =
TRUE;
3137 m_IdleSettings.UsbSSCapabilityKnown =
TRUE;
3166 m_IdleSettings.m_TimeoutMgmt.UsingSystemManagedIdleTimeout()) {
3178 m_PowerIdleMachine.m_PowerTimeout.QuadPart =
3179 negliblySmallIdleTimeout;
3220 enableD3Cold =
TRUE;
3225 "Invalid tri-state value for ExcludeD3Cold %d",
3229 enableD3Cold =
FALSE;
3282 overridable =
FALSE;
3304 "If registry value WdfDefaultWakeFromSleepState was present, "
3305 "it was not read because DDI WdfDeviceAssignSxWakeSettings "
3306 "was not called at PASSIVE_LEVEL");
3345 "DeviceWake power state reported in device capabilities "
3346 "%!DEVICE_POWER_STATE! indicates that device can not signal a "
3347 "wake event, %!STATUS!",
3358 if (dxState > dxDeepest) {
3362 "DxState specified by driver %!DEVICE_POWER_STATE! cannot be"
3363 " lighter than lightest available device wake state "
3364 "%!DEVICE_POWER_STATE!, %!STATUS!", dxState,
3405 overridable =
FALSE;
3420 ArmForWakeIfChildrenAreArmedForWake;
3428 IndicateChildWakeOnParentWake;
3699 "failing system query power because the device cannot wake the "
3764 if (FxWaitLockInternal::IsLockAcquired(
status)) {
3800#if (FX_CORE_MODE == FX_CORE_USER_MODE)
3807 "WdfDeviceFailedAttemptRestart is only available for UMDF 2.15 "
3808 "and later drivers. Reverting to WdfDeviceFailedNoRestart.");
3831#if (FX_CORE_MODE == FX_CORE_KERNEL_MODE)
3862 return This->PnpDeviceUsageNotification(
Irp);
3885 "Entering DeviceUsageNotification handler");
3889 type =
Irp->GetParameterUsageNotificationType();
3890 inPath =
Irp->GetParameterUsageNotificationInPath();
3895 "type %x, in path %x, can support paging %x, dump file %x, "
3896 "hiber file %x, boot file %x",
3925 if (supported ==
FALSE) {
3930 "Usage type %x not supported, %!STATUS!",
type,
status);
3949 "WDFDEVICE %p !devobj %p could not allocate workitem "
3950 "to send usage notification type %d, inpath %d, %!STATUS!",
3983 if (pNewIrp !=
NULL) {
3984 parentIrp.
SetIrp(pNewIrp);
4002 "WDFDEVICE %p could not allocate PIRP for parent !devobj %p to "
4003 "send usage notification type %d, inpath %d, %!STATUS!",
4012 "Exit %!STATUS!",
status);
4096 if (pNewIrp ==
NULL) {
4101 "WDFDEVICE %p could not allocate IRP to send usage notifications"
4102 " to related stacks, type %d, inpath %d, status %!STATUS!",
4111 relatedIrp.SetIrp(pNewIrp);
4138 pDependent2 != pDependent) {
4167 BOOLEAN referenceSucceeded, sendDown;
4169 referenceSucceeded =
FALSE;
4181 referenceSucceeded =
TRUE;
4261 Irp->CopyCurrentIrpStackLocationToNext();
4262 Irp->SetParameterUsageNotificationInPath(
FALSE);
4385 Irp->CopyCurrentIrpStackLocationToNext();
4386 Irp->SetParameterUsageNotificationInPath(
FALSE);
4476 if (referenceSucceeded) {
4491 "Exit %!STATUS!",
status);
4522 ULONG oldFlags, newFlags;
4531 "Before: type %d, in path %d, special count %d, flags 0x%x, "
4532 "device %p (WDFDEVICE %p), is pageable capable %d",
4678 "After: special count %d, flags 0x%x, device %p (WDFDEVICE %p)",
4707 "Could not allocate usage device list for WDFDEVICE %p, "
4728 if (pRelated ==
NULL) {
4775 "Could not allocate removal device list for WDFDEVICE %p, "
4794 if (pRelated ==
NULL) {
4898 "A new state changing pnp irp %!pnpmn! IRP %p arrived while another "
4899 "pnp irp %!pnpmn! IRP %p is still pending WDFDEVICE %p\n",
4900 Irp->GetMinorFunction(),
Irp->GetIrp(),
4912 if (MarkIrpPending) {
4913 Irp->MarkIrpPending();
4944 "Could not initialize enum info for "
4945 "WDFDEVICE %p, %!STATUS!",
4954 "Could not allocate enum info for WDFDEVICE %p, "
4975 "Adding FxChildList %p, WDFCHILDLIST %p",
List,
4979 &
List->m_TransactionLink);
4988 "Removing FxChildList %p, WDFCHILDLIST %p",
List,
5106 "The driver failed to return from a callback routine "
5107 "in a reasonable period of time. This prevented the "
5108 "machine from going to sleep or from hibernating. The "
5109 "machine crashed because that was the best way to get "
5110 "data about the cause of the crash into a minidump file.");
5251 else if (hadThread) {
5372 m_PowerIdleMachine.PowerReferenceWithFlags(
5423 Irp->StartNextPowerIrp();
5860 if (UseCanSaveState &&
5864 "Not saving wake settings for WDFDEVICE %p due to system power "
5896#if ((FX_CORE_MODE)==(FX_CORE_KERNEL_MODE))
6028 intListEntry = intListEntry->
Flink;
6093 "WDFINTERRUPT %p failed to connect, %!STATUS!",
6150 "WDFINTERRUPT %p failed to disconnect, %!STATUS!",
6236 ProcessPowerEventOnDifferentThread
6485 "SystemWake %!SYSTEM_POWER_STATE! and DeviceWake "
6486 "%!DEVICE_POWER_STATE! power state reported in device "
6487 "capabilities do not support wake. Both the SystemWake and "
6488 "DeviceWake members should be nonzero to support wake-up on "
#define InterlockedIncrement
#define InterlockedDecrement
const struct winhelp_callbacks Callbacks
VOID NotifyDeviceRemove(__inout PLONG ChildCount)
static FxChildList * _FromEntry(__in FxTransactionedEntry *Entry)
WDFCHILDLIST GetHandle(VOID)
VOID InvokeReportedMissingCallback(VOID)
static size_t _ComputeRelationsSize(__in ULONG Count)
_Must_inspect_result_ NTSTATUS ProcessBusRelations(__inout PDEVICE_RELATIONS *DeviceRelations)
static _Must_inspect_result_ NTSTATUS _CreateAndInit(__in FxCmResList **ResourceList, __in PFX_DRIVER_GLOBALS FxDriverGlobals, __in CfxDevice *Device, __in_opt PWDF_OBJECT_ATTRIBUTES ListAttributes, __in UCHAR AccessFlags)
__inline MxDeviceObject * GetMxDeviceObject(VOID)
ULONG __inline GetDeviceObjectFlags(VOID)
VOID __inline SetDeviceObjectFlags(_In_ ULONG Flags)
MdDeviceObject __inline GetPhysicalDevice(VOID)
WDFDEVICE __inline GetHandle(VOID)
MdDeviceObject __inline GetAttachedDevice(VOID)
__inline MdDeviceObject GetAttachedDeviceReference(VOID)
ULONG __inline GetAttachedDeviceObjectFlags(VOID)
MdDeviceObject __inline GetDeviceObject(VOID)
static FxDeviceInterface * _FromEntry(__in PSINGLE_LIST_ENTRY Entry)
SINGLE_LIST_ENTRY m_Entry
PFN_WDF_DEVICE_PROCESS_QUERY_INTERFACE_REQUEST m_Method
CfxDevice * m_ParentDevice
virtual VOID DeleteObject(VOID)
__inline WDF_DEVICE_POWER_POLICY_STATE GetDevicePowerPolicyState()
MdDeviceObject __inline GetSafePhysicalDevice(VOID)
__inline BOOLEAN IsPdo(VOID)
_Must_inspect_result_ NTSTATUS OpenSettingsKey(__out HANDLE *Key, __in ACCESS_MASK DesiredAccess=STANDARD_RIGHTS_ALL)
MdRemoveLock GetRemoveLock(VOID)
__inline WDF_DEVICE_POWER_STATE GetDevicePowerState()
__inline BOOLEAN IsFilter()
__inline WDF_DEVICE_PNP_STATE GetDevicePnpState()
__inline BOOLEAN IsPowerPageableCapable(VOID)
__inline BOOLEAN IsFdo(VOID)
_Must_inspect_result_ NTSTATUS Connect(__in ULONG NotifyFlags)
__inline BOOLEAN IsWakeCapable(VOID)
VOID ProcessWakeInterruptEvent(__in FxWakeInterruptEvents Event)
_Must_inspect_result_ NTSTATUS Disconnect(__in ULONG NotifyFlags)
VOID RevokeResources(VOID)
WDFINTERRUPT GetHandle(VOID)
UCHAR GetMajorFunction(VOID)
DEVICE_RELATION_TYPE GetParameterQDRType()
static _Must_inspect_result_ MdIrp AllocateIrp(_In_ CCHAR StackSize, _In_opt_ FxDevice *Device=NULL)
POWER_STATE_TYPE GetParameterPowerType()
SYSTEM_POWER_STATE GetParameterPowerStateSystemState()
DEVICE_POWER_STATE GetParameterPowerStateDeviceState()
UCHAR GetMinorFunction(VOID)
ULONG_PTR GetInformation()
virtual VOID DeleteObject(VOID)
__inline PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
__drv_restoresIRQL KIRQL __in BOOLEAN Unlock
virtual BOOLEAN Dispose(VOID)
VOID DeleteFromFailedCreate(VOID)
VOID MarkDisposeOverride(__in FxObjectLockState State=ObjectLock)
_Must_inspect_result_ NTSTATUS Commit(__in_opt PWDF_OBJECT_ATTRIBUTES Attributes, __out_opt WDFOBJECT *ObjectHandle, __in_opt FxObject *Parent=NULL, __in BOOLEAN AssignDriverAsDefaultParent=TRUE)
__inline CfxDevice * GetDevice(VOID)
static WDF_SPECIAL_FILE_TYPE _UsageToSpecialType(__in DEVICE_USAGE_NOTIFICATION_TYPE Type)
VOID SetInternalFailure(VOID)
VOID AddInterruptObject(__in FxInterrupt *Interrupt)
static MdCancelRoutineType _PowerWaitWakeCancelRoutine
VOID RemoveUsageDevice(__in MdDeviceObject DependentDevice)
FxPnpStateCallback * m_PnpStateCallbacks
FxCmResList * m_Resources
VOID ProcessDelayedDeletion(VOID)
_Must_inspect_result_ NTSTATUS AllocateEnumInfo(VOID)
FxPnpDeviceUsageNotificationEx m_DeviceUsageNotificationEx
static _Must_inspect_result_ NTSTATUS _PnpCancelRemoveDevice(__inout FxPkgPnp *This, __inout FxIrp *Irp)
VOID ChildListNotifyRemove(__inout PLONG PendingCount)
VOID AddQueryInterface(__in FxQueryInterface *QI, __in BOOLEAN Lock)
VOID RegisterPowerPolicyCallbacks(__in PWDF_POWER_POLICY_EVENT_CALLBACKS Callbacks)
PFN_IO_REPORT_INTERRUPT_INACTIVE m_IoReportInterruptInactive
_Must_inspect_result_ NTSTATUS QueryForCapabilities(VOID)
static _Must_inspect_result_ NTSTATUS _PnpRemoveDevice(__inout FxPkgPnp *This, __inout FxIrp *Irp)
FxSystemThread * m_PowerThread
_Must_inspect_result_ NTSTATUS HandleQueryBusInformation(__inout FxIrp *Irp)
static VOID STDCALL _PowerThreadInterfaceDereference(__inout PVOID Context)
virtual VOID ReleaseReenumerationInterface(VOID)=0
ULONG m_InterruptObjectCount
_Must_inspect_result_ NTSTATUS CreatePowerThread(VOID)
SINGLE_LIST_ENTRY m_DeviceInterfaceHead
FxWaitLockInternal m_QueryInterfaceLock
FxSelfManagedIoMachine * m_SelfManagedIoMachine
_Must_inspect_result_ NTSTATUS PnpPowerReferenceDuringQueryPnp(VOID)
LONG m_SpecialFileCount[WdfSpecialFileMax-1]
_Must_inspect_result_ NTSTATUS PnpDeviceUsageNotification(__inout FxIrp *Irp)
FxCmResList * m_ResourcesRaw
PNP_BUS_INFORMATION m_BusInformation
FxRelatedDeviceList * m_UsageDependentDeviceList
PFN_IO_DISCONNECT_INTERRUPT_EX m_IoDisconnectInterruptEx
static NTSTATUS _SxWakeSetItem(__in CfxDevice *Device, __in FxWmiInstanceInternal *Instance, __in ULONG DataItemId, __in ULONG InBufferSize, __in PVOID InBuffer)
FxPowerStateCallback * m_PowerStateCallbacks
BOOLEAN m_ReleaseHardwareAfterDescendantsOnFailure
static VOID STDCALL _PowerThreadInterfaceReference(__inout PVOID Context)
FxPowerMachine m_PowerMachine
LONG m_PowerThreadInterfaceReferenceCount
FxPnpDeviceD0Exit m_DeviceD0Exit
UCHAR m_SystemPowerAction
_Must_inspect_result_ NTSTATUS __inline PowerReference(__in BOOLEAN WaitForD0, __in_opt PVOID Tag=NULL, __in_opt LONG Line=0, __in_opt PSTR File=NULL)
VOID PowerProcessEvent(__in FxPowerEvent Event, __in BOOLEAN ProcessEventOnDifferentThread=FALSE)
FxWaitLockInternal m_DeviceInterfaceLock
FxPnpDeviceQueryRemove m_DeviceQueryRemove
ULONG SetUsageNotificationFlags(__in DEVICE_USAGE_NOTIFICATION_TYPE Type, __in BOOLEAN InPath)
BYTE m_SetDeviceRemoveProcessed
static _Must_inspect_result_ NTSTATUS _PnpQueryRemoveDevice(__inout FxPkgPnp *This, __inout FxIrp *Irp)
FxEnumerationInfo * m_EnumInfo
VOID ReleasePowerThread(VOID)
ULONG PowerPolicyGetCurrentWakeReason(VOID)
virtual _Must_inspect_result_ NTSTATUS Initialize(__in PWDFDEVICE_INIT DeviceInit)
_Must_inspect_result_ NTSTATUS AddUsageDevice(__in MdDeviceObject DependentDevice)
_Must_inspect_result_ NTSTATUS HandleQueryInterfaceForPowerThread(__inout FxIrp *Irp, __out PBOOLEAN CompleteRequest)
VOID SetPowerCaps(__in PWDF_DEVICE_POWER_CAPABILITIES PowerCapabilities)
BOOLEAN m_InternalFailure
static VOID _SetPowerCapState(__in ULONG Index, __in DEVICE_POWER_STATE State, __out PULONG Result)
static VOID _PowerProcessEventInner(__in FxPkgPnp *This, __in FxPostProcessInfo *Info, __in PVOID WorkerContext)
VOID SetUsageSupport(__in DEVICE_USAGE_NOTIFICATION_TYPE Usage, __in BOOLEAN Supported)
BOOLEAN IsDevicePowerUpIrpPending(VOID)
MxEvent * m_DeviceRemoveProcessed
virtual _Must_inspect_result_ NTSTATUS Dispatch(__in MdIrp Irp)
virtual const PFN_PNP_POWER_CALLBACK * GetDispatchPower(VOID)=0
static NTSTATUS _S0IdleQueryInstance(__in CfxDevice *Device, __in FxWmiInstanceInternal *Instance, __in ULONG OutBufferSize, __out PVOID OutBuffer, __out PULONG BufferUsed)
_Must_inspect_result_ NTSTATUS HandleQueryDeviceRelations(__inout FxIrp *Irp, __inout FxRelatedDeviceList *List)
BOOLEAN PowerPolicyCanWakeFromSystemState(__in SYSTEM_POWER_STATE SystemState)
virtual const PFN_PNP_POWER_CALLBACK * GetDispatchPnp(VOID)=0
BOOLEAN IsUsageSupported(__in DEVICE_USAGE_NOTIFICATION_TYPE Usage)
NTSTATUS NotifyResourceObjectsDx(__in ULONG NotifyFlags)
POWER_THREAD_INTERFACE m_PowerThreadInterface
VOID RevokeDmaEnablerResources(__in FxDmaEnabler *Enabler)
BYTE m_DevicePowerStateOld
LONG AdjustUsageCount(__in DEVICE_USAGE_NOTIFICATION_TYPE Usage, __in BOOLEAN Add)
PFN_IO_REPORT_INTERRUPT_ACTIVE m_IoReportInterruptActive
static NTSTATUS _SxWakeQueryInstance(__in CfxDevice *Device, __in FxWmiInstanceInternal *Instaace, __in ULONG OutBufferSize, __out PVOID OutBuffer, __out PULONG BufferUsed)
FxCREvent * m_PowerThreadEvent
FxPowerPolicyStateCallback * m_PowerPolicyStateCallbacks
_Must_inspect_result_ NTSTATUS PostCreateDeviceInitialize(VOID)
virtual NTSTATUS QueryForPowerThread(VOID)=0
FxPnpMachine m_PnpMachine
SINGLE_LIST_ENTRY m_QueryInterfaceHead
static _Must_inspect_result_ NTSTATUS _PnpCancelStopDevice(__inout FxPkgPnp *This, __inout FxIrp *Irp)
static DEVICE_USAGE_NOTIFICATION_TYPE _SpecialTypeToUsage(__in WDF_SPECIAL_FILE_TYPE Type)
_Must_inspect_result_ NTSTATUS PowerPolicyHandleSystemQueryPower(__in SYSTEM_POWER_STATE QueryState)
VOID ReadRegistrySxWake(__in PCUNICODE_STRING ValueName, __out BOOLEAN *Enabled)
FxPnpDeviceD0Entry m_DeviceD0Entry
FxSpinLockTransactionedList * m_DmaEnablerList
DEVICE_POWER_STATE PowerPolicyGetDeviceDeepestDeviceWakeState(__in SYSTEM_POWER_STATE SystemState)
VOID NotifyResourceobjectsToReleaseResources(VOID)
VOID SetPnpCaps(__in PWDF_DEVICE_PNP_CAPABILITIES PnpCapabilities)
VOID SaveState(__in BOOLEAN UseCanSaveState)
VOID CommitUsageNotification(__in DEVICE_USAGE_NOTIFICATION_TYPE Type, __in ULONG OldFlags)
virtual NTSTATUS AskParentToRemoveAndReenumerate(VOID)=0
VOID AddChildList(__in FxChildList *List)
MdIrp m_PendingSystemPowerIrp
LONG GetPnpCapsInternal(VOID)
static _Must_inspect_result_ NTSTATUS _PnpStopDevice(__inout FxPkgPnp *This, __inout FxIrp *Irp)
BOOLEAN m_SpecialSupport[WdfSpecialFileMax-1]
BOOLEAN PowerPolicyIsWakeEnabled(VOID)
VOID RemoveInterruptObject(__in FxInterrupt *Interrupt)
static _Must_inspect_result_ NTSTATUS _PnpQueryStopDevice(__inout FxPkgPnp *This, __inout FxIrp *Irp)
LONG GetPnpStateInternal(VOID)
VOID CleanupStateMachines(__in BOOLEAN ClenaupPnp)
FxPkgPnp(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in CfxDevice *Device, __in WDFTYPE Type)
VOID __inline PowerDereference(__in_opt PVOID Tag=NULL, __in_opt LONG Line=0, __in_opt PSTR File=NULL)
VOID SetSpecialFileSupport(__in WDF_SPECIAL_FILE_TYPE FileType, __in BOOLEAN Supported)
VOID GetPnpState(__out PWDF_DEVICE_STATE State)
VOID PnpPowerDereferenceSelf(VOID)
_Must_inspect_result_ NTSTATUS AddRemovalDevice(__in MdDeviceObject DependentDevice)
static NTSTATUS _S0IdleSetItem(__in CfxDevice *Device, __in FxWmiInstanceInternal *Instance, __in ULONG DataItemId, __in ULONG InBufferSize, __in PVOID InBuffer)
_Must_inspect_result_ NTSTATUS HandleQueryBusRelations(__inout FxIrp *Irp)
LONG GetUsageCount(__in __range(1, 4) ULONG Usage)
FxPnpDeviceQueryStop m_DeviceQueryStop
VOID RemoveChildList(__in FxChildList *List)
static VOID _PnpProcessEventInner(__inout FxPkgPnp *This, __inout FxPostProcessInfo *Info, __in PVOID WorkerContext)
static VOID _PowerThreadEnqueue(__in PVOID Context, __in PWORK_QUEUE_ITEM WorkItem)
BOOLEAN m_WakeInterruptsKeepConnected
static NTSTATUS _S0IdleSetInstance(__in CfxDevice *Device, __in FxWmiInstanceInternal *Instance, __in ULONG InBufferSize, __in PVOID InBuffer)
VOID PowerPolicySetSxWakeState(__in BOOLEAN State)
NTSTATUS PowerPolicySetS0IdleSettings(__in PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Settings)
static NTSTATUS _SxWakeSetInstance(__in CfxDevice *Device, __in FxWmiInstanceInternal *Instance, __in ULONG InBufferSize, __in PVOID InBuffer)
VOID AckPendingWakeInterruptOperation(__in BOOLEAN ProcessPowerEventOnDifferentThread)
static const GUID GUID_POWER_THREAD_INTERFACE
FxPnpDeviceReleaseHardware m_DeviceReleaseHardware
SharedPowerData m_SharedPower
VOID RemoveRemovalDevice(__in MdDeviceObject DependentDevice)
FxPnpDeviceUsageNotification m_DeviceUsageNotification
_Must_inspect_result_ NTSTATUS NotifyResourceObjectsD0(__in ULONG NotifyFlags)
NTSTATUS RegisterPowerPolicyWmiInstance(__in const GUID *Guid, __in FxWmiInstanceInternalCallbacks *Callbacks, __out FxWmiInstanceInternal **Instance)
VOID SetPnpState(__in PWDF_DEVICE_STATE State)
FxPnpDevicePrepareHardware m_DevicePrepareHardware
ULONG m_WakeInterruptCount
_Must_inspect_result_ NTSTATUS DispatchWaitWake(__inout FxIrp *Irp)
virtual BOOLEAN Dispose(VOID)
VOID ReadRegistryS0Idle(__in PCUNICODE_STRING ValueName, __out BOOLEAN *Enabled)
VOID PnpProcessEvent(__in FxPnpEvent Event, __in BOOLEAN ProcessEventOnDifferentThread=FALSE)
LIST_ENTRY m_InterruptListHead
FxPnpDeviceD0ExitPreInterruptsDisabled m_DeviceD0ExitPreInterruptsDisabled
_Must_inspect_result_ NTSTATUS PnpPowerReferenceSelf(VOID)
FxPnpDeviceSurpriseRemoval m_DeviceSurpriseRemoval
static VOID _PowerPolicyProcessEventInner(__inout FxPkgPnp *This, __inout FxPostProcessInfo *Info, __in PVOID WorkerContext)
BOOLEAN HasPowerThread(VOID)
VOID CleanupDeviceFromFailedCreate(__in MxEvent *WaitEvent)
FxPnpStateAndCaps m_PnpStateAndCaps
NTSTATUS AssignPowerFrameworkSettings(__in PWDF_POWER_FRAMEWORK_SETTINGS PowerFrameworkSettings)
NTSTATUS CompletePowerRequest(__inout FxIrp *Irp, __in NTSTATUS Status)
VOID RevertUsageNotificationFlags(__in DEVICE_USAGE_NOTIFICATION_TYPE Type, __in BOOLEAN InPath, __in ULONG OldFlags)
friend FxPowerPolicyOwnerSettings
FxRelatedDeviceList * m_RemovalDeviceList
VOID SetPendingPnpIrp(__inout FxIrp *Irp, __in BOOLEAN MarkIrpPending=TRUE)
BOOLEAN m_DeviceInterfacesCanBeEnabled
static _Must_inspect_result_ NTSTATUS _PnpStartDevice(__inout FxPkgPnp *This, __inout FxIrp *Irp)
VOID QueryForD3ColdInterface(VOID)
FxPowerPolicyMachine m_PowerPolicyMachine
BOOLEAN IsInSpecialUse(VOID)
NTSTATUS CompletePnpRequest(__inout FxIrp *Irp, __in NTSTATUS Status)
BYTE m_DeviceWake[DeviceWakeStates]
VOID SetDeviceFailed(__in WDF_DEVICE_FAILED_ACTION FailedAction)
static DEVICE_POWER_STATE _GetPowerCapState(__in ULONG Index, __in ULONG State)
VOID PowerPolicySetS0IdleState(__in BOOLEAN State)
FxPnpDeviceD0EntryPostInterruptsEnabled m_DeviceD0EntryPostInterruptsEnabled
VOID SendEventToAllWakeInterrupts(__in enum FxWakeInterruptEvents WakeInterruptEvent)
virtual VOID FinishInitialize(__inout PWDFDEVICE_INIT DeviceInit)
ULONG m_WakeInterruptPendingAckCount
virtual NTSTATUS SendIrpSynchronously(FxIrp *Irp)=0
FxCREvent m_CleanupEventUm
VOID ClearRemovalDevicesList(VOID)
NTSTATUS PowerPolicySetSxWakeSettings(__in PWDF_DEVICE_POWER_POLICY_WAKE_SETTINGS Settings, __in BOOLEAN ArmForWakeIfChildrenAreArmedForWake, __in BOOLEAN IndicateChildWakeOnParentWake)
PNP_DEVICE_STATE HandleQueryPnpDeviceState(__in PNP_DEVICE_STATE PnpDeviceState)
_Must_inspect_result_ NTSTATUS HandleQueryInterface(__inout FxIrp *Irp, __out PBOOLEAN CompleteRequest)
static _Must_inspect_result_ NTSTATUS _DispatchWaitWake(__inout FxPkgPnp *This, __inout FxIrp *Irp)
static _Must_inspect_result_ NTSTATUS _PnpDeviceUsageNotification(__inout FxPkgPnp *This, __inout FxIrp *Irp)
PFN_IO_CONNECT_INTERRUPT_EX m_IoConnectInterruptEx
MdIrp m_PendingDevicePowerIrp
virtual NTSTATUS FireAndForgetIrp(FxIrp *Irp)=0
_Must_inspect_result_ NTSTATUS PnpSurpriseRemoval(__inout FxIrp *Irp)
_Must_inspect_result_ NTSTATUS RegisterCallbacks(__in PWDF_PNPPOWER_EVENT_CALLBACKS DispatchTable)
D3COLD_SUPPORT_INTERFACE m_D3ColdInterface
VOID WriteStateToRegistry(__in HANDLE RegKey, __in PUNICODE_STRING ValueName, __in ULONG Value)
VOID DropD3ColdInterface(VOID)
FxPnpDeviceRelationsQuery m_DeviceRelationsQuery
static MdCompletionRoutineType _PowerPolicyWaitWakeCompletionRoutine
BOOLEAN m_SystemWokenByWakeInterrupt
VOID PowerPolicyProcessEvent(__in FxPowerPolicyEvent Event, __in BOOLEAN ProcessEventOnDifferentThread=FALSE)
PFN_WDF_DEVICE_D0_ENTRY_POST_INTERRUPTS_ENABLED m_Method
PFN_WDF_DEVICE_D0_ENTRY m_Method
PFN_WDF_DEVICE_D0_EXIT_PRE_INTERRUPTS_DISABLED m_Method
PFN_WDF_DEVICE_D0_EXIT m_Method
PFN_WDF_DEVICE_PREPARE_HARDWARE m_Method
PFN_WDF_DEVICE_QUERY_REMOVE m_Method
PFN_WDF_DEVICE_QUERY_STOP m_Method
PFN_WDF_DEVICE_RELATIONS_QUERY m_Method
VOID Invoke(__in WDFDEVICE Device, __in DEVICE_RELATION_TYPE RelationType)
PFN_WDF_DEVICE_RELEASE_HARDWARE m_Method
PFN_WDF_DEVICE_SURPRISE_REMOVAL m_Method
PFN_WDF_DEVICE_USAGE_NOTIFICATION_EX m_Method
_Must_inspect_result_ NTSTATUS Invoke(__in WDFDEVICE Device, __in WDF_SPECIAL_FILE_TYPE NotificationType, __in BOOLEAN InPath)
VOID Invoke(__in WDFDEVICE Device, __in WDF_SPECIAL_FILE_TYPE NotificationType, __in BOOLEAN InPath)
PFN_WDF_DEVICE_USAGE_NOTIFICATION m_Method
PFN_WDF_DEVICE_ARM_WAKE_FROM_S0 m_Method
PFN_WDF_DEVICE_ARM_WAKE_FROM_SX m_Method
PFN_WDF_DEVICE_ARM_WAKE_FROM_SX_WITH_REASON m_MethodWithReason
PFN_WDF_DEVICE_DISARM_WAKE_FROM_S0 m_Method
PFN_WDF_DEVICE_DISARM_WAKE_FROM_SX m_Method
PFN_WDF_DEVICE_WAKE_FROM_S0_TRIGGERED m_Method
PFN_WDF_DEVICE_WAKE_FROM_SX_TRIGGERED m_Method
LARGE_INTEGER m_PowerTimeout
ULONG m_NextIdleTimeoutHint
VOID InitializeMachine(__in PWDF_PNPPOWER_EVENT_CALLBACKS Callbacks)
static NTSTATUS _CreateAndInit(__deref_out FxSelfManagedIoMachine **SelfManagedIoMachine, __in FxPkgPnp *PkgPnp)
static _Must_inspect_result_ NTSTATUS _CreateAndInit(__deref_out FxSystemThread **SystemThread, __in PFX_DRIVER_GLOBALS FxDriverGlobals, __in WDFDEVICE Device, __in MdDeviceObject DeviceObject)
_Must_inspect_result_ FxTransactionedEntry * GetNextEntry(__in_opt FxTransactionedEntry *Entry)
VOID UnlockFromEnum(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
NTSTATUS Add(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in FxTransactionedEntry *Entry)
VOID LockForEnum(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
VOID Remove(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in FxTransactionedEntry *Entry)
CHECK_RETURN_IF_USER_MODE NTSTATUS Initialize()
static BOOLEAN _SystemManagedIdleTimeoutAvailable(VOID)
__inline VOID SetObject(__in_opt MdDeviceObject DeviceObject)
VOID InvalidateDeviceState(__in MdDeviceObject Fdo)
VOID InvalidateDeviceRelations(__in DEVICE_RELATION_TYPE Type)
__inline MdDeviceObject GetObject(VOID)
MdDeviceObject GetAttachedDeviceReference(VOID)
CHECK_RETURN_IF_USER_MODE __inline NTSTATUS Initialize(__in EVENT_TYPE Type, __in BOOLEAN InitialState)
MxEvent * GetSelfPointer(VOID)
static __inline VOID MxFreePool(__in PVOID Ptr)
static __inline PVOID MxAllocatePoolWithTag(__in POOL_TYPE PoolType, __in SIZE_T NumberOfBytes, __in ULONG Tag)
_Must_inspect_result_ __inline NTSTATUS Allocate(__in MdDeviceObject DeviceObject, __in_opt PVOID ThreadPoolEnv=NULL)
static __inline NTSTATUS MxAcquireRemoveLock(__in MdRemoveLock RemoveLock, __in_opt PVOID Tag)
static __inline BOOLEAN MxHasEnoughRemainingThreadStack(VOID)
static __inline VOID MxAssert(__in BOOLEAN Condition)
static __inline VOID MxReleaseRemoveLock(__in MdRemoveLock RemoveLock, __in PVOID Tag)
static __inline VOID MxDereferenceObject(__in PVOID Object)
static __inline VOID MxReferenceObject(__in PVOID Object)
static __inline KIRQL MxGetCurrentIrql()
#define STATUS_NOT_SUPPORTED
#define STATUS_NOT_IMPLEMENTED
#define NT_SUCCESS(StatCode)
NTSTATUS NTAPI CompleteRequest(IN PIRP Irp, IN NTSTATUS Status, IN ULONG_PTR Information)
#define __drv_requiresIRQL(irql)
#define __drv_maxIRQL(irql)
#define __drv_minIRQL(irql)
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define IsListEmpty(ListHead)
#define InitializeListHead(ListHead)
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
PFX_DRIVER_GLOBALS pFxDriverGlobals
MxDeviceObject deviceObject
FX_TRACK_DRIVER(fxDriverGlobals)
SINGLE_LIST_ENTRY ** ppPrev
FxVerifierDbgBreakPoint(pFxDriverGlobals)
#define ROSWDFNOTIMPLEMENTED
_Must_inspect_result_ BOOLEAN __inline FxIsEqualGuid(__in CONST GUID *Lhs, __in CONST GUID *Rhs)
PDEVICE_OBJECT pTopOfStack
#define WDF_VERIFY_KM_ONLY_CODE()
_Must_inspect_result_ NTSTATUS PnpPassThroughQI(__in CfxDevice *Device, __inout FxIrp *Irp)
const UCHAR DeviceWakeStates
@ FxPnpCapSilentInstallUseDefault
@ FxPnpStateResourcesChangedUseDefault
@ FxPnpStateDisabledUseDefault
@ FxPnpCapHardwareDisabledUseDefault
@ FxPnpCapSurpriseRemovalOKUseDefault
@ FxPnpCapUniqueIDUseDefault
@ FxPnpCapEjectSupportedUseDefault
@ FxPnpStateNotDisableableUseDefault
@ FxPnpStateDontDisplayInUIMask
@ FxPnpCapLockSupportedUseDefault
@ FxPnpStateRemovedUseDefault
@ FxPnpCapNoDisplayInUIMask
@ FxPnpCapNoDisplayInUITrue
@ FxPnpStateDontDisplayInUIUseDefault
@ FxPnpStateFailedUseDefault
@ FxPnpCapDockDeviceUseDefault
@ FxPnpCapRemovableUseDefault
@ FxPnpCapNoDisplayInUIFalse
@ FxPnpCapNoDisplayInUIUseDefault
@ FxPowerCapWakeFromD0UseDefault
@ FxPowerCapDeviceD2UseDefault
@ FxPowerCapWakeFromD2UseDefault
@ FxPowerCapDeviceD1UseDefault
@ FxPowerCapWakeFromD1UseDefault
@ FxPowerCapWakeFromD3UseDefault
VOID PnpPassThroughQIWorker(__in MxDeviceObject *Device, __inout FxIrp *Irp, __inout FxIrp *ForwardIrp)
@ FxPowerReferenceSendPnpPowerUpEvent
@ FxPowerPolicySxWakeDeviceEnabledFlag
@ FxPowerPolicySxWakeChildrenArmedFlag
@ PwrPolS0IdlePolicyChanged
@ FxPowerPolicyDefaultTimeout
@ PowerWakeInterruptCompleteTransition
#define FxVerifierBugCheck(FxDriverGlobals, Error,...)
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLenum GLsizei const GLuint GLboolean enabled
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define RtlFillMemory(Dest, Length, Fill)
#define InterlockedCompareExchangePointer
static IPrintDialogCallback callback
WUDF_DRIVER_CANCEL * MdCancelRoutine
#define _Must_inspect_result_
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define STANDARD_RIGHTS_WRITE
#define UNREFERENCED_PARAMETER(P)
#define IRP_MN_SURPRISE_REMOVAL
enum _DEVICE_POWER_STATE DEVICE_POWER_STATE
enum _SYSTEM_POWER_STATE SYSTEM_POWER_STATE
#define STATUS_INVALID_BUFFER_SIZE
#define STATUS_POWER_STATE_INVALID
#define SET_TRI_STATE_FROM_STATE_BITS(state, S, FieldName)
#define GET_PNP_STATE_BITS_FROM_STRUCT(S, FieldName)
#define GET_POWER_CAP_BITS_FROM_STRUCT(S, FieldName)
#define SET_PNP_DEVICE_STATE_BIT(State, ExternalState, value, Name)
#define GET_PNP_CAP_BITS_FROM_STRUCT(S, FieldName)
FxLibraryGlobalsType FxLibraryGlobals
_In_ UCHAR _In_ ULONG _Out_ PUCHAR _Outptr_result_bytebuffer_ OutBufferLength PVOID * OutBuffer
#define STATUS_BUFFER_TOO_SMALL
#define TRACE_LEVEL_WARNING
#define TRACE_LEVEL_VERBOSE
#define TRACE_LEVEL_ERROR
#define TRACE_LEVEL_INFORMATION
NTSTATUS EnterCRAndWaitAndLeave(VOID)
FxCREvent * GetSelfPointer(VOID)
CHECK_RETURN_IF_USER_MODE NTSTATUS Initialize(__in BOOLEAN InitialState=FALSE)
NTSTATUS Initialize(VOID)
FxWaitLockTransactionedList m_ChildListList
FxWaitLockInternal m_StateMachineLock
BOOLEAN SetFinished(__in FxCREvent *Event)
PFN_IO_REPORT_INTERRUPT_INACTIVE IoReportInterruptInactive
PFN_IO_DISCONNECT_INTERRUPT_EX IoDisconnectInterruptEx
RTL_OSVERSIONINFOEXW OsVersionInfo
PFN_IO_CONNECT_INTERRUPT_EX IoConnectInterruptEx
PFN_IO_REPORT_INTERRUPT_ACTIVE IoReportInterruptActive
_Must_inspect_result_ NTSTATUS Init(__inout FxPkgPnp *Pnp, __in PFN_PNP_EVENT_WORKER WorkerRoutine)
VOID SetWaitWakeUnclaimed(VOID)
_Must_inspect_result_ NTSTATUS InitUsbSS(VOID)
FxPowerPolicyOwnerSettings * m_Owner
FxPoxInterface m_PoxInterface
FxPowerDeviceArmWakeFromSx m_DeviceArmWakeFromSx
FxPowerDeviceWakeFromSxTriggered m_DeviceWakeFromSxTriggered
FxPowerDeviceArmWakeFromS0 m_DeviceArmWakeFromS0
WakePolicySettings m_WakeSettings
FxPowerDeviceDisarmWakeFromSx m_DeviceDisarmWakeFromSx
ULONG m_SystemToDeviceStateMap
FxPowerIdleMachine m_PowerIdleMachine
_Must_inspect_result_ NTSTATUS Init(VOID)
FxPowerDeviceDisarmWakeFromS0 m_DeviceDisarmWakeFromS0
VOID CleanupPowerCallback(VOID)
BOOLEAN m_RequestedWaitWakeIrp
FxPowerDeviceWakeFromS0Triggered m_DeviceWakeFromS0Triggered
LONG m_ChildrenArmedCount
IdlePolicySettings m_IdleSettings
BOOLEAN m_SendQueryToParentStack
FxDeviceProcessQueryInterfaceRequest m_ProcessRequest
static FxQueryInterface * _FromEntry(__in PSINGLE_LIST_ENTRY Entry)
BOOLEAN m_ImportInterface
SINGLE_LIST_ENTRY m_Entry
BOOLEAN m_EmbeddedInterface
_Must_inspect_result_ NTSTATUS Init(__inout FxPkgPnp *Pnp, __in PFN_PNP_EVENT_WORKER WorkerRoutine, __in PVOID WorkerContext=NULL)
FxObject * GetTransactionedObject(VOID)
static MdDeferredRoutineType _WatchdogDpc
_Must_inspect_result_ NTSTATUS Init(__inout FxPkgPnp *Pnp, __in PFN_PNP_EVENT_WORKER WorkerRoutine, __in PVOID WorkerContext=NULL)
IdleTimeoutManagement m_TimeoutMgmt
BOOLEAN UsbSSCapabilityKnown
BOOLEAN PowerUpIdleDeviceOnSystemWake
BOOLEAN WakeFromS0Capable
DEVICE_POWER_STATE DxState
BOOLEAN m_ExtendWatchDogTimer
BOOLEAN ArmForWakeIfChildrenAreArmedForWake
BOOLEAN IndicateChildWakeOnParentWake
PDEVICE_OBJECT Objects[1]
_Must_inspect_result_ BOOLEAN IsVersionGreaterThanOrEqualTo(__in ULONG Major, __in ULONG Minor)
PINTERFACE_REFERENCE InterfaceReference
PINTERFACE_DEREFERENCE InterfaceDereference
struct _LIST_ENTRY * Blink
struct _LIST_ENTRY * Flink
PFN_POWER_THREAD_ENQUEUE PowerThreadEnqueue
struct _SINGLE_LIST_ENTRY * Next
DEVICE_CAPABILITIES DeviceCaps
DEVICE_WAKE_DEPTH DeepestWakeableDstate[PowerSystemHibernate+1]
_Must_inspect_result_ NTSTATUS GetStackCapabilities(__in PFX_DRIVER_GLOBALS DriverGlobals, __in MxDeviceObject *DeviceInStack, __in_opt PD3COLD_SUPPORT_INTERFACE D3ColdInterface, __out PSTACK_DEVICE_CAPABILITIES Capabilities)
VOID CopyQueryInterfaceToIrpStack(__in PPOWER_THREAD_INTERFACE PowerThreadInterface, __in FxIrp *Irp)
VOID SetD3ColdSupport(__in PFX_DRIVER_GLOBALS DriverGlobals, __in MxDeviceObject *DeviceInStack, __in PD3COLD_SUPPORT_INTERFACE D3ColdInterface, __in BOOLEAN UseD3Cold)
_Must_inspect_result_ NTSTATUS SendDeviceUsageNotification(__in MxDeviceObject *RelatedDevice, __inout FxIrp *RelatedIrp, __in MxWorkItem *Workitem, __in FxIrp *OriginalIrp, __in BOOLEAN Revert)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_INVALID_DEVICE_REQUEST
#define STATUS_INVALID_DEVICE_STATE
#define STATUS_INSUFFICIENT_RESOURCES
struct _WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_V1_7 WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_V1_7
@ WDF_POWER_ROUTINE_TIMED_OUT
_Must_inspect_result_ _In_ WDFDEVICE Device
_In_ WDFCOLLECTION _In_ ULONG Index
_In_ PWDFDEVICE_INIT DeviceInit
#define DECLARE_CONST_UNICODE_STRING(_variablename, _string)
FORCEINLINE LONGLONG WDF_REL_TIMEOUT_IN_MS(_In_ ULONGLONG Time)
@ WakeDoNotAllowUserControl
_In_ PWDFDEVICE_INIT _In_ BOOLEAN IsPowerPolicyOwner
enum _WDF_SPECIAL_FILE_TYPE WDF_SPECIAL_FILE_TYPE
@ WdfReleaseHardwareOrderOnFailureAfterDescendants
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Settings
@ WdfDeviceFailedNoRestart
@ WdfDeviceFailedAttemptRestart
@ WdfDeviceFailedUndefined
#define WDF_SX_WAKE_ENABLED_VALUE_NAME
@ WdfSpecialFileHibernation
#define WDF_SX_WAKE_DEFAULT_VALUE_NAME
_In_ WDFDEVICE _In_ WDF_SPECIAL_FILE_TYPE FileType
#define IdleTimeoutDefaultValue
_In_ WDFDEVICE _In_ WDF_DEVICE_FAILED_ACTION FailedAction
_Must_inspect_result_ _In_ WDFDEVICE _In_ PDEVICE_OBJECT DependentDevice
@ IdleDoNotAllowUserControl
_In_ WDFDEVICE _In_ PWDF_DEVICE_PNP_CAPABILITIES PnpCapabilities
_In_ WDFDEVICE _In_ PWDF_DEVICE_POWER_CAPABILITIES PowerCapabilities
@ SystemManagedIdleTimeout
@ SystemManagedIdleTimeoutWithHint
#define WDF_S0_IDLE_ENABLED_VALUE_NAME
enum _WDF_DEVICE_FAILED_ACTION WDF_DEVICE_FAILED_ACTION
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_POWER_FRAMEWORK_SETTINGS PowerFrameworkSettings
@ IdleUsbSelectiveSuspend
#define WDF_S0_IDLE_DEFAULT_VALUE_NAME
_Must_inspect_result_ _In_ PWDF_DPC_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFDPC * Dpc
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_INTERRUPT_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFINTERRUPT * Interrupt
_Must_inspect_result_ _In_ WDFOBJECT _In_ CONST GUID * Guid
_In_ PWDFDEVICE_INIT _In_ PWDF_PDO_EVENT_CALLBACKS DispatchTable
_Must_inspect_result_ _In_ WDFCMRESLIST List
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
enum _WDF_TRI_STATE WDF_TRI_STATE
#define WDF_NO_OBJECT_ATTRIBUTES
_In_ ULONG _Out_ PULONG BufferUsed
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_WMI_INSTANCE_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_opt_ WDFWMIINSTANCE * Instance
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
struct _PNP_BUS_INFORMATION * PPNP_BUS_INFORMATION
enum _DEVICE_WAKE_DEPTH DEVICE_WAKE_DEPTH
#define IRP_MN_CANCEL_STOP_DEVICE
#define IRP_MN_QUERY_PNP_DEVICE_STATE
#define PNP_DEVICE_NOT_DISABLEABLE
#define PNP_DEVICE_RESOURCE_REQUIREMENTS_CHANGED
#define IRP_MN_START_DEVICE
#define PNP_DEVICE_FAILED
#define PNP_DEVICE_DONT_DISPLAY_IN_UI
#define IRP_MN_REMOVE_DEVICE
#define PNP_DEVICE_DISABLED
struct _DEVICE_RELATIONS * PDEVICE_RELATIONS
#define IRP_MN_QUERY_DEVICE_RELATIONS
#define IRP_MN_QUERY_STOP_DEVICE
#define IRP_MN_CANCEL_REMOVE_DEVICE
#define IRP_MN_STOP_DEVICE
@ DeviceWakeDepthNotWakeable
_In_ SYSTEM_POWER_STATE SystemPowerState
enum _DEVICE_RELATION_TYPE DEVICE_RELATION_TYPE
#define PNP_DEVICE_REMOVED
FORCEINLINE DEVICE_POWER_STATE MapWakeDepthToDstate(_In_ DEVICE_WAKE_DEPTH WakeDepth)
#define IRP_MN_QUERY_POWER
enum _DEVICE_USAGE_NOTIFICATION_TYPE DEVICE_USAGE_NOTIFICATION_TYPE
@ DeviceUsageTypeDumpFile
#define IRP_MN_QUERY_REMOVE_DEVICE
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2