39 m_DriverObject(ArgDriverObject),
40 m_CallbackMutexLock(FxDriverGlobals)
49 #if (FX_CORE_MODE == FX_CORE_KERNEL_MODE) 74 m_DriverParametersKey =
NULL;
84 "FxDriver 0x%p not disposed: this maybe a driver reference count " 109 if (m_DriverParametersKey !=
NULL) {
113 "Cannot close Driver Parameters key %!STATUS!",
116 m_DriverParametersKey =
NULL;
123 ClearDriverObjectFxDriver();
155 "Unloading WDFDRIVER %p, PDRIVER_OBJECT_UM %p",
163 "Driver unload routine Exit WDFDRIVER %p, PDRIVER_OBJECT_UM %p",
200 sizeof(FxDriverGlobals->Public.DriverName) );
230 regLen = pEnd -
pCur;
236 for (
i = 0;
i < regLen;
i++) {
237 FxDriverGlobals->Public.DriverName[
i] = (
CHAR)
pCur[
i];
243 #if FX_CORE_MODE==FX_CORE_KERNEL_MODE 245 sizeof(FxDriverGlobals->Public.DriverName),
250 sizeof(FxDriverGlobals->Public.DriverName),
292 pBegin = &FxDriverGlobals->Public.DriverName[0];
299 if ((pBegin[0] ==
'w' || pBegin[0] ==
'W') &&
300 (pBegin[1] ==
'd' || pBegin[1] ==
'D') &&
301 (pBegin[2] ==
'f' || pBegin[2] ==
'F')) {
312 FxDriverGlobals->Tag =
FX_TAG;
328 FxDriverGlobals->Public.DriverTag = FxDriverGlobals->Tag;
384 if (ArgRegistryPath !=
NULL) {
396 ArgRegistryPath->Buffer,
397 ArgRegistryPath->Length);
471 #if ((FX_CORE_MODE)==(FX_CORE_KERNEL_MODE)) 495 #if ((FX_CORE_MODE)==(FX_CORE_KERNEL_MODE)) 515 "Driver Object %p, reg path %wZ cannot be " 516 "unloaded, no DriverUnload routine specified",
524 status = OpenParametersKey();
528 "Cannot open Driver Parameters key %!STATUS!",
584 BOOLEAN automaticLockingRequired;
586 automaticLockingRequired =
FALSE;
631 automaticLockingRequired =
TRUE;
649 if (automaticLockingRequired) {
static VOID DispatchUm(_In_ MdDeviceObject DeviceObject, _In_ MdIrp Irp, _In_opt_ IUnknown *Context)
virtual VOID DeleteObject(VOID)
_Must_inspect_result_ FxString * GetRegistryPath(VOID)
static MdDriverUnloadType Unload
PFN_WDF_DRIVER_DEVICE_ADD Method
VOID ConfigureConstraints(__in_opt PWDF_OBJECT_ATTRIBUTES DriverAttributes)
virtual ULONG Release(__in_opt PVOID Tag=NULL, __in LONG Line=0, __in_opt PSTR File=NULL)
FxCallbackMutexLock m_CallbackMutexLock
NTSTATUS WinErrorToNtStatus(__in ULONG WinError)
#define IRP_MN_REMOVE_DEVICE
#define STATUS_INSUFFICIENT_RESOURCES
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
ACPI_SIZE strlen(const char *String)
#define UNREFERENCED_PARAMETER(P)
FxDisposeList * m_DisposeList
WDFCASSERT(sizeof(WDF_DRIVER_CONFIG_V1_0)==sizeof(WDF_DRIVER_CONFIG_V1_1))
_Must_inspect_result_ NTSTATUS Initialize(__in PCUNICODE_STRING RegistryPath, __in PWDF_DRIVER_CONFIG Config, __in_opt PWDF_OBJECT_ATTRIBUTES DriverAttributes)
#define IRP_MJ_MAXIMUM_FUNCTION
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
#define KD_DEBUGGER_NOT_PRESENT
static VOID DispatchWithLockUm(_In_ MdDeviceObject DeviceObject, _In_ MdIrp Irp, _In_opt_ IUnknown *Context)
#define TRACE_LEVEL_INFORMATION
static _Must_inspect_result_ NTSTATUS STDCALL DispatchWithLock(__in MdDeviceObject DeviceObject, __in MdIrp OriginalIrp)
#define FxVerifierBugCheck(FxDriverGlobals, Error,...)
NTSTRSAFEAPI RtlStringCbCopyA(_Out_writes_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PSTR pszDest, _In_ size_t cbDest, _In_ NTSTRSAFE_PCSTR pszSrc)
FORCEINLINE VOID WDF_DRIVER_CONFIG_INIT(_Out_ PWDF_DRIVER_CONFIG Config, _In_opt_ PFN_WDF_DRIVER_DEVICE_ADD EvtDriverDeviceAdd)
#define TRACE_LEVEL_VERBOSE
FxObject * m_CallbackLockObjectPtr
#define TRACE_LEVEL_FATAL
#define HRESULT_FACILITY(hr)
VOID SetMajorFunction(_In_ UCHAR i, _In_ MdDriverDispatch Value)
GLenum GLuint GLenum GLsizei length
PFN_WDF_DRIVER_UNLOAD Method
VOID MarkDisposeOverride(__in FxObjectLockState State=ObjectLock)
STRSAFEAPI StringCbCopyA(STRSAFE_LPSTR pszDest, size_t cbDest, STRSAFE_LPCSTR pszSrc)
static FxDriver * GetFxDriver(__in MdDriverObject DriverObject)
static VOID _InitializeTag(__in PFX_DRIVER_GLOBALS Globals, __in PWDF_DRIVER_CONFIG Config)
_Must_inspect_result_ NTSTATUS AllocateDriverObjectExtensionAndStoreFxDriver(VOID)
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
VOID MarkPassiveCallbacks(__in FxObjectLockState State=ObjectLock)
__inline WDFDRIVER GetHandle(VOID)
FxCallbackLock * m_CallbackLockPtr
PFX_DRIVER_GLOBALS pFxDriverGlobals
#define NT_SUCCESS(StatCode)
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING _In_opt_ PWDF_OBJECT_ATTRIBUTES DriverAttributes
#define KD_DEBUGGER_ENABLED
virtual VOID DeleteObject(VOID)
_Must_inspect_result_ NTSTATUS Assign(__in PCWSTR SourceString)
WDF_DRIVER_CONFIG m_Config
static MdDriverAddDeviceType AddDevice
VOID SetDriverUnload(_In_ MdDriverUnload Value)
#define STATUS_UNSUCCESSFUL
void SetCallbackLockPtr(FxCallbackLock *Lock)
PVOID __inline GetObjectHandleUnchecked(VOID)
virtual void Initialize(FxObject *ParentObject)
VOID MarkNoDeleteDDI(__in FxObjectLockState State=ObjectLock)
WDF_EXECUTION_LEVEL m_ExecutionLevel
#define _Must_inspect_result_
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_CHILD_LIST_CONFIG Config
__inline MdDriverObject GetObject(VOID)
#define TRACE_LEVEL_ERROR
FxDriverUnload m_DriverUnload
static NTSTATUS _Create(PFX_DRIVER_GLOBALS FxDriverGlobals, PVOID WdmObject, FxDisposeList **pObject)
WDF_SYNCHRONIZATION_SCOPE m_SynchronizationScope
VOID FxDestroy(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
__inline PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
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
UNICODE_STRING m_RegistryPath
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
static FxDeviceRemLockAction __inline _RequiresRemLock(__in UCHAR MajorCode, __in UCHAR MinorCode)
void Invoke(__in WDFDRIVER Driver)
#define WDF_NO_OBJECT_ATTRIBUTES
BOOLEAN m_DebuggerConnected
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define RtlZeroMemory(Destination, Length)
#define RtlCopyMemory(Destination, Source, Length)
FxDriver(__in MdDriverObject DriverObject, __in PWDF_DRIVER_CONFIG DriverConfig, __in PFX_DRIVER_GLOBALS FxDriverGlobals)
virtual BOOLEAN Dispose(VOID)
void FxPoolFree(__in_xcount(ptr is at an offset from AllocationStart) PVOID ptr)
static _Must_inspect_result_ NTSTATUS STDCALL Dispatch(__in MdDeviceObject DeviceObject, __in MdIrp OriginalIrp)
VOID SetDriverExtensionAddDevice(_In_ MdDriverAddDevice Value)
static VOID _InitializeDriverName(__in PFX_DRIVER_GLOBALS Globals, __in PCUNICODE_STRING RegistryPath)
static SERVICE_STATUS status
virtual BOOLEAN Dispose(VOID)
#define WDF_DRIVER_GLOBALS_NAME_LEN
MxDriverObject m_DriverObject
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_ PWDF_DRIVER_CONFIG DriverConfig
FxDriverDeviceAdd m_DriverDeviceAdd