ReactOS 0.4.17-dev-1190-g4c812f4
wdfdriverentry.c File Reference
#include <ntddk.h>
#include <windef.h>
#include <fxldr.h>
#include "wdf.h"
Include dependency graph for wdfdriverentry.c:

Go to the source code of this file.

Macros

#define WDFENTRY_TAG   'EFDW'
 

Functions

NTSTATUS NTAPI DriverEntry (_In_ PDRIVER_OBJECT DriverObject, _In_ PUNICODE_STRING RegistryPath)
 
static VOID FxDriverUnloadCommon (VOID)
 
VOID NTAPI FxDriverUnload (_In_ PDRIVER_OBJECT DriverObject)
 
NTSTATUS NTAPI FxDriverEntry (_In_ PDRIVER_OBJECT DriverObject, _In_ PUNICODE_STRING RegistryPath)
 

Variables

const WDFFUNC * WdfFunctions
 
PWDF_DRIVER_GLOBALS WdfDriverGlobals
 
WDF_BIND_INFO BindInfo
 
PDRIVER_UNLOAD pOriginalUnload = NULL
 
UNICODE_STRING gRegistryPath
 

Macro Definition Documentation

◆ WDFENTRY_TAG

#define WDFENTRY_TAG   'EFDW'

Definition at line 14 of file wdfdriverentry.c.

Function Documentation

◆ DriverEntry()

NTSTATUS NTAPI DriverEntry ( _In_ PDRIVER_OBJECT  DriverObject,
_In_ PUNICODE_STRING  RegistryPath 
)

Definition at line 1771 of file compbatt.c.

1774{
1775 /* Register add device routine */
1776 DriverObject->DriverExtension->AddDevice = CompBattAddDevice;
1777
1778 /* Register other handlers */
1785 return STATUS_SUCCESS;
1786}
#define IRP_MJ_PNP
Definition: cdrw_usr.h:52
NTSTATUS NTAPI CompBattSystemControl(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
Definition: compbatt.c:42
NTSTATUS NTAPI CompBattIoctl(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
Definition: compbatt.c:428
NTSTATUS NTAPI CompBattOpenClose(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
Definition: compbatt.c:23
NTSTATUS NTAPI CompBattPnpDispatch(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
Definition: comppnp.c:412
NTSTATUS NTAPI CompBattPowerDispatch(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
Definition: comppnp.c:18
NTSTATUS NTAPI CompBattAddDevice(_In_ PDRIVER_OBJECT DriverObject, _In_ PDEVICE_OBJECT PdoDeviceObject)
Definition: comppnp.c:328
#define IRP_MJ_CLOSE
Definition: rdpdr.c:45
#define IRP_MJ_DEVICE_CONTROL
Definition: rdpdr.c:52
#define IRP_MJ_CREATE
Definition: rdpdr.c:44
#define STATUS_SUCCESS
Definition: shellext.h:65
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
Definition: wdfdriver.h:213
#define IRP_MJ_SYSTEM_CONTROL
#define IRP_MJ_POWER

◆ FxDriverEntry()

NTSTATUS NTAPI FxDriverEntry ( _In_ PDRIVER_OBJECT  DriverObject,
_In_ PUNICODE_STRING  RegistryPath 
)

Definition at line 60 of file wdfdriverentry.c.

63{
65
66 if (DriverObject == NULL)
67 {
69 }
70
71 // Copy registry path
76
78 {
80 }
81
83
84 // Bind wdf driver to framework
87 &BindInfo,
89
90 if (!NT_SUCCESS(status))
91 {
92 return status;
93 }
94
95 // Call original entry point
97 if (!NT_SUCCESS(status))
98 {
100 return status;
101 }
102
104 {
105 pOriginalUnload = DriverObject->DriverUnload;
106 DriverObject->DriverUnload = FxDriverUnload;
107 }
108 return STATUS_SUCCESS;
109}
LONG NTSTATUS
Definition: precomp.h:26
#define NULL
Definition: types.h:112
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
DRIVER_INITIALIZE DriverEntry
Definition: condrv.c:21
#define ExAllocatePoolWithTag(hernya, size, tag)
Definition: env_spec_w32.h:350
#define PagedPool
Definition: env_spec_w32.h:308
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString)
#define UNICODE_NULL
USHORT MaximumLength
Definition: env_spec_w32.h:370
BOOLEAN DisplaceDriverUnload
Definition: wdfglobals.h:70
Definition: ps.c:97
#define STATUS_INSUFFICIENT_RESOURCES
Definition: udferr_usr.h:158
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
Definition: wdfdriver.h:215
#define WDFENTRY_TAG
PWDF_DRIVER_GLOBALS WdfDriverGlobals
UNICODE_STRING gRegistryPath
PDRIVER_UNLOAD pOriginalUnload
static VOID FxDriverUnloadCommon(VOID)
WDF_BIND_INFO BindInfo
NTSTATUS NTAPI WdfVersionBind(_In_ PDRIVER_OBJECT DriverObject, _In_ PUNICODE_STRING RegistryPath, _Inout_ PWDF_BIND_INFO BindInfo, _Out_ PWDF_COMPONENT_GLOBALS *ComponentGlobals)
Bind client driver with framework.
Definition: wdfldr.c:411

◆ FxDriverUnload()

Definition at line 48 of file wdfdriverentry.c.

50{
51 if (pOriginalUnload != NULL)
52 {
54 }
56}

◆ FxDriverUnloadCommon()

static VOID FxDriverUnloadCommon ( VOID  )
static

Definition at line 41 of file wdfdriverentry.c.

42{
44}
NTSTATUS NTAPI WdfVersionUnbind(_In_ PUNICODE_STRING RegistryPath, _In_ PWDF_BIND_INFO BindInfo, _In_ PWDF_COMPONENT_GLOBALS ComponentGlobals)
Unbind client driver from framework.
Definition: wdfldr.c:519

Referenced by FxDriverEntry(), and FxDriverUnload().

Variable Documentation

◆ BindInfo

WDF_BIND_INFO BindInfo
Initial value:
=
{
.Size = sizeof(BindInfo),
.Component = L"KmdfLibrary",
.Version.Major = __WDF_MAJOR_VERSION,
.Version.Minor = __WDF_MINOR_VERSION,
.Version.Build = __WDF_BUILD_NUMBER,
.FuncTable = (WDFFUNC *)&WdfFunctions
}
#define L(x)
Definition: resources.c:13
VOID(NTAPI * WDFFUNC)(VOID)
Definition: wdf.h:68
const WDFFUNC * WdfFunctions
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT _In_ USHORT Version
Definition: wdffdo.h:469
@ WdfFunctionTableNumEntries
Definition: wdffuncenum.h:469
_In_ ULONG Component
Definition: potypes.h:499

Definition at line 26 of file wdfdriverentry.c.

Referenced by _IRQL_requires_(), AfdBind(), BindAdapter(), ClassLinkInClient(), DereferenceClassVersion(), FxDriverEntry(), FxDriverUnloadCommon(), GetClassRegistryHandle(), GetClassServicePath(), GetDefaultClassServiceName(), GetDefaultServiceName(), GetVersionRegistryHandle(), GetVersionServicePath(), IPCreateInterface(), LibraryFindClientLocked(), LibraryLinkInClient(), LibraryUnlinkClient(), LoopRegisterAdapter(), main(), ReferenceClassVersion(), WdfVersionBind(), WdfVersionBindClass(), WdfVersionUnbind(), and WdfVersionUnbindClass().

◆ gRegistryPath

UNICODE_STRING gRegistryPath

Definition at line 37 of file wdfdriverentry.c.

Referenced by FxDriverEntry(), and FxDriverUnloadCommon().

◆ pOriginalUnload

PDRIVER_UNLOAD pOriginalUnload = NULL

Definition at line 36 of file wdfdriverentry.c.

Referenced by FxDriverEntry(), and FxDriverUnload().

◆ WdfDriverGlobals

PWDF_DRIVER_GLOBALS WdfDriverGlobals

Definition at line 25 of file wdfdriverentry.c.

Referenced by _IRQL_requires_(), FxDriverEntry(), and FxDriverUnloadCommon().

◆ WdfFunctions

const WDFFUNC* WdfFunctions

Definition at line 24 of file wdfdriverentry.c.