ReactOS 0.4.16-dev-1946-g52006dd
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 WDFFUNCWdfFunctions
 
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 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

◆ WdfFunctions

const WDFFUNC* WdfFunctions

Definition at line 24 of file wdfdriverentry.c.