ReactOS  0.4.15-dev-3187-ge372f2b
fxdevicepdoapi.cpp File Reference
#include "fxcorepch.hpp"
Include dependency graph for fxdevicepdoapi.cpp:

Go to the source code of this file.

Functions

NTSTATUS GetPdoPackageFromDeviceHandle (__in IN PFX_DRIVER_GLOBALS CallersGlobals, __in WDFDEVICE Device, __in PCHAR FunctionName, __out FxPkgPdo **Package, __out PFX_DRIVER_GLOBALS *ObjectGlobals, __out_opt FxDevice **OutDevice=NULL)
 
_Must_inspect_result_ __drv_maxIRQL (DISPATCH_LEVEL) NTSTATUS STDCALL WDFEXPORT(WdfPdoMarkMissing)(__in PWDF_DRIVER_GLOBALS DriverGlobals
 
 if (NT_SUCCESS(status))
 
 FxVerifierDbgBreakPoint (pFxDriverGlobals)
 
 FxPointerNotNull (pFxDriverGlobals, IdentificationDescription)
 
 FxPointerNotNull (pFxDriverGlobals, AddressDescription)
 
 FxPointerNotNull (pFxDriverGlobals, PhysicalDevice)
 
 if (!NT_SUCCESS(status))
 
pPkgPdo RemoveEjectionDevice (PhysicalDevice)
 
pPkgPdo ClearEjectionDevicesList ()
 

Variables

_Must_inspect_result_ __in WDFDEVICE Device
 
NTSTATUS status
 
FxPkgPdopPkgPdo
 
FxDevicepDevice
 
PFX_DRIVER_GLOBALS pFxDriverGlobals
 
 else
 
return NULL
 
_Must_inspect_result_ __in WDFDEVICE __inout PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription
 
_Must_inspect_result_ __in WDFDEVICE __inout PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription
 
_Must_inspect_result_ __in WDFDEVICE __in PDEVICE_OBJECT PhysicalDevice
 

Function Documentation

◆ __drv_maxIRQL()

◆ ClearEjectionDevicesList()

pPkgPdo ClearEjectionDevicesList ( )

◆ FxPointerNotNull() [1/3]

FxPointerNotNull ( pFxDriverGlobals  ,
IdentificationDescription   
)

◆ FxPointerNotNull() [2/3]

FxPointerNotNull ( pFxDriverGlobals  ,
AddressDescription   
)

◆ FxPointerNotNull() [3/3]

FxPointerNotNull ( pFxDriverGlobals  ,
PhysicalDevice   
)

◆ FxVerifierDbgBreakPoint()

FxVerifierDbgBreakPoint ( pFxDriverGlobals  )

Referenced by __drv_maxIRQL(), __drv_when(), FxFileObject::_CreateFileObject(), FxFileObject::_DestroyFileObject(), FxObject::_GetEffectiveLock(), FxFileObject::_GetFileObjectFromWdm(), _Requires_lock_held_(), _Requires_lock_not_held_(), FxDevice::_ValidateOpenKeyParams(), FxPkgGeneral::AcquireRemoveLockForClose(), FxResourceCollection::AddAt(), FxCommonBuffer::AllocateCommonBuffer(), FxDmaEnabler::AllocateCommonBuffer(), WDFDEVICE_INIT::AssignIoType(), FxInterrupt::AssignResources(), FxCallbackLock::CheckOwnership(), IdleTimeoutManagement::CommitPowerFrameworkSettings(), FxRequest::CompleteInternal(), FxPkgGeneral::ConfigureConstraints(), FxPkgGeneral::ConfigureFileObjectClass(), FxPkgGeneral::ConfigureForwarding(), FxPkgIo::ConfigureForwarding(), FxDmaEnabler::ConfigureSystemAdapter(), FxRequest::CopyCompletionParams(), IFxMemory::CopyFromPtr(), FxChildList::CreateDevice(), FxPkgIo::DispatchStep1(), FxDmaTransactionBase::DmaCompleted(), FxVerifierLock::DumpDetails(), FxWorkItem::Enqueue(), FxPkgIo::EnqueueRequest(), FxSystemWorkItem::EnqueueWorker(), FxDevice::FdoInitialize(), FxPkgIo::FlushAllQueuesByFileObject(), FxTimer::FlushAndRundown(), FxWorkItem::FlushAndWait(), FxRequestBase::FreeMdls(), IdleTimeoutManagement::FreezeIdleTimeoutManagementStatus(), FX_VF_METHOD(), FxMdlDump(), FxMdlFreeDebug(), FxPoolAllocator(), FxPoolDump(), FxValiateCx(), FxDevice::FxValidateInterfacePropertyData(), FxVerifyLogHeader(), FxUsbInterface::GetConfiguredSettingIndex(), FxRequest::GetMdl(), FxRequest::GetMemoryObject(), FxVerifierLock::GetThreadTableEntry(), FxUsbPipe::GotoPurgeState(), FxIoTarget::GotoPurgeState(), FxUsbPipe::GotoRemoveState(), FxIoTarget::GotoStartState(), FxUsbPipe::GotoStopState(), if(), FxRequest::Impersonate(), FxDmaEnabler::Initialize(), FxDmaScatterGatherTransaction::InitializeResources(), FxPowerIdleMachine::IoDecrement(), FxIoQueue::PeekRequest(), FxPkgPdo::PnpEventEjectHardwareOverload(), FxPkgPnp::PnpEventQueryRemoveAskDriver(), FxPkgPnp::PnpEventQueryStopAskDriver(), FxPkgPnp::PnpReleaseHardware(), FxPkgPnp::PowerPolicySetS0IdleSettings(), FxRequest::ProbeAndLockForRead(), FxRequest::ProbeAndLockForWrite(), FxIoQueue::ReadyNotify(), FxRequest::ReleaseIrpReference(), FxVerifierLock::ReleaseOrReplaceThreadTableEntry(), FxResourceCollection::RemoveAndDelete(), FxRequest::RemoveFromIrpQueue(), FxInterrupt::ReportActive(), FxInterrupt::ReportInactive(), FxIoQueue::Requeue(), FxRequest::Reuse(), FxIoTargetSelf::Send(), FxRequest::SetCompletionState(), FxPkgIo::SetFilter(), FxDmaTransactionBase::SetImmediateExecution(), FxInterrupt::SetPolicy(), FxIoQueue::SetState(), FxTimer::Start(), FxDmaPacketTransaction::StartTransfer(), FxTimer::Stop(), switch(), FxDmaPacketTransaction::TransferCompleted(), FxVerifierLock::Unlock(), FxTagTracker::UpdateTagHistory(), IdleTimeoutManagement::UseSystemManagedIdleTimeout(), FxPkgPnp::ValidateCmResource(), FxPkgPnp::ValidateInterruptResourceCm(), VerifyWdfDeviceWdmDispatchIrp(), VerifyWdfDeviceWdmDispatchIrpToIoQueue(), FxDpc::~FxDpc(), FxInterrupt::~FxInterrupt(), FxSystemWorkItem::~FxSystemWorkItem(), FxTimer::~FxTimer(), FxVerifierLock::~FxVerifierLock(), and FxWorkItem::~FxWorkItem().

◆ GetPdoPackageFromDeviceHandle()

NTSTATUS GetPdoPackageFromDeviceHandle ( __in IN PFX_DRIVER_GLOBALS  CallersGlobals,
__in WDFDEVICE  Device,
__in PCHAR  FunctionName,
__out FxPkgPdo **  Package,
__out PFX_DRIVER_GLOBALS ObjectGlobals,
__out_opt FxDevice **  OutDevice = NULL 
)

Definition at line 32 of file fxdevicepdoapi.cpp.

46 {
49 
50  FxObjectHandleGetPtrAndGlobals(CallersGlobals,
51  Device,
53  (PVOID*) &pDevice,
54  ObjectGlobals);
55 
56  //
57  // If the optional "OutDevice" argument is present, return the pointer
58  // to the device.
59  //
60  if (OutDevice != NULL) {
61  *OutDevice = pDevice;
62  }
63 
64  //
65  // Check to see if a PDO package is installed on the device.
66  //
67  if (pDevice->IsPdo()) {
68  *Package = (FxPkgPdo *) pDevice->GetPdoPkg();
70  }
71  else {
73  "%s: Incorrect device handle supplied (0x%p). "
74  "Device is not a PDO.", FunctionName, Device);
75 
77  }
78 
79  return status;
80 }
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
LONG NTSTATUS
Definition: precomp.h:26
#define TRACINGDEVICE
Definition: dbgtrace.h:58
return NULL
__inline FxPkgPdo * GetPdoPkg(VOID)
Definition: fxdevice.hpp:1254
_Must_inspect_result_ _In_ WDFDEVICE Device
Definition: wdfchildlist.h:474
NTSTATUS status
#define TRACE_LEVEL_ERROR
Definition: storswtr.h:27
FxDevice * pDevice
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
ACPI_BUFFER *RetBuffer ACPI_BUFFER *RetBuffer char ACPI_WALK_RESOURCE_CALLBACK void *Context ACPI_BUFFER *RetBuffer UINT16 ACPI_RESOURCE **ResourcePtr ACPI_GENERIC_ADDRESS *Reg UINT32 *ReturnValue UINT8 UINT8 *Slp_TypB ACPI_PHYSICAL_ADDRESS PhysicalAddress64 UINT32 UINT32 *TimeElapsed UINT32 ACPI_STATUS const char UINT32 ACPI_STATUS const char UINT32 const char * FunctionName
Definition: acpixf.h:1274
FxObjectHandleGetPtrAndGlobals(GetFxDriverGlobals(DriverGlobals), Device, FX_TYPE_DEVICE,(PVOID *)&pDevice, &pFxDriverGlobals)
__inline BOOLEAN IsPdo(VOID)
Definition: fxdevice.hpp:1245
#define STATUS_SUCCESS
Definition: shellext.h:65
Definition: ps.c:97

◆ if() [1/2]

if ( NT_SUCCESS(status )

Definition at line 110 of file fxdevicepdoapi.cpp.

110  {
111  //
112  // Check to see if the device is enumerated off of a child list. If so,
113  // have the child list object perform any necessary actions.
114  //
116  }
_Must_inspect_result_ NTSTATUS UpdateDeviceAsMissing(__in CfxDevice *Device)
FxChildList * m_OwningChildList
Definition: fxpkgpdo.hpp:42
FxPkgPdo * pPkgPdo
FxDevice * pDevice
Definition: ps.c:97

◆ if() [2/2]

if ( NT_SUCCESSstatus)

Definition at line 402 of file fxdevicepdoapi.cpp.

402  {
403  return status;
404  }
NTSTATUS status

◆ RemoveEjectionDevice()

pPkgPdo RemoveEjectionDevice ( PhysicalDevice  )

Variable Documentation

◆ AddressDescription

◆ Device

__in WDFDEVICE Device
Initial value:

Definition at line 97 of file fxdevicepdoapi.cpp.

◆ else

else
Initial value:
{
"Can only eject PDOs, %!STATUS!", status)
PFX_DRIVER_GLOBALS pFxDriverGlobals
#define TRACINGDEVICE
Definition: dbgtrace.h:58
#define TRACE_LEVEL_ERROR
Definition: storswtr.h:27
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
Definition: ps.c:97

Definition at line 159 of file fxdevicepdoapi.cpp.

◆ IdentificationDescription

◆ NULL

return NULL

Definition at line 195 of file fxdevicepdoapi.cpp.

Referenced by GetPdoPackageFromDeviceHandle().

◆ pDevice

FxDevice* pDevice

Definition at line 101 of file fxdevicepdoapi.cpp.

Referenced by GetPdoPackageFromDeviceHandle(), and if().

◆ pFxDriverGlobals

PFX_DRIVER_GLOBALS pFxDriverGlobals

Definition at line 135 of file fxdevicepdoapi.cpp.

◆ PhysicalDevice

Initial value:

Definition at line 389 of file fxdevicepdoapi.cpp.

◆ pPkgPdo

◆ status

Initial value:
signed char * PCHAR
Definition: retypes.h:7
NTSTATUS GetPdoPackageFromDeviceHandle(__in IN PFX_DRIVER_GLOBALS CallersGlobals, __in WDFDEVICE Device, __in PCHAR FunctionName, __out FxPkgPdo **Package, __out PFX_DRIVER_GLOBALS *ObjectGlobals, __out_opt FxDevice **OutDevice=NULL)
PFX_DRIVER_GLOBALS pFxDriverGlobals
DriverGlobals
FxPkgPdo * pPkgPdo
_Must_inspect_result_ _In_ WDFDEVICE Device
Definition: wdfchildlist.h:474
FxDevice * pDevice
__inline PFX_DRIVER_GLOBALS GetFxDriverGlobals(__in PWDF_DRIVER_GLOBALS DriverGlobals)
Definition: fxglobals.h:597
#define __FUNCTION__
Definition: types.h:112

Definition at line 99 of file fxdevicepdoapi.cpp.

Referenced by GetPdoPackageFromDeviceHandle(), and if().