reactos/sdk/lib/drivers/wdf/wdfcx.h

142 lines
4.2 KiB
C
Raw Normal View History

/*
* PROJECT: Kernel Mode Device Framework
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
* PURPOSE: Missing headers (wdfcx.h)
* COPYRIGHT: 2020 Victor Perevertkin (victor.perevertkin@reactos.org)
*/
#ifndef _WDFCX_H_
#define _WDFCX_H_
typedef BOOLEAN
(STDCALL *PFN_WDFCX_DEVICE_FILE_CREATE) (
_In_ WDFDEVICE Device,
_In_ WDFREQUEST Request,
_In_opt_ WDFFILEOBJECT FileObject);
// _WDFCX_FILEOBJECT_CONFIG_V1_17
typedef struct _WDFCX_FILEOBJECT_CONFIG {
//
// Size of this structure in bytes
//
ULONG Size;
//
// Event callback for create requests
//
PFN_WDFCX_DEVICE_FILE_CREATE EvtCxDeviceFileCreate;
//
// Event callback for close requests
//
PFN_WDF_FILE_CLOSE EvtFileClose;
//
// Event callback for cleanup requests
//
PFN_WDF_FILE_CLEANUP EvtFileCleanup;
//
// If WdfTrue, create/cleanup/close file object related requests will be
// sent down the stack.
//
// If WdfFalse, create/cleanup/close will be completed at this location in
// the device stack.
//
// If WdfDefault, behavior depends on device type
// FDO, PDO, Control: use the WdfFalse behavior
// Filter: use the WdfTrue behavior
//
WDF_TRI_STATE AutoForwardCleanupClose;
//
// Specify whether framework should create WDFFILEOBJECT and also
// whether it can FsContexts fields in the WDM fileobject to store
// WDFFILEOBJECT so that it can avoid table look up and improve perf.
//
WDF_FILEOBJECT_CLASS FileObjectClass;
} WDFCX_FILEOBJECT_CONFIG, *PWDFCX_FILEOBJECT_CONFIG;
typedef NTSTATUS
(STDCALL *PFN_WDFCXDEVICE_WDM_IRP_PREPROCESS)(
_In_ WDFDEVICE Device,
_Inout_ PIRP Irp,
_In_ PVOID DispatchContext);
typedef PWDFCXDEVICE_INIT
(STDCALL *PFN_WDFCXDEVICEINITALLOCATE)(
_In_ PWDF_DRIVER_GLOBALS DriverGlobals,
_In_ PWDFDEVICE_INIT DeviceInit);
typedef NTSTATUS
(STDCALL *PFN_WDFCXDEVICEINITASSIGNWDMIRPPREPROCESSCALLBACK) (
_In_ PWDF_DRIVER_GLOBALS DriverGlobals,
_In_ PWDFCXDEVICE_INIT CxDeviceInit,
_In_ PFN_WDFCXDEVICE_WDM_IRP_PREPROCESS EvtCxDeviceWdmIrpPreprocess,
_In_ UCHAR MajorFunction,
_When_(NumMinorFunctions > 0, _In_reads_bytes_(NumMinorFunctions))
_When_(NumMinorFunctions == 0, _In_opt_)
PUCHAR MinorFunctions,
_In_ ULONG NumMinorFunctions);
typedef VOID
(STDCALL *PFN_WDFCXDEVICEINITSETIOINCALLERCONTEXTCALLBACK)(
_In_ PWDF_DRIVER_GLOBALS DriverGlobals,
_In_ PWDFCXDEVICE_INIT CxDeviceInit,
_In_ PFN_WDF_IO_IN_CALLER_CONTEXT EvtIoInCallerContext);
typedef VOID
(STDCALL *PFN_WDFCXDEVICEINITSETREQUESTATTRIBUTES)(
_In_ PWDF_DRIVER_GLOBALS DriverGlobals,
_In_ PWDFCXDEVICE_INIT CxDeviceInit,
_In_ PWDF_OBJECT_ATTRIBUTES RequestAttributes);
typedef VOID
(STDCALL *PFN_WDFCXDEVICEINITSETFILEOBJECTCONFIG)(
_In_ PWDF_DRIVER_GLOBALS DriverGlobals,
_In_ PWDFCXDEVICE_INIT CxDeviceInit,
_In_ PWDFCX_FILEOBJECT_CONFIG CxFileObjectConfig,
_In_opt_ PWDF_OBJECT_ATTRIBUTES FileObjectAttributes);
typedef VOID
(STDCALL *PFN_WDFCXVERIFIERKEBUGCHECK)(
_In_ PWDF_DRIVER_GLOBALS DriverGlobals,
_In_opt_ WDFOBJECT Object,
_In_ ULONG BugCheckCode,
_In_ ULONG_PTR BugCheckParameter1,
_In_ ULONG_PTR BugCheckParameter2,
_In_ ULONG_PTR BugCheckParameter3,
_In_ ULONG_PTR BugCheckParameter4);
typedef WDFIOTARGET
(STDCALL *PFN_WDFDEVICEGETSELFIOTARGET)(
_In_ PWDF_DRIVER_GLOBALS DriverGlobals,
_In_ WDFDEVICE Device);
typedef VOID
(STDCALL *PFN_WDFDEVICEINITALLOWSELFIOTARGET)(
_In_ PWDF_DRIVER_GLOBALS DriverGlobals,
_In_ PWDFDEVICE_INIT DeviceInit);
typedef NTSTATUS
(STDCALL *PFN_WDFIOTARGETSELFASSIGNDEFAULTIOQUEUE)(
_In_ PWDF_DRIVER_GLOBALS DriverGlobals,
_In_ WDFIOTARGET IoTarget,
_In_ WDFQUEUE Queue);
// some other random stuff
typedef PVOID PFN_WDF_CLASS_EXTENSIONIN_BIND;
typedef PVOID PFN_WDF_CLASS_EXTENSIONIN_UNBIND;
typedef PVOID PFN_WDF_CLASS_EXPORT;
typedef PVOID PFN_WDF_CLASS_LIBRARY_INITIALIZE;
typedef PVOID PFN_WDF_CLASS_LIBRARY_DEINITIALIZE;
typedef PVOID PFN_WDF_CLASS_LIBRARY_BIND_CLIENT;
typedef PVOID PFN_WDF_CLASS_LIBRARY_UNBIND_CLIENT;
typedef PVOID PFN_WDF_CLIENT_BIND_CLASS;
typedef PVOID PFN_WDF_CLIENT_UNBIND_CLASS;
#endif // _WDFCX_H_