xref: /reactos/sdk/include/wdf/kmdf/1.17/wdfdriver.h (revision 545df815)
140462c92SVictor Perevertkin /*++
240462c92SVictor Perevertkin 
340462c92SVictor Perevertkin Copyright (c) Microsoft Corporation.  All rights reserved.
440462c92SVictor Perevertkin 
540462c92SVictor Perevertkin _WdfVersionBuild_
640462c92SVictor Perevertkin 
740462c92SVictor Perevertkin Module Name:
840462c92SVictor Perevertkin 
940462c92SVictor Perevertkin     wdfdriver.h
1040462c92SVictor Perevertkin 
1140462c92SVictor Perevertkin Abstract:
1240462c92SVictor Perevertkin 
1340462c92SVictor Perevertkin     This is the interfaces for the Windows Driver Framework Driver object
1440462c92SVictor Perevertkin 
1540462c92SVictor Perevertkin Environment:
1640462c92SVictor Perevertkin 
1740462c92SVictor Perevertkin     kernel mode only
1840462c92SVictor Perevertkin 
1940462c92SVictor Perevertkin Revision History:
2040462c92SVictor Perevertkin 
2140462c92SVictor Perevertkin --*/
2240462c92SVictor Perevertkin 
2340462c92SVictor Perevertkin //
2440462c92SVictor Perevertkin // NOTE: This header is generated by stubwork.  Please make any
2540462c92SVictor Perevertkin //       modifications to the corresponding template files
2640462c92SVictor Perevertkin //       (.x or .y) and use stubwork to regenerate the header
2740462c92SVictor Perevertkin //
2840462c92SVictor Perevertkin 
2940462c92SVictor Perevertkin #ifndef _WDFDRIVER_H_
3040462c92SVictor Perevertkin #define _WDFDRIVER_H_
3140462c92SVictor Perevertkin 
3240462c92SVictor Perevertkin #ifndef WDF_EXTERN_C
3340462c92SVictor Perevertkin   #ifdef __cplusplus
3440462c92SVictor Perevertkin     #define WDF_EXTERN_C       extern "C"
3540462c92SVictor Perevertkin     #define WDF_EXTERN_C_START extern "C" {
3640462c92SVictor Perevertkin     #define WDF_EXTERN_C_END   }
3740462c92SVictor Perevertkin   #else
3840462c92SVictor Perevertkin     #define WDF_EXTERN_C
3940462c92SVictor Perevertkin     #define WDF_EXTERN_C_START
4040462c92SVictor Perevertkin     #define WDF_EXTERN_C_END
4140462c92SVictor Perevertkin   #endif
4240462c92SVictor Perevertkin #endif
4340462c92SVictor Perevertkin 
4440462c92SVictor Perevertkin WDF_EXTERN_C_START
4540462c92SVictor Perevertkin 
4640462c92SVictor Perevertkin 
4740462c92SVictor Perevertkin 
4840462c92SVictor Perevertkin #if (NTDDI_VERSION >= NTDDI_WIN2K)
4940462c92SVictor Perevertkin 
5040462c92SVictor Perevertkin typedef enum _WDF_DRIVER_INIT_FLAGS {
5140462c92SVictor Perevertkin     WdfDriverInitNonPnpDriver = 0x00000001, //  If set, no Add Device routine is assigned.
5240462c92SVictor Perevertkin     WdfDriverInitNoDispatchOverride = 0x00000002, //  Useful for miniports.
5340462c92SVictor Perevertkin     WdfVerifyOn = 0x00000004, //  Controls whether WDFVERIFY macros are live.
5440462c92SVictor Perevertkin     WdfVerifierOn = 0x00000008, //  Top level verififer flag.
5540462c92SVictor Perevertkin } WDF_DRIVER_INIT_FLAGS;
5640462c92SVictor Perevertkin 
5740462c92SVictor Perevertkin 
5840462c92SVictor Perevertkin 
5940462c92SVictor Perevertkin #define WDF_TRACE_ID ('TRAC')
6040462c92SVictor Perevertkin 
6140462c92SVictor Perevertkin //
6240462c92SVictor Perevertkin // Callbacks for FxDriver
6340462c92SVictor Perevertkin //
6440462c92SVictor Perevertkin 
6540462c92SVictor Perevertkin typedef
6640462c92SVictor Perevertkin _Function_class_(EVT_WDF_DRIVER_DEVICE_ADD)
6740462c92SVictor Perevertkin _IRQL_requires_same_
6840462c92SVictor Perevertkin _IRQL_requires_max_(PASSIVE_LEVEL)
6940462c92SVictor Perevertkin NTSTATUS
70*545df815SVictor Perevertkin STDCALL
7140462c92SVictor Perevertkin EVT_WDF_DRIVER_DEVICE_ADD(
7240462c92SVictor Perevertkin     _In_
7340462c92SVictor Perevertkin     WDFDRIVER Driver,
7440462c92SVictor Perevertkin     _Inout_
7540462c92SVictor Perevertkin     PWDFDEVICE_INIT DeviceInit
7640462c92SVictor Perevertkin     );
7740462c92SVictor Perevertkin 
7840462c92SVictor Perevertkin typedef EVT_WDF_DRIVER_DEVICE_ADD *PFN_WDF_DRIVER_DEVICE_ADD;
7940462c92SVictor Perevertkin 
8040462c92SVictor Perevertkin typedef
8140462c92SVictor Perevertkin _Function_class_(EVT_WDF_DRIVER_UNLOAD)
8240462c92SVictor Perevertkin _IRQL_requires_same_
8340462c92SVictor Perevertkin _IRQL_requires_max_(PASSIVE_LEVEL)
8440462c92SVictor Perevertkin VOID
85*545df815SVictor Perevertkin STDCALL
8640462c92SVictor Perevertkin EVT_WDF_DRIVER_UNLOAD(
8740462c92SVictor Perevertkin     _In_
8840462c92SVictor Perevertkin     WDFDRIVER Driver
8940462c92SVictor Perevertkin     );
9040462c92SVictor Perevertkin 
9140462c92SVictor Perevertkin typedef EVT_WDF_DRIVER_UNLOAD *PFN_WDF_DRIVER_UNLOAD;
9240462c92SVictor Perevertkin 
9340462c92SVictor Perevertkin 
9440462c92SVictor Perevertkin //
9540462c92SVictor Perevertkin // Used by WPP Tracing (modeled after WPP's WppTraceCallback (in km-init.tpl))
9640462c92SVictor Perevertkin //
9740462c92SVictor Perevertkin typedef
9840462c92SVictor Perevertkin _Function_class_(EVT_WDF_TRACE_CALLBACK)
9940462c92SVictor Perevertkin _IRQL_requires_same_
10040462c92SVictor Perevertkin _IRQL_requires_max_(PASSIVE_LEVEL)
10140462c92SVictor Perevertkin NTSTATUS
102*545df815SVictor Perevertkin STDCALL
10340462c92SVictor Perevertkin EVT_WDF_TRACE_CALLBACK(
10440462c92SVictor Perevertkin     _In_
10540462c92SVictor Perevertkin     UCHAR   minorFunction,
10640462c92SVictor Perevertkin     _In_opt_
10740462c92SVictor Perevertkin     PVOID   dataPath,
10840462c92SVictor Perevertkin     _In_
10940462c92SVictor Perevertkin     ULONG   bufferLength,
11040462c92SVictor Perevertkin     _Inout_updates_bytes_(bufferLength)
11140462c92SVictor Perevertkin     PVOID   buffer,
11240462c92SVictor Perevertkin     _In_
11340462c92SVictor Perevertkin     PVOID   context,
11440462c92SVictor Perevertkin     _Out_
11540462c92SVictor Perevertkin     PULONG  size
11640462c92SVictor Perevertkin     );
11740462c92SVictor Perevertkin 
11840462c92SVictor Perevertkin typedef EVT_WDF_TRACE_CALLBACK *PFN_WDF_TRACE_CALLBACK;
11940462c92SVictor Perevertkin 
12040462c92SVictor Perevertkin typedef struct _WDF_DRIVER_CONFIG {
12140462c92SVictor Perevertkin     //
12240462c92SVictor Perevertkin     // Size of this structure in bytes
12340462c92SVictor Perevertkin     //
12440462c92SVictor Perevertkin     ULONG Size;
12540462c92SVictor Perevertkin 
12640462c92SVictor Perevertkin     //
12740462c92SVictor Perevertkin     // Event callbacks
12840462c92SVictor Perevertkin     //
12940462c92SVictor Perevertkin     PFN_WDF_DRIVER_DEVICE_ADD EvtDriverDeviceAdd;
13040462c92SVictor Perevertkin 
13140462c92SVictor Perevertkin     PFN_WDF_DRIVER_UNLOAD    EvtDriverUnload;
13240462c92SVictor Perevertkin 
13340462c92SVictor Perevertkin     //
13440462c92SVictor Perevertkin     // Combination of WDF_DRIVER_INIT_FLAGS values
13540462c92SVictor Perevertkin     //
13640462c92SVictor Perevertkin     ULONG DriverInitFlags;
13740462c92SVictor Perevertkin 
13840462c92SVictor Perevertkin     //
13940462c92SVictor Perevertkin     // Pool tag to use for all allocations made by the framework on behalf of
14040462c92SVictor Perevertkin     // the client driver.
14140462c92SVictor Perevertkin     //
14240462c92SVictor Perevertkin     ULONG DriverPoolTag;
14340462c92SVictor Perevertkin 
14440462c92SVictor Perevertkin } WDF_DRIVER_CONFIG, *PWDF_DRIVER_CONFIG;
14540462c92SVictor Perevertkin 
14640462c92SVictor Perevertkin FORCEINLINE
147*545df815SVictor Perevertkin VOID
WDF_DRIVER_CONFIG_INIT(_Out_ PWDF_DRIVER_CONFIG Config,_In_opt_ PFN_WDF_DRIVER_DEVICE_ADD EvtDriverDeviceAdd)14840462c92SVictor Perevertkin WDF_DRIVER_CONFIG_INIT(
14940462c92SVictor Perevertkin     _Out_ PWDF_DRIVER_CONFIG Config,
15040462c92SVictor Perevertkin     _In_opt_ PFN_WDF_DRIVER_DEVICE_ADD EvtDriverDeviceAdd
15140462c92SVictor Perevertkin     )
15240462c92SVictor Perevertkin {
15340462c92SVictor Perevertkin     RtlZeroMemory(Config, sizeof(WDF_DRIVER_CONFIG));
15440462c92SVictor Perevertkin 
15540462c92SVictor Perevertkin     Config->Size = sizeof(WDF_DRIVER_CONFIG);
15640462c92SVictor Perevertkin     Config->EvtDriverDeviceAdd = EvtDriverDeviceAdd;
15740462c92SVictor Perevertkin }
15840462c92SVictor Perevertkin 
15940462c92SVictor Perevertkin typedef struct _WDF_DRIVER_VERSION_AVAILABLE_PARAMS {
16040462c92SVictor Perevertkin     //
16140462c92SVictor Perevertkin     // Size of the structure in bytes
16240462c92SVictor Perevertkin     //
16340462c92SVictor Perevertkin     ULONG Size;
16440462c92SVictor Perevertkin 
16540462c92SVictor Perevertkin     //
16640462c92SVictor Perevertkin     // Major Version requested
16740462c92SVictor Perevertkin     //
16840462c92SVictor Perevertkin     ULONG MajorVersion;
16940462c92SVictor Perevertkin 
17040462c92SVictor Perevertkin     //
17140462c92SVictor Perevertkin     // Minor Version requested
17240462c92SVictor Perevertkin     //
17340462c92SVictor Perevertkin     ULONG MinorVersion;
17440462c92SVictor Perevertkin 
17540462c92SVictor Perevertkin } WDF_DRIVER_VERSION_AVAILABLE_PARAMS, *PWDF_DRIVER_VERSION_AVAILABLE_PARAMS;
17640462c92SVictor Perevertkin 
17740462c92SVictor Perevertkin FORCEINLINE
178*545df815SVictor Perevertkin VOID
WDF_DRIVER_VERSION_AVAILABLE_PARAMS_INIT(_Out_ PWDF_DRIVER_VERSION_AVAILABLE_PARAMS Params,_In_ ULONG MajorVersion,_In_ ULONG MinorVersion)17940462c92SVictor Perevertkin WDF_DRIVER_VERSION_AVAILABLE_PARAMS_INIT(
18040462c92SVictor Perevertkin     _Out_ PWDF_DRIVER_VERSION_AVAILABLE_PARAMS Params,
18140462c92SVictor Perevertkin     _In_ ULONG MajorVersion,
18240462c92SVictor Perevertkin     _In_ ULONG MinorVersion
18340462c92SVictor Perevertkin     )
18440462c92SVictor Perevertkin {
18540462c92SVictor Perevertkin     RtlZeroMemory(Params, sizeof(WDF_DRIVER_VERSION_AVAILABLE_PARAMS));
18640462c92SVictor Perevertkin 
18740462c92SVictor Perevertkin     Params->Size = sizeof(WDF_DRIVER_VERSION_AVAILABLE_PARAMS);
18840462c92SVictor Perevertkin     Params->MajorVersion = MajorVersion;
18940462c92SVictor Perevertkin     Params->MinorVersion = MinorVersion;
19040462c92SVictor Perevertkin }
19140462c92SVictor Perevertkin 
19240462c92SVictor Perevertkin FORCEINLINE
193*545df815SVictor Perevertkin WDFDRIVER
WdfGetDriver(VOID)19440462c92SVictor Perevertkin WdfGetDriver(
19540462c92SVictor Perevertkin     VOID
19640462c92SVictor Perevertkin     )
19740462c92SVictor Perevertkin {
19840462c92SVictor Perevertkin     return WdfDriverGlobals->Driver;
19940462c92SVictor Perevertkin }
20040462c92SVictor Perevertkin 
20140462c92SVictor Perevertkin //
20240462c92SVictor Perevertkin // WDF Function: WdfDriverCreate
20340462c92SVictor Perevertkin //
20440462c92SVictor Perevertkin typedef
20540462c92SVictor Perevertkin _Must_inspect_result_
20640462c92SVictor Perevertkin _IRQL_requires_max_(PASSIVE_LEVEL)
20740462c92SVictor Perevertkin WDFAPI
20840462c92SVictor Perevertkin NTSTATUS
209*545df815SVictor Perevertkin (STDCALL *PFN_WDFDRIVERCREATE)(
21040462c92SVictor Perevertkin     _In_
21140462c92SVictor Perevertkin     PWDF_DRIVER_GLOBALS DriverGlobals,
21240462c92SVictor Perevertkin     _In_
21340462c92SVictor Perevertkin     PDRIVER_OBJECT DriverObject,
21440462c92SVictor Perevertkin     _In_
21540462c92SVictor Perevertkin     PCUNICODE_STRING RegistryPath,
21640462c92SVictor Perevertkin     _In_opt_
21740462c92SVictor Perevertkin     PWDF_OBJECT_ATTRIBUTES DriverAttributes,
21840462c92SVictor Perevertkin     _In_
21940462c92SVictor Perevertkin     PWDF_DRIVER_CONFIG DriverConfig,
22040462c92SVictor Perevertkin     _Out_opt_
22140462c92SVictor Perevertkin     WDFDRIVER* Driver
22240462c92SVictor Perevertkin     );
22340462c92SVictor Perevertkin 
22440462c92SVictor Perevertkin _Must_inspect_result_
_IRQL_requires_max_(PASSIVE_LEVEL)22540462c92SVictor Perevertkin _IRQL_requires_max_(PASSIVE_LEVEL)
22640462c92SVictor Perevertkin FORCEINLINE
227*545df815SVictor Perevertkin NTSTATUS
22840462c92SVictor Perevertkin WdfDriverCreate(
22940462c92SVictor Perevertkin     _In_
23040462c92SVictor Perevertkin     PDRIVER_OBJECT DriverObject,
23140462c92SVictor Perevertkin     _In_
23240462c92SVictor Perevertkin     PCUNICODE_STRING RegistryPath,
23340462c92SVictor Perevertkin     _In_opt_
23440462c92SVictor Perevertkin     PWDF_OBJECT_ATTRIBUTES DriverAttributes,
23540462c92SVictor Perevertkin     _In_
23640462c92SVictor Perevertkin     PWDF_DRIVER_CONFIG DriverConfig,
23740462c92SVictor Perevertkin     _Out_opt_
23840462c92SVictor Perevertkin     WDFDRIVER* Driver
23940462c92SVictor Perevertkin     )
24040462c92SVictor Perevertkin {
24140462c92SVictor Perevertkin     return ((PFN_WDFDRIVERCREATE) WdfFunctions[WdfDriverCreateTableIndex])(WdfDriverGlobals, DriverObject, RegistryPath, DriverAttributes, DriverConfig, Driver);
24240462c92SVictor Perevertkin }
24340462c92SVictor Perevertkin 
24440462c92SVictor Perevertkin //
24540462c92SVictor Perevertkin // WDF Function: WdfDriverGetRegistryPath
24640462c92SVictor Perevertkin //
24740462c92SVictor Perevertkin typedef
24840462c92SVictor Perevertkin _IRQL_requires_max_(PASSIVE_LEVEL)
24940462c92SVictor Perevertkin WDFAPI
25040462c92SVictor Perevertkin PWSTR
251*545df815SVictor Perevertkin (STDCALL *PFN_WDFDRIVERGETREGISTRYPATH)(
25240462c92SVictor Perevertkin     _In_
25340462c92SVictor Perevertkin     PWDF_DRIVER_GLOBALS DriverGlobals,
25440462c92SVictor Perevertkin     _In_
25540462c92SVictor Perevertkin     WDFDRIVER Driver
25640462c92SVictor Perevertkin     );
25740462c92SVictor Perevertkin 
_IRQL_requires_max_(PASSIVE_LEVEL)25840462c92SVictor Perevertkin _IRQL_requires_max_(PASSIVE_LEVEL)
25940462c92SVictor Perevertkin FORCEINLINE
260*545df815SVictor Perevertkin PWSTR
26140462c92SVictor Perevertkin WdfDriverGetRegistryPath(
26240462c92SVictor Perevertkin     _In_
26340462c92SVictor Perevertkin     WDFDRIVER Driver
26440462c92SVictor Perevertkin     )
26540462c92SVictor Perevertkin {
26640462c92SVictor Perevertkin     return ((PFN_WDFDRIVERGETREGISTRYPATH) WdfFunctions[WdfDriverGetRegistryPathTableIndex])(WdfDriverGlobals, Driver);
26740462c92SVictor Perevertkin }
26840462c92SVictor Perevertkin 
26940462c92SVictor Perevertkin //
27040462c92SVictor Perevertkin // WDF Function: WdfDriverWdmGetDriverObject
27140462c92SVictor Perevertkin //
27240462c92SVictor Perevertkin typedef
27340462c92SVictor Perevertkin _IRQL_requires_max_(DISPATCH_LEVEL)
27440462c92SVictor Perevertkin WDFAPI
27540462c92SVictor Perevertkin PDRIVER_OBJECT
276*545df815SVictor Perevertkin (STDCALL *PFN_WDFDRIVERWDMGETDRIVEROBJECT)(
27740462c92SVictor Perevertkin     _In_
27840462c92SVictor Perevertkin     PWDF_DRIVER_GLOBALS DriverGlobals,
27940462c92SVictor Perevertkin     _In_
28040462c92SVictor Perevertkin     WDFDRIVER Driver
28140462c92SVictor Perevertkin     );
28240462c92SVictor Perevertkin 
_IRQL_requires_max_(DISPATCH_LEVEL)28340462c92SVictor Perevertkin _IRQL_requires_max_(DISPATCH_LEVEL)
28440462c92SVictor Perevertkin FORCEINLINE
285*545df815SVictor Perevertkin PDRIVER_OBJECT
28640462c92SVictor Perevertkin WdfDriverWdmGetDriverObject(
28740462c92SVictor Perevertkin     _In_
28840462c92SVictor Perevertkin     WDFDRIVER Driver
28940462c92SVictor Perevertkin     )
29040462c92SVictor Perevertkin {
29140462c92SVictor Perevertkin     return ((PFN_WDFDRIVERWDMGETDRIVEROBJECT) WdfFunctions[WdfDriverWdmGetDriverObjectTableIndex])(WdfDriverGlobals, Driver);
29240462c92SVictor Perevertkin }
29340462c92SVictor Perevertkin 
29440462c92SVictor Perevertkin //
29540462c92SVictor Perevertkin // WDF Function: WdfDriverOpenParametersRegistryKey
29640462c92SVictor Perevertkin //
29740462c92SVictor Perevertkin typedef
29840462c92SVictor Perevertkin _Must_inspect_result_
29940462c92SVictor Perevertkin _IRQL_requires_max_(PASSIVE_LEVEL)
30040462c92SVictor Perevertkin WDFAPI
30140462c92SVictor Perevertkin NTSTATUS
302*545df815SVictor Perevertkin (STDCALL *PFN_WDFDRIVEROPENPARAMETERSREGISTRYKEY)(
30340462c92SVictor Perevertkin     _In_
30440462c92SVictor Perevertkin     PWDF_DRIVER_GLOBALS DriverGlobals,
30540462c92SVictor Perevertkin     _In_
30640462c92SVictor Perevertkin     WDFDRIVER Driver,
30740462c92SVictor Perevertkin     _In_
30840462c92SVictor Perevertkin     ACCESS_MASK DesiredAccess,
30940462c92SVictor Perevertkin     _In_opt_
31040462c92SVictor Perevertkin     PWDF_OBJECT_ATTRIBUTES KeyAttributes,
31140462c92SVictor Perevertkin     _Out_
31240462c92SVictor Perevertkin     WDFKEY* Key
31340462c92SVictor Perevertkin     );
31440462c92SVictor Perevertkin 
31540462c92SVictor Perevertkin _Must_inspect_result_
_IRQL_requires_max_(PASSIVE_LEVEL)31640462c92SVictor Perevertkin _IRQL_requires_max_(PASSIVE_LEVEL)
31740462c92SVictor Perevertkin FORCEINLINE
318*545df815SVictor Perevertkin NTSTATUS
31940462c92SVictor Perevertkin WdfDriverOpenParametersRegistryKey(
32040462c92SVictor Perevertkin     _In_
32140462c92SVictor Perevertkin     WDFDRIVER Driver,
32240462c92SVictor Perevertkin     _In_
32340462c92SVictor Perevertkin     ACCESS_MASK DesiredAccess,
32440462c92SVictor Perevertkin     _In_opt_
32540462c92SVictor Perevertkin     PWDF_OBJECT_ATTRIBUTES KeyAttributes,
32640462c92SVictor Perevertkin     _Out_
32740462c92SVictor Perevertkin     WDFKEY* Key
32840462c92SVictor Perevertkin     )
32940462c92SVictor Perevertkin {
33040462c92SVictor Perevertkin     return ((PFN_WDFDRIVEROPENPARAMETERSREGISTRYKEY) WdfFunctions[WdfDriverOpenParametersRegistryKeyTableIndex])(WdfDriverGlobals, Driver, DesiredAccess, KeyAttributes, Key);
33140462c92SVictor Perevertkin }
33240462c92SVictor Perevertkin 
33340462c92SVictor Perevertkin //
33440462c92SVictor Perevertkin // WDF Function: WdfWdmDriverGetWdfDriverHandle
33540462c92SVictor Perevertkin //
33640462c92SVictor Perevertkin typedef
33740462c92SVictor Perevertkin _IRQL_requires_max_(DISPATCH_LEVEL)
33840462c92SVictor Perevertkin WDFAPI
33940462c92SVictor Perevertkin WDFDRIVER
340*545df815SVictor Perevertkin (STDCALL *PFN_WDFWDMDRIVERGETWDFDRIVERHANDLE)(
34140462c92SVictor Perevertkin     _In_
34240462c92SVictor Perevertkin     PWDF_DRIVER_GLOBALS DriverGlobals,
34340462c92SVictor Perevertkin     _In_
34440462c92SVictor Perevertkin     PDRIVER_OBJECT DriverObject
34540462c92SVictor Perevertkin     );
34640462c92SVictor Perevertkin 
_IRQL_requires_max_(DISPATCH_LEVEL)34740462c92SVictor Perevertkin _IRQL_requires_max_(DISPATCH_LEVEL)
34840462c92SVictor Perevertkin FORCEINLINE
349*545df815SVictor Perevertkin WDFDRIVER
35040462c92SVictor Perevertkin WdfWdmDriverGetWdfDriverHandle(
35140462c92SVictor Perevertkin     _In_
35240462c92SVictor Perevertkin     PDRIVER_OBJECT DriverObject
35340462c92SVictor Perevertkin     )
35440462c92SVictor Perevertkin {
35540462c92SVictor Perevertkin     return ((PFN_WDFWDMDRIVERGETWDFDRIVERHANDLE) WdfFunctions[WdfWdmDriverGetWdfDriverHandleTableIndex])(WdfDriverGlobals, DriverObject);
35640462c92SVictor Perevertkin }
35740462c92SVictor Perevertkin 
35840462c92SVictor Perevertkin //
35940462c92SVictor Perevertkin // WDF Function: WdfDriverRegisterTraceInfo
36040462c92SVictor Perevertkin //
36140462c92SVictor Perevertkin typedef
36240462c92SVictor Perevertkin _Must_inspect_result_
36340462c92SVictor Perevertkin _IRQL_requires_max_(PASSIVE_LEVEL)
36440462c92SVictor Perevertkin WDFAPI
36540462c92SVictor Perevertkin NTSTATUS
366*545df815SVictor Perevertkin (STDCALL *PFN_WDFDRIVERREGISTERTRACEINFO)(
36740462c92SVictor Perevertkin     _In_
36840462c92SVictor Perevertkin     PWDF_DRIVER_GLOBALS DriverGlobals,
36940462c92SVictor Perevertkin     _In_
37040462c92SVictor Perevertkin     PDRIVER_OBJECT DriverObject,
37140462c92SVictor Perevertkin     _In_
37240462c92SVictor Perevertkin     PFN_WDF_TRACE_CALLBACK EvtTraceCallback,
37340462c92SVictor Perevertkin     _In_
37440462c92SVictor Perevertkin     PVOID ControlBlock
37540462c92SVictor Perevertkin     );
37640462c92SVictor Perevertkin 
37740462c92SVictor Perevertkin _Must_inspect_result_
_IRQL_requires_max_(PASSIVE_LEVEL)37840462c92SVictor Perevertkin _IRQL_requires_max_(PASSIVE_LEVEL)
37940462c92SVictor Perevertkin FORCEINLINE
380*545df815SVictor Perevertkin NTSTATUS
38140462c92SVictor Perevertkin WdfDriverRegisterTraceInfo(
38240462c92SVictor Perevertkin     _In_
38340462c92SVictor Perevertkin     PDRIVER_OBJECT DriverObject,
38440462c92SVictor Perevertkin     _In_
38540462c92SVictor Perevertkin     PFN_WDF_TRACE_CALLBACK EvtTraceCallback,
38640462c92SVictor Perevertkin     _In_
38740462c92SVictor Perevertkin     PVOID ControlBlock
38840462c92SVictor Perevertkin     )
38940462c92SVictor Perevertkin {
39040462c92SVictor Perevertkin     return ((PFN_WDFDRIVERREGISTERTRACEINFO) WdfFunctions[WdfDriverRegisterTraceInfoTableIndex])(WdfDriverGlobals, DriverObject, EvtTraceCallback, ControlBlock);
39140462c92SVictor Perevertkin }
39240462c92SVictor Perevertkin 
39340462c92SVictor Perevertkin //
39440462c92SVictor Perevertkin // WDF Function: WdfDriverRetrieveVersionString
39540462c92SVictor Perevertkin //
39640462c92SVictor Perevertkin typedef
39740462c92SVictor Perevertkin _Must_inspect_result_
39840462c92SVictor Perevertkin _IRQL_requires_max_(PASSIVE_LEVEL)
39940462c92SVictor Perevertkin WDFAPI
40040462c92SVictor Perevertkin NTSTATUS
401*545df815SVictor Perevertkin (STDCALL *PFN_WDFDRIVERRETRIEVEVERSIONSTRING)(
40240462c92SVictor Perevertkin     _In_
40340462c92SVictor Perevertkin     PWDF_DRIVER_GLOBALS DriverGlobals,
40440462c92SVictor Perevertkin     _In_
40540462c92SVictor Perevertkin     WDFDRIVER Driver,
40640462c92SVictor Perevertkin     _In_
40740462c92SVictor Perevertkin     WDFSTRING String
40840462c92SVictor Perevertkin     );
40940462c92SVictor Perevertkin 
41040462c92SVictor Perevertkin _Must_inspect_result_
_IRQL_requires_max_(PASSIVE_LEVEL)41140462c92SVictor Perevertkin _IRQL_requires_max_(PASSIVE_LEVEL)
41240462c92SVictor Perevertkin FORCEINLINE
413*545df815SVictor Perevertkin NTSTATUS
41440462c92SVictor Perevertkin WdfDriverRetrieveVersionString(
41540462c92SVictor Perevertkin     _In_
41640462c92SVictor Perevertkin     WDFDRIVER Driver,
41740462c92SVictor Perevertkin     _In_
41840462c92SVictor Perevertkin     WDFSTRING String
41940462c92SVictor Perevertkin     )
42040462c92SVictor Perevertkin {
42140462c92SVictor Perevertkin     return ((PFN_WDFDRIVERRETRIEVEVERSIONSTRING) WdfFunctions[WdfDriverRetrieveVersionStringTableIndex])(WdfDriverGlobals, Driver, String);
42240462c92SVictor Perevertkin }
42340462c92SVictor Perevertkin 
42440462c92SVictor Perevertkin //
42540462c92SVictor Perevertkin // WDF Function: WdfDriverIsVersionAvailable
42640462c92SVictor Perevertkin //
42740462c92SVictor Perevertkin typedef
42840462c92SVictor Perevertkin _Must_inspect_result_
42940462c92SVictor Perevertkin _IRQL_requires_max_(PASSIVE_LEVEL)
43040462c92SVictor Perevertkin WDFAPI
43140462c92SVictor Perevertkin BOOLEAN
432*545df815SVictor Perevertkin (STDCALL *PFN_WDFDRIVERISVERSIONAVAILABLE)(
43340462c92SVictor Perevertkin     _In_
43440462c92SVictor Perevertkin     PWDF_DRIVER_GLOBALS DriverGlobals,
43540462c92SVictor Perevertkin     _In_
43640462c92SVictor Perevertkin     WDFDRIVER Driver,
43740462c92SVictor Perevertkin     _In_
43840462c92SVictor Perevertkin     PWDF_DRIVER_VERSION_AVAILABLE_PARAMS VersionAvailableParams
43940462c92SVictor Perevertkin     );
44040462c92SVictor Perevertkin 
44140462c92SVictor Perevertkin _Must_inspect_result_
_IRQL_requires_max_(PASSIVE_LEVEL)44240462c92SVictor Perevertkin _IRQL_requires_max_(PASSIVE_LEVEL)
44340462c92SVictor Perevertkin FORCEINLINE
444*545df815SVictor Perevertkin BOOLEAN
44540462c92SVictor Perevertkin WdfDriverIsVersionAvailable(
44640462c92SVictor Perevertkin     _In_
44740462c92SVictor Perevertkin     WDFDRIVER Driver,
44840462c92SVictor Perevertkin     _In_
44940462c92SVictor Perevertkin     PWDF_DRIVER_VERSION_AVAILABLE_PARAMS VersionAvailableParams
45040462c92SVictor Perevertkin     )
45140462c92SVictor Perevertkin {
45240462c92SVictor Perevertkin     return ((PFN_WDFDRIVERISVERSIONAVAILABLE) WdfFunctions[WdfDriverIsVersionAvailableTableIndex])(WdfDriverGlobals, Driver, VersionAvailableParams);
45340462c92SVictor Perevertkin }
45440462c92SVictor Perevertkin 
45540462c92SVictor Perevertkin 
45640462c92SVictor Perevertkin 
45740462c92SVictor Perevertkin #endif // (NTDDI_VERSION >= NTDDI_WIN2K)
45840462c92SVictor Perevertkin 
45940462c92SVictor Perevertkin 
46040462c92SVictor Perevertkin WDF_EXTERN_C_END
46140462c92SVictor Perevertkin 
46240462c92SVictor Perevertkin #endif // _WDFDRIVER_H_
46340462c92SVictor Perevertkin 
464