ReactOS 0.4.16-dev-321-g63bb46a
fxldrum.h
Go to the documentation of this file.
1/*++
2
3Copyright (c) Microsoft Corporation
4
5Module Name:
6
7 fxldrum.h
8
9Abstract:
10
11 This is the UMDF version of wdfldr.h
12
13
14--*/
15#ifndef __FXLDRUM_H__
16#define __FXLDRUM_H__
17
18#define WDF_COMPONENT_NAME(a) L#a
19
20typedef
22(*WDFFUNC)(
23 VOID
24 );
25
29
30//
31// Version container
32//
33typedef struct _WDF_VERSION {
38
39//
40// WDF bind information structure.
41//
42typedef struct _WDF_BIND_INFO {
43 ULONG Size;
48
49
50
51
52
53 //
54 // This field is not used in UMDF
55 //
57
58
59
61
63
64typedef
67 VOID
68 );
69
70typedef
73 VOID
74 );
75
76typedef
80 PWDF_COMPONENT_GLOBALS * ComponentGlobals,
82 );
83
84typedef
89 );
90
91
92typedef struct _WDF_LIBRARY_INFO {
93 ULONG Size;
100
101typedef
104 VOID
105 );
106
107//
108// Framework 2.x's driver object.
109//
111struct IWudfDeviceStack;
112struct IWudfDeviceStack2;
113struct IWudfDevice;
114struct IWudfIrp;
115struct IUnknown;
116typedef enum _WDF_DEVICE_IO_BUFFER_RETRIEVAL *PWDF_DEVICE_IO_BUFFER_RETRIEVAL;
117typedef enum RdWmiPowerAction;
118typedef const GUID *LPCGUID;
120class FxDriver;
121
122//
123// Valid flags for use in the DRIVER_OBJECT_UM::Flags field.
124//
128
129//
130// Driver object's basic interface.
131//
132typedef
137 _In_ IWudfDeviceStack * DevStack,
138 _In_ LPCWSTR KernelDeviceName,
139 _In_opt_ HKEY hPdoKey,
140 _In_ LPCWSTR pwszServiceName,
141 _In_ LPCWSTR pwszDevInstanceID,
142 _In_ ULONG ulDriverID
143 );
144
146
147typedef
148VOID
150 _In_ IWudfDevice * DeviceObject,
151 _In_ IWudfIrp * Irp,
153 );
154
156
157typedef
158VOID
161 );
162
164
165typedef struct _DRIVER_OBJECT_UM {
167
168 //
169 // The following links all of the devices created by a single driver
170 // together on a list, and the Flags word provides an extensible flag
171 // location for driver objects.
172 //
174
175 //
176 // The driver name field is used by the error log thread
177 // determine the name of the driver that an I/O request is/was bound.
178 //
180
181 //
182 // Store FxDriver
183 //
185
186 //
187 // Host device stack. This field is only valid while initializing
188 // the driver, such as during DriverEntry, and is NULL at all other times.
189 //
190 IWudfDeviceStack2* WudfDevStack;
191
192 //
193 // Callback environment for driver workitems.
194 //
196
197 //
198 // Group that tracks thread pool callbacks.
199 //
201
202 //
203 // A global number that driver IFR and framework IFR can opt into
204 // using as their record ordering number. This allows the framework
205 // and driver IFR record lists to be merged and sorted before being
206 // displayed.
207 //
209
210 //
211 // The following section describes the entry points to this particular
212 // driver. Note that the major function dispatch table must be the last
213 // field in the object so that it remains extensible.
214 //
218
220
221typedef struct _CLIENT_INFO {
222 //
223 // Size of this structure
224 //
225 ULONG Size;
226
227 //
228 // registry service path of client driver
229 //
231
233
234//
235// Event name: WdfCensusEvtLinkClientToCx
236//
237// Source: WudfHost (UM loader)
238//
239// Description: Written when a client is binding to a class extension.
240// WdfVersionBindClass which is called from the client's stub,
241// will load/reference the Cx and add it to the fx library's
242// list of clients. The client driver's class extension list is
243// also updated at that time, which is when this event is written.
244//
245// Frequency: Everytime a client driver binds to a class extension.
246//
247//
248#define WDF_CENSUS_EVT_WRITE_LINK_CLIENT_TO_CX(TraceHandle, CxImageName, ClientImageName) \
249 TraceLoggingWrite(TraceHandle, \
250 "WdfCensusEvtLinkClientToCx", \
251 WDF_TELEMETRY_EVT_KEYWORDS, \
252 TraceLoggingWideString(CxImageName, "CxImageName"), \
253 TraceLoggingWideString(ClientImageName, "ClientImageName" ) \
254 );
255
256#endif // __FXLDRUM_H__
unsigned long long UINT64
#define VOID
Definition: acefi.h:82
LONG NTSTATUS
Definition: precomp.h:26
_In_ PIRP Irp
Definition: csq.h:116
#define NTSTATUS
Definition: precomp.h:19
DriverGlobals
struct _DRIVER_OBJECT_UM DRIVER_OBJECT_UM
struct _WDF_LIBRARY_INFO * PWDF_LIBRARY_INFO
ULONG WDF_MINOR_VERSION
Definition: fxldrum.h:27
struct _WDF_LIBRARY_INFO WDF_LIBRARY_INFO
VOID(* WDFFUNC)(VOID)
Definition: fxldrum.h:22
PWDF_LIBRARY_INFO(* PFX_GET_LIBRARY_INFO_UM)(VOID)
Definition: fxldrum.h:103
struct _CLIENT_INFO CLIENT_INFO
DRIVER_ADD_DEVICE_UM * PFN_DRIVER_ADD_DEVICE_UM
Definition: fxldrum.h:145
DRIVER_DISPATCH_UM * PFN_DRIVER_DISPATCH_UM
Definition: fxldrum.h:155
struct _DRIVER_OBJECT_UM * PDRIVER_OBJECT_UM
Definition: fxldrum.h:110
PVOID * PWDF_COMPONENT_GLOBALS
Definition: fxldrum.h:62
ULONG WDF_MAJOR_VERSION
Definition: fxldrum.h:26
NTSTATUS(* PFNLIBRARYUNREGISTERCLIENT)(PWDF_BIND_INFO Info, PWDF_COMPONENT_GLOBALS DriverGlobals)
Definition: fxldrum.h:86
NTSTATUS DRIVER_ADD_DEVICE_UM(_In_ PDRIVER_OBJECT_UM DriverObject, _In_ PVOID Context, _In_ IWudfDeviceStack *DevStack, _In_ LPCWSTR KernelDeviceName, _In_opt_ HKEY hPdoKey, _In_ LPCWSTR pwszServiceName, _In_ LPCWSTR pwszDevInstanceID, _In_ ULONG ulDriverID)
Definition: fxldrum.h:134
struct _CLIENT_INFO * PCLIENT_INFO
struct _WDF_BIND_INFO WDF_BIND_INFO
DRIVER_UNLOAD_UM * PFN_DRIVER_UNLOAD_UM
Definition: fxldrum.h:163
const GUID * LPCGUID
Definition: fxldrum.h:118
NTSTATUS(* PFNLIBRARYDECOMMISSION)(VOID)
Definition: fxldrum.h:72
PVOID WDF_COMPONENT_GLOBALS
Definition: fxldrum.h:62
VOID DRIVER_DISPATCH_UM(_In_ IWudfDevice *DeviceObject, _In_ IWudfIrp *Irp, _In_opt_ IUnknown *Context)
Definition: fxldrum.h:149
struct _WDF_VERSION WDF_VERSION
FxDriverObjectUmFlags
Definition: fxldrum.h:125
@ DriverObjectUmFlagsLoggingEnabled
Definition: fxldrum.h:126
enum _WDF_DEVICE_IO_BUFFER_RETRIEVAL * PWDF_DEVICE_IO_BUFFER_RETRIEVAL
Definition: fxldrum.h:116
ULONG WDF_BUILD_NUMBER
Definition: fxldrum.h:28
UINT64 WUDF_INTERFACE_CONTEXT
Definition: fxldrum.h:119
NTSTATUS(* PFNLIBRARYCOMMISSION)(VOID)
Definition: fxldrum.h:66
NTSTATUS(* PFNLIBRARYREGISTERCLIENT)(PWDF_BIND_INFO Info, PWDF_COMPONENT_GLOBALS *ComponentGlobals, PVOID *Context)
Definition: fxldrum.h:78
VOID DRIVER_UNLOAD_UM(_In_ PDRIVER_OBJECT_UM DriverObject)
Definition: fxldrum.h:159
struct _WDF_BIND_INFO * PWDF_BIND_INFO
#define _In_
Definition: no_sal2.h:158
#define _In_opt_
Definition: no_sal2.h:212
long LONG
Definition: pedump.c:60
unsigned short USHORT
Definition: pedump.c:61
PUNICODE_STRING RegistryPath
Definition: fxldr.h:186
ULONG Size
Definition: fxldr.h:181
FxDriver * FxDriver
Definition: fxldrum.h:184
IWudfDeviceStack2 * WudfDevStack
Definition: fxldrum.h:190
LONG IfrSequenceNumber
Definition: fxldrum.h:208
UNICODE_STRING DriverName
Definition: fxldrum.h:179
PFN_DRIVER_ADD_DEVICE_UM AddDevice
Definition: fxldrum.h:215
PTP_CLEANUP_GROUP ThreadPoolGroup
Definition: fxldrum.h:200
PFN_DRIVER_UNLOAD_UM DriverUnload
Definition: fxldrum.h:216
TP_CALLBACK_ENVIRON ThreadPoolEnv
Definition: fxldrum.h:195
ULONG Size
Definition: fxldr.h:131
PWCHAR Component
Definition: fxldr.h:132
WDF_VERSION Version
Definition: fxldr.h:133
PVOID Module
Definition: fxldrum.h:56
__field_bcount(FuncCount *sizeof(WDFFUNC)) WDFFUNC *FuncTable
ULONG FuncCount
Definition: fxldr.h:134
PFNLIBRARYCOMMISSION LibraryCommission
Definition: fxldr.h:141
PFNLIBRARYREGISTERCLIENT LibraryRegisterClient
Definition: fxldr.h:143
PFNLIBRARYUNREGISTERCLIENT LibraryUnregisterClient
Definition: fxldr.h:144
WDF_VERSION Version
Definition: fxldr.h:145
PFNLIBRARYDECOMMISSION LibraryDecommission
Definition: fxldr.h:142
WDF_MAJOR_VERSION Major
Definition: fxldr.h:122
WDF_BUILD_NUMBER Build
Definition: fxldr.h:124
WDF_MINOR_VERSION Minor
Definition: fxldr.h:123
uint16_t * PWCHAR
Definition: typedefs.h:56
uint32_t ULONG
Definition: typedefs.h:59
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
Definition: wdfchildlist.h:690
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
_In_ UCHAR MajorFunction
Definition: wdfdevice.h:1697
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
Definition: wdfdriver.h:213
struct _TP_CLEANUP_GROUP * PTP_CLEANUP_GROUP
Definition: winnt_old.h:4500
#define IRP_MJ_MAXIMUM_FUNCTION
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185