21 #include "../fxtargetsshared.hpp" 35 m_EvtQueryRemove(FxDriverGlobals),
36 m_EvtRemoveCanceled(FxDriverGlobals),
37 m_EvtRemoveComplete(FxDriverGlobals)
56 #if (FX_CORE_MODE == FX_CORE_KERNEL_MODE) 58 #elif (FX_CORE_MODE == FX_CORE_USER_MODE) 61 m_pIoDispatcher =
NULL;
62 m_pRemoteDispatcher =
NULL;
63 m_NotificationCallback =
NULL;
100 if (pSearchDevice ==
NULL) {
105 "Attributes->ParentObject 0x%p must have WDFDEVICE as an " 106 "eventual ancestor, %!STATUS!",
111 else if (pSearchDevice !=
Device) {
116 "Attributes->ParentObject 0x%p ancestor is WDFDEVICE %p, but " 117 "not the same WDFDEVICE 0x%p passed to WdfIoTargetCreate, " 133 "Could not allocate memory for target, %!STATUS!",
status);
159 "Commit failed for target, %!STATUS!",
status);
229 "Reopen only supported if the open type is WdfIoTargetOpenByName WDFIOTARGET %p %!STATUS!",
256 "Could not allocate memory for target name for WDFIOTARGET %p",
269 "Could not allocate memory for target name " 287 "Opening WDFIOTARGET %p which is removed, state %d",
297 "Opening an already open WDFIOTARGET %p, open state %d",
337 if (reopen ==
FALSE) {
379 if (reopen ==
FALSE) {
385 if (reopen ==
FALSE) {
412 if (reopen ==
FALSE) {
431 "WDFIOTARGET %p, could not register pnp notification, %!STATUS! not " 445 #if (FX_CORE_MODE == FX_CORE_USER_MODE) 458 #if (FX_CORE_MODE == FX_CORE_KERNEL_MODE) 477 "WDFIOTARGET %p could not transition to started state, %!STATUS!",
537 pNotifyHandle =
NULL;
548 #pragma prefast(suppress: __WARNING_UNUSED_SCALAR_ASSIGNMENT, "PFD is warning that the following assignement is unused. Suppress it to prevent changing any logic.") 562 "Closing WDFIOTARGET %p which is opening, waiting on event %p",
584 "Closing WDFIOTARGET %p, reason: query remove",
623 "WDFIOTARGET %p: fileobj %p, devobj %p, handle %p, notify handle %I64d",
693 "WDFIOTARGET %p derefing PDO %p on close",
702 "WDFIOTARGET %p derefing FileObj %p on close",
706 #if (FX_CORE_MODE == FX_CORE_USER_MODE) 711 #if (FX_CORE_MODE == FX_CORE_USER_MODE) 712 UnbindHandle(&pointers);
718 "WDFIOTARGET %p closing handle %p on close",
731 "WDFIOTARGET %p cleared pointers %p state %!WDF_IO_TARGET_STATE!," 732 " open state %d, pdo %p, fileobj %p, handle %p",
__drv_restoresIRQL KIRQL __in BOOLEAN Unlock
MdDeviceObject m_TargetDevice
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
#define STATUS_INSUFFICIENT_RESOURCES
VOID CompletePendedRequestList(__in PLIST_ENTRY RequestListHead)
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
VOID UnregisterForPnpNotification(_In_ MdTargetNotifyHandle Handle)
FxIoTargetRemoteCloseReason
_Must_inspect_result_ NTSTATUS Commit(__in_opt PWDF_OBJECT_ATTRIBUTES Attributes, __out_opt WDFOBJECT *ObjectHandle, __in_opt FxObject *Parent=NULL, __in BOOLEAN AssignDriverAsDefaultParent=TRUE)
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
WDFDEVICE __inline GetHandle(VOID)
#define CheckState(OldState, NewState)
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG _In_opt_ PVOID EaBuffer
PDEVICE_OBJECT MdDeviceObject
#define STATUS_INVALID_DEVICE_REQUEST
VOID SetDeviceBase(__in CfxDeviceBase *DeviceBase)
FxObjectHandleGetPtr(GetFxDriverGlobals(DriverGlobals), Fdo, FX_TYPE_DEVICE,(PVOID *)&pFdo)
PFN_WDF_IO_TARGET_QUERY_REMOVE m_Method
PFILE_OBJECT MdFileObject
virtual VOID ClearTargetPointers(VOID)
#define TRACE_LEVEL_INFORMATION
VOID ResetTargetNotifyHandle(VOID)
_Must_inspect_result_ NTSTATUS InitModeSpecific(__in CfxDeviceBase *Device)
WDF_IO_TARGET_STATE m_State
#define UMDF_ONLY_CODE_PATH_ASSERT()
enum _WDF_IO_TARGET_OPEN_TYPE WDF_IO_TARGET_OPEN_TYPE
MdDeviceObject m_InStackDevice
#define STATUS_INVALID_DEVICE_STATE
static FxDeviceBase * _SearchForDevice(__in FxObject *Object, __out_opt IFxHasCallbacks **Callbacks)
_Must_inspect_result_ NTSTATUS OpenLocalTargetByFile(_In_ PWDF_IO_TARGET_OPEN_PARAMS OpenParams)
FxIoTargetRemoveComplete m_EvtRemoveComplete
FxIoTargetQueryRemove m_EvtQueryRemove
GLenum const GLfloat * params
#define TRACE_LEVEL_VERBOSE
static __inline VOID MxReferenceObject(__in PVOID Object)
PVOID __inline GetObjectHandle(VOID)
static __inline NTSTATUS MxClose(__in HANDLE Handle)
NTSTATUS EnterCRAndWaitAndLeave(VOID)
_Must_inspect_result_ BOOLEAN IsVersionGreaterThanOrEqualTo(__in ULONG Major, __in ULONG Minor)
UNICODE_STRING TargetDeviceName
MdFileObject m_TargetFileObject
MdDeviceObject m_TargetPdo
virtual VOID Remove(VOID)
NTSTATUS GetTargetDeviceRelations(_Out_ BOOLEAN *Close)
UCHAR GetTargetIoType(VOID)
_Must_inspect_result_ _In_opt_ WDFKEY _In_ PCUNICODE_STRING _In_ ACCESS_MASK _In_ ULONG _Out_opt_ PULONG CreateDisposition
PFX_DRIVER_GLOBALS pFxDriverGlobals
VOID RemoveModeSpecific(VOID)
IN PVCB IN PDIRENT OUT PULONG EaLength
FxIoTargetClearedPointers * m_ClearedPointers
WDF_EXTERN_C_START enum _WDF_IO_TARGET_STATE WDF_IO_TARGET_STATE
#define NT_SUCCESS(StatCode)
VOID Close(__in FxIoTargetRemoteCloseReason Reason)
_Must_inspect_result_ _In_ WDFIOTARGET _In_ PWDF_IO_TARGET_OPEN_PARAMS OpenParams
_Must_inspect_result_ NTSTATUS FxDuplicateUnicodeString(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in const UNICODE_STRING *Source, __out PUNICODE_STRING Destination)
LARGE_INTEGER AllocationSize
static _Must_inspect_result_ NTSTATUS _Create(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PWDF_OBJECT_ATTRIBUTES Attributes, __in FxDeviceBase *Device, __out FxIoTargetRemote **Target)
#define _Must_inspect_result_
_Must_inspect_result_ _In_ WDFDEVICE Device
virtual VOID ClearTargetPointers(VOID)
#define KMDF_ONLY_CODE_PATH_ASSERT()
virtual VOID WaitForSentIoToComplete(VOID)
_Must_inspect_result_ _In_opt_ WDFKEY _In_ PCUNICODE_STRING _In_ ACCESS_MASK _In_ ULONG CreateOptions
FxIoTargetRemote(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
#define TRACE_LEVEL_ERROR
MdFileObject TargetFileObject
virtual _Must_inspect_result_ NTSTATUS GotoStartState(__in PLIST_ENTRY RequestListHead, __in BOOLEAN Lock=TRUE)
FxIoTargetRemoveOpenParams m_OpenParams
__inline PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
MdTargetNotifyHandle m_TargetNotifyHandle
PFN_WDF_IO_TARGET_REMOVE_CANCELED m_Method
FxIoTargetRemoveCanceled m_EvtRemoveCanceled
virtual VOID WaitForDisposeEvent(VOID)
#define InitializeListHead(ListHead)
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
_Must_inspect_result_ NTSTATUS Open(__in PWDF_IO_TARGET_OPEN_PARAMS OpenParams)
NTSTATUS InitRemote(__in FxDeviceBase *Device)
PLARGE_INTEGER AllocationSizePointer
virtual VOID GotoRemoveState(__in WDF_IO_TARGET_STATE NewState, __in PLIST_ENTRY PendedRequestListHead, __in PSINGLE_LIST_ENTRY SentRequestListHead, __in BOOLEAN Lock, __out PBOOLEAN Wait)
VOID Set(__in PWDF_IO_TARGET_OPEN_PARAMS OpenParams, __in PUNICODE_STRING Name, __in PVOID Ea, __in ULONG EaLength)
static VOID _CancelSentRequests(__in PSINGLE_LIST_ENTRY RequestListHead)
VOID DeleteFromFailedCreate(VOID)
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
#define RtlZeroMemory(Destination, Length)
BOOLEAN CanRegisterForPnpNotification(VOID)
#define RtlCopyMemory(Destination, Source, Length)
NTSTATUS RegisterForPnpNotification(VOID)
GLuint GLuint GLsizei GLenum type
NTSTATUS InitRemoteModeSpecific(__in FxDeviceBase *Device)
unsigned long long UINT64
void FxPoolFree(__in_xcount(ptr is at an offset from AllocationStart) PVOID ptr)
WDF_IO_TARGET_OPEN_TYPE OpenType
PVOID PVOID PWCHAR PVOID USHORT PULONG Reason
static __inline VOID MxDereferenceObject(__in PVOID Object)
static SERVICE_STATUS status
VOID SubmitPendedRequests(__in PLIST_ENTRY RequestListHeadHead)
NTSTATUS OpenTargetHandle(_In_ PWDF_IO_TARGET_OPEN_PARAMS OpenParams, _Inout_ FxIoTargetRemoveOpenParams *pParams)
PFN_WDF_IO_TARGET_REMOVE_COMPLETE m_Method
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
GLuint const GLchar * name