21 #include "../../fxtargetsshared.hpp" 77 "WDFIOTARGET %p: query remove, default action (close for QR)",
90 "WDFIOTARGET %p: remove complete notification", pThis->
GetObjectHandle());
102 "WDFIOTARGET %p: remove complete, default action (close)",
111 else if (
FxIsEqualGuid(&pNotification->
Event, &GUID_TARGET_DEVICE_REMOVE_CANCELLED)) {
115 "WDFIOTARGET %p: remove canceled notification", pThis->
GetObjectHandle());
125 "WDFIOTARGET %p: remove canceled, default action (reopen)",
213 &pParams->TargetDeviceName,
219 pParams->DesiredAccess,
222 pParams->AllocationSizePointer,
223 pParams->FileAttributes,
224 pParams->ShareAccess,
225 pParams->CreateDisposition,
226 pParams->CreateOptions,
228 pParams->EaBufferLength);
235 "ZwCreateFile for WDFIOTARGET %p returned status %!STATUS!, info 0x%x",
244 pParams->DesiredAccess,
256 "WDFIOTARGET %p, could not convert filobj %p to devobj",
265 "WDFIOTARGET %p, could not convert handle %p to fileobject, " 273 "ZwCreateFile for WDFIOTARGET %p returned status %!STATUS!, info 0x%x",
345 "Unable to allocate memory for IRP WDFIOTARGET %p, %!STATUS!",
_In_ PVOID NotificationStructure
MdDeviceObject m_TargetDevice
return STATUS_NOT_SUPPORTED
#define STATUS_INSUFFICIENT_RESOURCES
struct _TARGET_DEVICE_REMOVAL_NOTIFICATION * PTARGET_DEVICE_REMOVAL_NOTIFICATION
VOID UnregisterForPnpNotification(_In_ MdTargetNotifyHandle Handle)
VOID SetStatus(__in NTSTATUS Status)
PDEVICE_OBJECT Objects[1]
VOID Invoke(__in WDFIOTARGET Target)
_Must_inspect_result_ BOOLEAN __inline FxIsEqualGuid(__in CONST GUID *Lhs, __in CONST GUID *Rhs)
static stack_node_t * stack
PDEVICE_OBJECT NTAPI IoGetRelatedDeviceObject(IN PFILE_OBJECT FileObject)
PFN_WDF_IO_TARGET_QUERY_REMOVE m_Method
#define OBJ_KERNEL_HANDLE
FxIoTargetRemoveComplete m_EvtRemoveComplete
FxIoTargetQueryRemove m_EvtQueryRemove
NTSTATUS NTAPI ObReferenceObjectByHandle(IN HANDLE Handle, IN ACCESS_MASK DesiredAccess, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, OUT PVOID *Object, OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL)
PDEVICE_OBJECT pTopOfStack
GLenum const GLfloat * params
CHECK_RETURN_IF_USER_MODE NTSTATUS SendIrpSynchronously(__in MdDeviceObject DeviceObject)
#define TRACE_LEVEL_VERBOSE
PVOID __inline GetObjectHandle(VOID)
struct _DEVICE_RELATIONS * PDEVICE_RELATIONS
MdFileObject m_TargetFileObject
MdDeviceObject m_TargetPdo
PIO_STACK_LOCATION GetNextIrpStackLocation(VOID)
PDEVICE_OBJECT NTAPI IoGetAttachedDeviceReference(PDEVICE_OBJECT DeviceObject)
PFN_IO_UNREGISTER_PLUGPLAY_NOTIFICATION_EX IoUnregisterPlugPlayNotificationEx
NTSTATUS GetTargetDeviceRelations(_Out_ BOOLEAN *Close)
PFX_DRIVER_GLOBALS pFxDriverGlobals
#define NT_SUCCESS(StatCode)
#define STATUS_NO_SUCH_DEVICE
#define ObDereferenceObject
static __inline KIRQL MxGetCurrentIrql()
FORCEINLINE VOID WDF_IO_TARGET_OPEN_PARAMS_INIT_REOPEN(_Out_ PWDF_IO_TARGET_OPEN_PARAMS Params)
_Must_inspect_result_ NTSTATUS Invoke(__in WDFIOTARGET IoTarget)
NTSTATUS NTAPI IoUnregisterPlugPlayNotification(_In_ PVOID NotificationEntry)
VOID Close(__in FxIoTargetRemoteCloseReason Reason)
_Must_inspect_result_ _In_ WDFIOTARGET _In_ PWDF_IO_TARGET_OPEN_PARAMS OpenParams
#define _Must_inspect_result_
POBJECT_TYPE IoFileObjectType
FxLibraryGlobalsType FxLibraryGlobals
#define TRACE_LEVEL_ERROR
#define TRACE_LEVEL_WARNING
__inline MdDriverObject GetDriverObject(VOID)
ULONG_PTR GetInformation()
__inline PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
MdTargetNotifyHandle m_TargetNotifyHandle
PFN_WDF_IO_TARGET_REMOVE_CANCELED m_Method
FxIoTargetRemoveCanceled m_EvtRemoveCanceled
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
_Must_inspect_result_ NTSTATUS Open(__in PWDF_IO_TARGET_OPEN_PARAMS OpenParams)
#define IRP_MN_QUERY_DEVICE_RELATIONS
VOID Invoke(__in WDFIOTARGET Target)
#define InitializeObjectAttributes(p, n, a, r, s)
NTSTATUS NTAPI IoRegisterPlugPlayNotification(_In_ IO_NOTIFICATION_EVENT_CATEGORY EventCategory, _In_ ULONG EventCategoryFlags, _In_opt_ PVOID EventCategoryData, _In_ PDRIVER_OBJECT DriverObject, _In_ PDRIVER_NOTIFICATION_CALLBACK_ROUTINE CallbackRoutine, _Inout_opt_ PVOID Context, _Out_ PVOID *NotificationEntry)
NTSTATUS RegisterForPnpNotification(VOID)
PIRP NTAPI IoAllocateIrp(IN CCHAR StackSize, IN BOOLEAN ChargeQuota)
static SERVICE_STATUS status
__inline WDFIOTARGET GetHandle(VOID)
NTSTATUS OpenTargetHandle(_In_ PWDF_IO_TARGET_OPEN_PARAMS OpenParams, _Inout_ FxIoTargetRemoveOpenParams *pParams)
PFN_WDF_IO_TARGET_REMOVE_COMPLETE m_Method
static DRIVER_NOTIFICATION_CALLBACK_ROUTINE _PlugPlayNotification