ReactOS  0.4.15-dev-2704-gd5265b0
pnppriv.hpp File Reference
#include "shared/irphandlers/irphandlerspriv.hpp"
#include "wdfdevice.h"
#include "wdfchildlist.h"
#include "wdfpdo.h"
#include "wdffdo.h"
#include "wdfqueryinterface.h"
#include "wdfmemory.h"
#include "wdfwmi.h"
#include "wdfinterrupt.h"
#include "wdfrequest.h"
#include "wdfio.h"
#include "fxwaitlock.hpp"
#include "fxtransactionedlist.hpp"
#include "fxrelateddevicelist.hpp"
#include "fxcollection.hpp"
#include "stringutil.hpp"
#include "fxstring.hpp"
#include "fxdevicetext.hpp"
#include "fxcallback.hpp"
#include "fxsystemthread.hpp"
#include "fxresource.hpp"
#include "fxpkgioshared.hpp"
#include "fxdeviceinitshared.hpp"
#include "fxchildlist.hpp"
#include "fxdevicetomxinterface.hpp"
#include "fxspinlock.hpp"
#include "fxtelemetry.hpp"
#include "fxrelateddevice.hpp"
#include "fxdeviceinterface.hpp"
#include "fxqueryinterface.hpp"
#include "fxpnpcallbacks.hpp"
#include "fxpackage.hpp"
#include "fxpkgpnp.hpp"
#include "fxwatchdog.hpp"
#include "fxpkgpdo.hpp"
#include "fxpkgfdo.hpp"
#include "fxwmiirphandler.hpp"
#include "fxwmiprovider.hpp"
#include "fxwmiinstance.hpp"
Include dependency graph for pnppriv.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_V1_7
 
struct  _WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_V1_9
 
struct  _WDF_PDO_EVENT_CALLBACKS_V1_9
 
struct  _WDF_INTERRUPT_INFO_V1_7
 

Macros

#define FX_IS_USER_MODE   (TRUE)
 
#define FX_IS_KERNEL_MODE   (FALSE)
 
#define SET_TRI_STATE_FROM_STATE_BITS(state, S, FieldName)
 
#define GET_PNP_STATE_BITS_FROM_STRUCT(S, FieldName)
 
#define GET_PNP_CAP_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 SET_PNP_CAP_IF_TRUE(caps, pCaps, FieldName)
 
#define SET_PNP_CAP_IF_FALSE(caps, pCaps, FieldName)
 
#define SET_PNP_CAP(caps, pCaps, FieldName)
 
#define SET_POWER_CAP(caps, pCaps, FieldName)
 

Typedefs

typedef struct _WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_V1_7 WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_V1_7
 
typedef struct _WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_V1_7PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_V1_7
 
typedef struct _WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_V1_9 WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_V1_9
 
typedef struct _WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_V1_9PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_V1_9
 
typedef struct _WDF_PDO_EVENT_CALLBACKS_V1_9 WDF_PDO_EVENT_CALLBACKS_V1_9
 
typedef struct _WDF_PDO_EVENT_CALLBACKS_V1_9PWDF_PDO_EVENT_CALLBACKS_V1_9
 
typedef struct _WDF_INTERRUPT_INFO_V1_7 WDF_INTERRUPT_INFO_V1_7
 
typedef struct _WDF_INTERRUPT_INFO_V1_7PWDF_INTERRUPT_INFO_V1_7
 
typedef const struct _WDF_INTERRUPT_INFO_V1_7PCWDF_INTERRUPT_INFO_V1_7
 

Functions

VOID PnpPassThroughQIWorker (__in MxDeviceObject *Device, __inout FxIrp *Irp, __inout FxIrp *ForwardIrp)
 
VOID CopyQueryInterfaceToIrpStack (__in PPOWER_THREAD_INTERFACE PowerThreadInterface, __in FxIrp *Irp)
 
_Must_inspect_result_ NTSTATUS SendDeviceUsageNotification (__in MxDeviceObject *RelatedDevice, __in FxIrp *RelatedIrp, __in MxWorkItem *Workitem, __in FxIrp *OriginalIrp, __in BOOLEAN Revert)
 
_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 SetD3ColdSupport (__in PFX_DRIVER_GLOBALS DriverGlobals, __in MxDeviceObject *DeviceInStack, __in PD3COLD_SUPPORT_INTERFACE D3ColdInterface, __in BOOLEAN UseD3Cold)
 
LONG __inline FxGetValueBits (__in WDF_TRI_STATE State, __in LONG TrueValue, __in LONG UseDefaultValue)
 
__inline VOID FxSetPnpDeviceStateBit (__in PNP_DEVICE_STATE *PnpDeviceState, __in LONG ExternalState, __in LONG InternalState, __in LONG BitMask, __in LONG TrueValue)
 
_Must_inspect_result_ PVOID GetIoMgrObjectForWorkItemAllocation (VOID)
 

Macro Definition Documentation

◆ FX_IS_KERNEL_MODE

#define FX_IS_KERNEL_MODE   (FALSE)

Definition at line 32 of file pnppriv.hpp.

◆ FX_IS_USER_MODE

#define FX_IS_USER_MODE   (TRUE)

Definition at line 31 of file pnppriv.hpp.

◆ GET_PNP_CAP_BITS_FROM_STRUCT

#define GET_PNP_CAP_BITS_FROM_STRUCT (   S,
  FieldName 
)
Value:
FxGetValueBits(S->FieldName, \
FxPnpCap##FieldName##True, \
FxPnpCap##FieldName##UseDefault)
Definition: movable.cpp:7
LONG __inline FxGetValueBits(__in WDF_TRI_STATE State, __in LONG TrueValue, __in LONG UseDefaultValue)
Definition: pnppriv.hpp:207
#define True
Definition: types.h:24

Definition at line 226 of file pnppriv.hpp.

◆ GET_PNP_STATE_BITS_FROM_STRUCT

#define GET_PNP_STATE_BITS_FROM_STRUCT (   S,
  FieldName 
)
Value:
FxGetValueBits(S->FieldName, \
FxPnpState##FieldName##True, \
FxPnpState##FieldName##UseDefault)
Definition: movable.cpp:7
LONG __inline FxGetValueBits(__in WDF_TRI_STATE State, __in LONG TrueValue, __in LONG UseDefaultValue)
Definition: pnppriv.hpp:207
#define True
Definition: types.h:24

Definition at line 221 of file pnppriv.hpp.

◆ GET_POWER_CAP_BITS_FROM_STRUCT

#define GET_POWER_CAP_BITS_FROM_STRUCT (   S,
  FieldName 
)
Value:
FxGetValueBits(S->FieldName, \
FxPowerCap##FieldName##True, \
FxPowerCap##FieldName##UseDefault)
Definition: movable.cpp:7
LONG __inline FxGetValueBits(__in WDF_TRI_STATE State, __in LONG TrueValue, __in LONG UseDefaultValue)
Definition: pnppriv.hpp:207
#define True
Definition: types.h:24

Definition at line 231 of file pnppriv.hpp.

◆ SET_PNP_CAP

#define SET_PNP_CAP (   caps,
  pCaps,
  FieldName 
)
Value:
{ \
if ((caps & FxPnpCap##FieldName##Mask) == FxPnpCap##FieldName##False) { \
pCaps->FieldName = FALSE; \
} \
else if ((caps & FxPnpCap##FieldName##Mask) == FxPnpCap##FieldName##True) { \
pCaps->FieldName = TRUE; \
} \
}
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define True
Definition: types.h:24
#define False
Definition: types.h:25
processorSet Mask

Definition at line 279 of file pnppriv.hpp.

◆ SET_PNP_CAP_IF_FALSE

#define SET_PNP_CAP_IF_FALSE (   caps,
  pCaps,
  FieldName 
)
Value:
{ \
if ((caps & FxPnpCap##FieldName##Mask) == FxPnpCap##FieldName##False) { \
pCaps->FieldName = FALSE; \
} \
}
#define FALSE
Definition: types.h:117
#define False
Definition: types.h:25
processorSet Mask

Definition at line 272 of file pnppriv.hpp.

◆ SET_PNP_CAP_IF_TRUE

#define SET_PNP_CAP_IF_TRUE (   caps,
  pCaps,
  FieldName 
)
Value:
{ \
if ((caps & FxPnpCap##FieldName##Mask) == FxPnpCap##FieldName##True) { \
pCaps->FieldName = TRUE; \
} \
}
#define TRUE
Definition: types.h:120
#define True
Definition: types.h:24
processorSet Mask

Definition at line 265 of file pnppriv.hpp.

◆ SET_PNP_DEVICE_STATE_BIT

#define SET_PNP_DEVICE_STATE_BIT (   State,
  ExternalState,
  value,
  Name 
)
Value:
ExternalState, \
state, \
FxPnpState##Name##Mask, \
FxPnpState##Name##True)
__inline VOID FxSetPnpDeviceStateBit(__in PNP_DEVICE_STATE *PnpDeviceState, __in LONG ExternalState, __in LONG InternalState, __in LONG BitMask, __in LONG TrueValue)
Definition: pnppriv.hpp:238
#define True
Definition: types.h:24
static int state
Definition: maze.c:121
processorSet Mask

Definition at line 258 of file pnppriv.hpp.

◆ SET_POWER_CAP

#define SET_POWER_CAP (   caps,
  pCaps,
  FieldName 
)
Value:
{ \
if ((caps & FxPowerCap##FieldName##Mask) == FxPowerCap##FieldName##False) { \
pCaps->FieldName = FALSE; \
} \
else if ((caps & FxPowerCap##FieldName##Mask) == FxPowerCap##FieldName##True) { \
pCaps->FieldName = TRUE; \
} \
}
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define True
Definition: types.h:24
#define False
Definition: types.h:25
processorSet Mask

Definition at line 289 of file pnppriv.hpp.

◆ SET_TRI_STATE_FROM_STATE_BITS

#define SET_TRI_STATE_FROM_STATE_BITS (   state,
  S,
  FieldName 
)
Value:
{ \
switch (state & (FxPnpState##FieldName##Mask)) { \
case FxPnpState##FieldName##False : \
S->FieldName = WdfFalse; \
break; \
case FxPnpState##FieldName##True: \
S->FieldName = WdfTrue; \
break; \
case FxPnpState##FieldName##UseDefault : \
default: \
S->FieldName = WdfUseDefault; \
break; \
} \
}
#define True
Definition: types.h:24
#define False
Definition: types.h:25
static int state
Definition: maze.c:121
processorSet Mask

Definition at line 189 of file pnppriv.hpp.

Typedef Documentation

◆ PCWDF_INTERRUPT_INFO_V1_7

◆ PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_V1_7

◆ PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_V1_9

◆ PWDF_INTERRUPT_INFO_V1_7

◆ PWDF_PDO_EVENT_CALLBACKS_V1_9

◆ WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_V1_7

◆ WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_V1_9

◆ WDF_INTERRUPT_INFO_V1_7

◆ WDF_PDO_EVENT_CALLBACKS_V1_9

Function Documentation

◆ CopyQueryInterfaceToIrpStack()

VOID CopyQueryInterfaceToIrpStack ( __in PPOWER_THREAD_INTERFACE  PowerThreadInterface,
__in FxIrp Irp 
)

Definition at line 32 of file supportkm.cpp.

36 {
38 
39  stack = Irp->GetCurrentIrpStackLocation();
40 
41  RtlCopyMemory(stack->Parameters.QueryInterface.Interface,
42  PowerThreadInterface,
43  PowerThreadInterface->Interface.Size);
44 }
static stack_node_t * stack
Definition: rpn_ieee.c:37
_In_ PIRP Irp
Definition: csq.h:116
Definition: _stack.h:47
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263

Referenced by FxPkgPnp::HandleQueryInterfaceForPowerThread().

◆ FxGetValueBits()

LONG __inline FxGetValueBits ( __in WDF_TRI_STATE  State,
__in LONG  TrueValue,
__in LONG  UseDefaultValue 
)

Definition at line 207 of file pnppriv.hpp.

212 {
213  switch (State) {
214  case WdfFalse: return 0x0;
215  case WdfTrue: return TrueValue;
216  case WdfUseDefault:
217  default: return UseDefaultValue;
218  }
219 }

◆ FxSetPnpDeviceStateBit()

__inline VOID FxSetPnpDeviceStateBit ( __in PNP_DEVICE_STATE PnpDeviceState,
__in LONG  ExternalState,
__in LONG  InternalState,
__in LONG  BitMask,
__in LONG  TrueValue 
)

Definition at line 238 of file pnppriv.hpp.

245 {
246  LONG bits;
247 
248  bits = InternalState & BitMask;
249 
250  if (bits == TrueValue) {
251  *PnpDeviceState |= ExternalState;
252  }
253  else if (bits == 0) { // 0 is the always false for every bit-set
254  *PnpDeviceState &= ~ExternalState;
255  }
256 }
GLenum GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * bits
Definition: glext.h:10929
long LONG
Definition: pedump.c:60

◆ GetIoMgrObjectForWorkItemAllocation()

_Must_inspect_result_ PVOID GetIoMgrObjectForWorkItemAllocation ( VOID  )

Definition at line 189 of file supportkm.cpp.

202 {
203  // return (PVOID) FxLibraryGlobals.DriverObject;
204  // __REACTOS__ : we don't have a WDF driver object here, use a child one
205 
208 }
FxDriver * Driver
Definition: fxglobals.h:374
PWDF_DRIVER_GLOBALS WdfDriverGlobals
__inline MdDriverObject GetDriverObject(VOID)
Definition: fxdriver.hpp:252
PFX_DRIVER_GLOBALS fxDriverGlobals
__inline PFX_DRIVER_GLOBALS GetFxDriverGlobals(__in PWDF_DRIVER_GLOBALS DriverGlobals)
Definition: fxglobals.h:597

Referenced by FxWorkItemEventQueue::Init().

◆ GetStackCapabilities()

_Must_inspect_result_ NTSTATUS GetStackCapabilities ( __in PFX_DRIVER_GLOBALS  DriverGlobals,
__in MxDeviceObject DeviceInStack,
__in_opt PD3COLD_SUPPORT_INTERFACE  D3ColdInterface,
__out PSTACK_DEVICE_CAPABILITIES  Capabilities 
)

Definition at line 48 of file supportkm.cpp.

54 {
55  ULONG i;
56  FxAutoIrp irp;
58 
60 
62 
63  //
64  // Normally this would be assigned to a local variable on the stack. Since
65  // query caps iteratively moves down the device's tree until it hits the
66  // root. As such, stack usage is consumed quickly. While this is only one
67  // pointer value we are saving, it does eventually add up on very deep stacks.
68  //
69  DeviceInStack->SetObject(DeviceInStack->GetAttachedDeviceReference());
70  if (DeviceInStack->GetObject() == NULL) {
71  goto Done;
72  }
73 
74  irp.SetIrp(FxIrp::AllocateIrp(DeviceInStack->GetStackSize()));
75  if (irp.GetIrp() == NULL) {
76  goto Done;
77  }
78 
79  //
80  // Initialize device capabilities.
81  //
83  Capabilities->DeviceCaps.Size = sizeof(DEVICE_CAPABILITIES);
84  Capabilities->DeviceCaps.Version = 1;
85  Capabilities->DeviceCaps.Address = (ULONG) -1;
86  Capabilities->DeviceCaps.UINumber = (ULONG) -1;
87 
88  //
89  // Initialize the Irp.
90  //
92 
97 
98  status = irp.SendIrpSynchronously(DeviceInStack->GetObject());
99 
100  if (!NT_SUCCESS(status)) {
103  "Failed to get DEVICE_CAPABILITIES from !devobj %p, %!STATUS!",
104  DeviceInStack->GetObject(), status);
105  goto Done;
106  }
107 
108  //
109  // Invoke the D3cold support interface. If present, it will tell
110  // us specifically which D-states will work for generating wake signals
111  // from specific S-states.
112  //
113  // Earlier versions of WDF didn't make this query, so for compatibility,
114  // we only make it now if the driver was built against WDF 1.11 or
115  // later. In truth, this just shifts the failure from initialization
116  // time to run time, because the information that we're presumably
117  // getting from the BIOS with this interrogation is saying that the
118  // code in earlier verisions of WDF would have blindly enabled a device
119  // for wake which simply wasn't capable of generating its wake signal
120  // from the chosen D-state. Thus the device would have been put into
121  // a low power state and then failed to resume in response to its wake
122  // signal.
123  //
124 
125  for (i = 0; i <= PowerSystemHibernate; i++) {
126  Capabilities->DeepestWakeableDstate[i] = DeviceWakeDepthMaximum;
127  }
128 
129  if (ARGUMENT_PRESENT(D3ColdInterface) &&
130  (D3ColdInterface->GetIdleWakeInfo != NULL) &&
131  DriverGlobals->IsVersionGreaterThanOrEqualTo(1,11)) {
132 
133  DEVICE_WAKE_DEPTH deepestWakeableDstate;
134 
135  for (i = PowerSystemWorking; i <= PowerSystemHibernate; i++) {
136 
137  //
138  // Failure from D3ColdInterface->GetIdleWakeInfo just means that
139  // the bus drivers didn't have any information beyond what can
140  // gleaned from the older Query-Capabilities code path.
141  //
142  // In specific ACPI terms, ACPI will respond to this function with
143  // success whenever there is an _SxW object (where x is the sleep
144  // state, a value from 0 to 4.)
145  //
146  // PCI will respond to this interface if ACPI doesn't override its
147  // answer and if a parent bus is capable of leaving D0 in S0, and
148  // if the PCI device has
149  status = D3ColdInterface->GetIdleWakeInfo(
150  D3ColdInterface->Context,
152  &deepestWakeableDstate
153  );
154 
155  if (NT_SUCCESS(status)) {
156  Capabilities->DeepestWakeableDstate[i] = deepestWakeableDstate;
157  }
158  }
159  }
160 
162 
163 Done:
164  if (DeviceInStack->GetObject() != NULL) {
165  DeviceInStack->DereferenceObject();
166  }
167 
168  return status;
169 }
return STATUS_NOT_SUPPORTED
VOID SetMajorFunction(__in UCHAR MajorFunction)
Definition: fxirpum.cpp:905
#define STATUS_INSUFFICIENT_RESOURCES
Definition: udferr_usr.h:158
VOID SetStatus(__in NTSTATUS Status)
Definition: fxirpum.cpp:457
#define IRP_MJ_PNP
Definition: cdrw_usr.h:52
LONG NTSTATUS
Definition: precomp.h:26
DEVICE_CAPABILITIES
Definition: iotypes.h:965
DriverGlobals
enum _SYSTEM_POWER_STATE SYSTEM_POWER_STATE
enum _DEVICE_WAKE_DEPTH DEVICE_WAKE_DEPTH
CHECK_RETURN_IF_USER_MODE NTSTATUS SendIrpSynchronously(__in MdDeviceObject DeviceObject)
Definition: fxirpum.cpp:151
_Must_inspect_result_ typedef _Out_ PHIDP_CAPS Capabilities
Definition: hidclass.h:103
#define ASSERT(a)
Definition: mode.c:44
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define ARGUMENT_PRESENT(ArgumentPointer)
static _Must_inspect_result_ MdIrp AllocateIrp(_In_ CCHAR StackSize, _In_opt_ FxDevice *Device=NULL)
Definition: fxirpum.cpp:1089
#define TRACE_LEVEL_ERROR
Definition: storswtr.h:27
#define TRACINGPNP
Definition: dbgtrace.h:67
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
Definition: glfuncs.h:248
MdIrp GetIrp(VOID)
Definition: fxirpum.cpp:15
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
#define NULL
Definition: types.h:112
unsigned int ULONG
Definition: retypes.h:1
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
VOID ClearNextStack(VOID)
Definition: fxirpum.cpp:1183
VOID SetMinorFunction(__in UCHAR MinorFunction)
Definition: fxirpum.cpp:967
#define STATUS_SUCCESS
Definition: shellext.h:65
MdIrp SetIrp(MdIrp irp)
Definition: fxirpkm.hpp:71
static SERVICE_STATUS status
Definition: service.c:31
VOID SetParameterDeviceCapabilities(__in PDEVICE_CAPABILITIES DeviceCapabilities)
Definition: fxirpum.cpp:1145
FxIrp * irp
#define IRP_MN_QUERY_CAPABILITIES
Definition: ps.c:97

Referenced by FxPkgPdo::_QueryCapsWorkItem(), FxPkgPdo::PnpQueryCapabilities(), and FxPkgPnp::QueryForCapabilities().

◆ PnpPassThroughQIWorker()

VOID PnpPassThroughQIWorker ( __in MxDeviceObject Device,
__inout FxIrp Irp,
__inout FxIrp ForwardIrp 
)

Definition at line 498 of file fxpkgpnpkm.cpp.

503 {
504  PIO_STACK_LOCATION pFwdStack, pCurStack;
505 
506  pCurStack = Irp->GetCurrentIrpStackLocation();
507 
508  ForwardIrp->SetStatus(STATUS_NOT_SUPPORTED);
509 
510  pFwdStack = ForwardIrp->GetNextIrpStackLocation();
511  pFwdStack->MajorFunction = Irp->GetMajorFunction();
512  pFwdStack->MinorFunction = Irp->GetMinorFunction();
513 
515  &pCurStack->Parameters.QueryInterface,
516  sizeof(pFwdStack->Parameters.QueryInterface));
517 
518  ForwardIrp->SetInformation(Irp->GetInformation());
519  ForwardIrp->SendIrpSynchronously(Device->GetObject());
520 
521  pFwdStack = ForwardIrp->GetNextIrpStackLocation();
522 
524  &pFwdStack->Parameters.QueryInterface,
525  sizeof(pCurStack->Parameters.QueryInterface));
526 }
return STATUS_NOT_SUPPORTED
_In_ PIRP Irp
Definition: csq.h:116
_Must_inspect_result_ _In_ WDFDEVICE Device
Definition: wdfchildlist.h:474
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
Definition: iotypes.h:3128

Referenced by PnpPassThroughQI().

◆ SendDeviceUsageNotification()

_Must_inspect_result_ NTSTATUS SendDeviceUsageNotification ( __in MxDeviceObject RelatedDevice,
__in FxIrp RelatedIrp,
__in MxWorkItem Workitem,
__in FxIrp OriginalIrp,
__in BOOLEAN  Revert 
)

◆ SetD3ColdSupport()

VOID SetD3ColdSupport ( __in PFX_DRIVER_GLOBALS  DriverGlobals,
__in MxDeviceObject DeviceInStack,
__in PD3COLD_SUPPORT_INTERFACE  D3ColdInterface,
__in BOOLEAN  UseD3Cold 
)

Definition at line 172 of file supportkm.cpp.

178 {
180  UNREFERENCED_PARAMETER(DeviceInStack);
181 
182  if (D3ColdInterface->SetD3ColdSupport != NULL) {
183  D3ColdInterface->SetD3ColdSupport(D3ColdInterface->Context, UseD3Cold);
184  }
185 }
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:317
DriverGlobals
#define NULL
Definition: types.h:112

Referenced by FxPkgPnp::PowerPolicySetS0IdleSettings().