ReactOS  0.4.15-dev-3217-gc6d1646
fxldrum.h
Go to the documentation of this file.
1 /*++
2 
3 Copyright (c) Microsoft Corporation
4 
5 Module Name:
6 
7  fxldrum.h
8 
9 Abstract:
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 
20 typedef
21 VOID
23  VOID
24  );
25 
29 
30 //
31 // Version container
32 //
33 typedef struct _WDF_VERSION {
37 } WDF_VERSION;
38 
39 //
40 // WDF bind information structure.
41 //
42 typedef struct _WDF_BIND_INFO {
43  ULONG Size;
47  __field_bcount(FuncCount*sizeof(WDFFUNC)) WDFFUNC* FuncTable;
48 
49 
50 
51 
52 
53  //
54  // This field is not used in UMDF
55  //
57 
58 
59 
61 
63 
64 typedef
67  VOID
68  );
69 
70 typedef
73  VOID
74  );
75 
76 typedef
80  PWDF_COMPONENT_GLOBALS * ComponentGlobals,
81  PVOID * Context
82  );
83 
84 typedef
89  );
90 
91 
92 typedef struct _WDF_LIBRARY_INFO {
93  ULONG Size;
100 
101 typedef
104  VOID
105  );
106 
107 //
108 // Framework 2.x's driver object.
109 //
111 struct IWudfDeviceStack;
112 struct IWudfDeviceStack2;
113 struct IWudfDevice;
114 struct IWudfIrp;
115 struct IUnknown;
116 typedef enum _WDF_DEVICE_IO_BUFFER_RETRIEVAL *PWDF_DEVICE_IO_BUFFER_RETRIEVAL;
117 typedef enum RdWmiPowerAction;
118 typedef const GUID *LPCGUID;
120 class FxDriver;
121 
122 //
123 // Valid flags for use in the DRIVER_OBJECT_UM::Flags field.
124 //
127 };
128 
129 //
130 // Driver object's basic interface.
131 //
132 typedef
133 NTSTATUS
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 
147 typedef
148 VOID
150  _In_ IWudfDevice * DeviceObject,
151  _In_ IWudfIrp * Irp,
153  );
154 
156 
157 typedef
158 VOID
161  );
162 
164 
165 typedef 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 
221 typedef 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__
PFNLIBRARYUNREGISTERCLIENT LibraryUnregisterClient
Definition: fxldr.h:144
struct _WDF_BIND_INFO WDF_BIND_INFO
PTP_CLEANUP_GROUP ThreadPoolGroup
Definition: fxldrum.h:200
struct _WDF_VERSION WDF_VERSION
DRIVER_ADD_DEVICE_UM * PFN_DRIVER_ADD_DEVICE_UM
Definition: fxldrum.h:145
enum _WDF_DEVICE_IO_BUFFER_RETRIEVAL * PWDF_DEVICE_IO_BUFFER_RETRIEVAL
Definition: fxldrum.h:116
ULONG Size
Definition: fxldr.h:131
FxDriverObjectUmFlags
Definition: fxldrum.h:125
NTSTATUS(* PFNLIBRARYCOMMISSION)(VOID)
Definition: fxldrum.h:66
#define _In_opt_
Definition: ms_sal.h:309
__field_bcount(FuncCount *sizeof(WDFFUNC)) WDFFUNC *FuncTable
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
ULONG FuncCount
Definition: fxldr.h:134
struct _CLIENT_INFO CLIENT_INFO
PFNLIBRARYREGISTERCLIENT LibraryRegisterClient
Definition: fxldr.h:143
WDF_VERSION Version
Definition: fxldr.h:145
#define IRP_MJ_MAXIMUM_FUNCTION
LONG NTSTATUS
Definition: precomp.h:26
ULONG Size
Definition: fxldr.h:181
VOID DRIVER_UNLOAD_UM(_In_ PDRIVER_OBJECT_UM DriverObject)
Definition: fxldrum.h:159
struct _WDF_BIND_INFO * PWDF_BIND_INFO
DRIVER_DISPATCH_UM * PFN_DRIVER_DISPATCH_UM
Definition: fxldrum.h:155
PVOID WDF_COMPONENT_GLOBALS
Definition: fxldrum.h:62
DriverGlobals
uint16_t * PWCHAR
Definition: typedefs.h:56
PVOID Module
Definition: fxldrum.h:56
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
Definition: wdfchildlist.h:683
PVOID * PWDF_COMPONENT_GLOBALS
Definition: fxldrum.h:62
WDF_VERSION Version
Definition: fxldr.h:133
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
const GUID * LPCGUID
Definition: fxldrum.h:117
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
WDF_BUILD_NUMBER Build
Definition: fxldr.h:124
_In_ PIRP Irp
Definition: csq.h:116
long LONG
Definition: pedump.c:60
NTSTATUS(* PFNLIBRARYUNREGISTERCLIENT)(PWDF_BIND_INFO Info, PWDF_COMPONENT_GLOBALS DriverGlobals)
Definition: fxldrum.h:86
UINT64 WUDF_INTERFACE_CONTEXT
Definition: fxldrum.h:119
#define _In_
Definition: ms_sal.h:308
NTSTATUS(* PFNLIBRARYDECOMMISSION)(VOID)
Definition: fxldrum.h:72
TP_CALLBACK_ENVIRON ThreadPoolEnv
Definition: fxldrum.h:195
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
Definition: wdfdriver.h:213
struct _WDF_LIBRARY_INFO WDF_LIBRARY_INFO
struct _CLIENT_INFO * PCLIENT_INFO
PFNLIBRARYCOMMISSION LibraryCommission
Definition: fxldr.h:141
struct _DRIVER_OBJECT_UM * PDRIVER_OBJECT_UM
Definition: fxldrum.h:110
ULONG WDF_MINOR_VERSION
Definition: fxldrum.h:27
WDF_MAJOR_VERSION Major
Definition: fxldr.h:122
VOID DRIVER_DISPATCH_UM(_In_ IWudfDevice *DeviceObject, _In_ IWudfIrp *Irp, _In_opt_ IUnknown *Context)
Definition: fxldrum.h:149
PFNLIBRARYDECOMMISSION LibraryDecommission
Definition: fxldr.h:142
ULONG WDF_BUILD_NUMBER
Definition: fxldrum.h:28
struct _TP_CLEANUP_GROUP * PTP_CLEANUP_GROUP
Definition: winnt_old.h:4374
#define NTSTATUS
Definition: precomp.h:20
#define VOID
Definition: acefi.h:82
VOID(* WDFFUNC)(VOID)
Definition: fxldrum.h:22
UNICODE_STRING DriverName
Definition: fxldrum.h:179
FxDriver * FxDriver
Definition: fxldrum.h:184
struct _WDF_LIBRARY_INFO * PWDF_LIBRARY_INFO
DRIVER_UNLOAD_UM * PFN_DRIVER_UNLOAD_UM
Definition: fxldrum.h:163
PFN_DRIVER_ADD_DEVICE_UM AddDevice
Definition: fxldrum.h:215
PUNICODE_STRING RegistryPath
Definition: fxldr.h:186
unsigned short USHORT
Definition: pedump.c:61
_In_ UCHAR MajorFunction
Definition: wdfdevice.h:1697
DRIVER_ADD_DEVICE_UM * PFN_DRIVER_ADD_DEVICE_UM
Definition: mxum.h:183
PFN_DRIVER_UNLOAD_UM DriverUnload
Definition: fxldrum.h:216
DRIVER_UNLOAD_UM * PFN_DRIVER_UNLOAD_UM
Definition: mxum.h:201
struct tagContext Context
Definition: acpixf.h:1034
LONG IfrSequenceNumber
Definition: fxldrum.h:208
unsigned int ULONG
Definition: retypes.h:1
PWCHAR Component
Definition: fxldr.h:132
unsigned long long UINT64
IWudfDeviceStack2 * WudfDevStack
Definition: fxldrum.h:190
DRIVER_DISPATCH_UM * PFN_DRIVER_DISPATCH_UM
Definition: mxum.h:193
WDF_MINOR_VERSION Minor
Definition: fxldr.h:123
NTSTATUS(* PFNLIBRARYREGISTERCLIENT)(PWDF_BIND_INFO Info, PWDF_COMPONENT_GLOBALS *ComponentGlobals, PVOID *Context)
Definition: fxldrum.h:78
PWDF_LIBRARY_INFO(* PFX_GET_LIBRARY_INFO_UM)(VOID)
Definition: fxldrum.h:103
struct _DRIVER_OBJECT_UM DRIVER_OBJECT_UM
ULONG WDF_MAJOR_VERSION
Definition: fxldrum.h:26