mirror of
https://github.com/reactos/reactos.git
synced 2025-08-06 00:12:57 +00:00
[WDF] Add Windows Driver Framework files
Takern from Microsoft GitHub repo:
d9c6040fe9
Licensed under MIT
This commit is contained in:
parent
545df81502
commit
8a978a179f
475 changed files with 285099 additions and 0 deletions
|
@ -0,0 +1,200 @@
|
|||
/*++
|
||||
|
||||
Copyright (c) Microsoft Corporation
|
||||
|
||||
Module Name:
|
||||
|
||||
FxFileObjectCallbacks.h
|
||||
|
||||
Abstract:
|
||||
|
||||
This module implements the I/O package queue object callbacks
|
||||
|
||||
Author:
|
||||
|
||||
|
||||
|
||||
|
||||
Environment:
|
||||
|
||||
Both kernel and user mode
|
||||
|
||||
Revision History:
|
||||
|
||||
--*/
|
||||
|
||||
#ifndef _FXFILEOBJECTCALLBACKS_H
|
||||
#define _FXFILEOBJECTCALLBACKS_H
|
||||
|
||||
|
||||
//
|
||||
// EvtDeviceFileCreate callback delegate
|
||||
//
|
||||
class FxFileObjectFileCreate : public FxLockedCallback {
|
||||
|
||||
public:
|
||||
PFN_WDF_DEVICE_FILE_CREATE Method;
|
||||
|
||||
FxFileObjectFileCreate(
|
||||
VOID
|
||||
) :
|
||||
FxLockedCallback()
|
||||
{
|
||||
Method = NULL;
|
||||
}
|
||||
|
||||
VOID
|
||||
Invoke(
|
||||
__in WDFDEVICE Device,
|
||||
__in WDFREQUEST Request,
|
||||
__in_opt WDFFILEOBJECT FileObject
|
||||
)
|
||||
{
|
||||
|
||||
if (Method != NULL) {
|
||||
KIRQL irql = 0;
|
||||
|
||||
CallbackStart(&irql);
|
||||
Method(Device, Request, FileObject);
|
||||
CallbackEnd(irql);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
//
|
||||
// EvtFileCleanup callback delegate
|
||||
//
|
||||
class FxFileObjectFileCleanup : public FxLockedCallback {
|
||||
|
||||
public:
|
||||
PFN_WDF_FILE_CLEANUP Method;
|
||||
|
||||
FxFileObjectFileCleanup(
|
||||
VOID
|
||||
) :
|
||||
FxLockedCallback()
|
||||
{
|
||||
Method = NULL;
|
||||
}
|
||||
|
||||
void
|
||||
Invoke(
|
||||
__in_opt WDFFILEOBJECT FileObject
|
||||
)
|
||||
{
|
||||
if (Method != NULL) {
|
||||
KIRQL irql = 0;
|
||||
|
||||
CallbackStart(&irql);
|
||||
Method(FileObject);
|
||||
CallbackEnd(irql);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
//
|
||||
// EvtFileClose callback delegate
|
||||
//
|
||||
class FxFileObjectFileClose : public FxLockedCallback {
|
||||
|
||||
public:
|
||||
PFN_WDF_FILE_CLOSE Method;
|
||||
|
||||
FxFileObjectFileClose(
|
||||
VOID
|
||||
) :
|
||||
FxLockedCallback()
|
||||
{
|
||||
Method = NULL;
|
||||
}
|
||||
|
||||
void
|
||||
Invoke(
|
||||
__in_opt WDFFILEOBJECT FileObject
|
||||
)
|
||||
{
|
||||
if (Method != NULL) {
|
||||
KIRQL irql = 0;
|
||||
|
||||
CallbackStart(&irql);
|
||||
Method(FileObject);
|
||||
CallbackEnd(irql);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
//
|
||||
// EvtDeviceFileCreate callback delegate
|
||||
//
|
||||
class FxCxFileObjectFileCreate : public FxLockedCallback {
|
||||
|
||||
public:
|
||||
PFN_WDFCX_DEVICE_FILE_CREATE Method;
|
||||
|
||||
FxCxFileObjectFileCreate(
|
||||
VOID
|
||||
) :
|
||||
FxLockedCallback()
|
||||
{
|
||||
Method = NULL;
|
||||
}
|
||||
|
||||
BOOLEAN
|
||||
Invoke(
|
||||
__in WDFDEVICE Device,
|
||||
__in WDFREQUEST Request,
|
||||
__in_opt WDFFILEOBJECT FileObject
|
||||
)
|
||||
{
|
||||
BOOLEAN claimed = FALSE;
|
||||
|
||||
if (Method != NULL) {
|
||||
KIRQL irql = 0;
|
||||
|
||||
CallbackStart(&irql);
|
||||
claimed = Method(Device, Request, FileObject);
|
||||
CallbackEnd(irql);
|
||||
}
|
||||
|
||||
return claimed;
|
||||
}
|
||||
};
|
||||
|
||||
//
|
||||
// Collection of file-object callbacks.
|
||||
//
|
||||
struct FxFileObjectInfo : public FxStump {
|
||||
|
||||
FxFileObjectInfo() :
|
||||
FileObjectClass(WdfFileObjectInvalid),
|
||||
AutoForwardCleanupClose(WdfUseDefault),
|
||||
ClassExtension(FALSE),
|
||||
CxDeviceInfo(NULL)
|
||||
{
|
||||
InitializeListHead(&ListEntry);
|
||||
RtlZeroMemory(&Attributes, sizeof(Attributes));
|
||||
}
|
||||
|
||||
~FxFileObjectInfo()
|
||||
{
|
||||
ASSERT(IsListEmpty(&ListEntry));
|
||||
}
|
||||
|
||||
LIST_ENTRY ListEntry;
|
||||
|
||||
FxFileObjectFileCreate EvtFileCreate;
|
||||
FxCxFileObjectFileCreate EvtCxFileCreate;
|
||||
FxFileObjectFileCleanup EvtFileCleanup;
|
||||
FxFileObjectFileClose EvtFileClose;
|
||||
|
||||
WDF_FILEOBJECT_CLASS FileObjectClass;
|
||||
WDF_OBJECT_ATTRIBUTES Attributes;
|
||||
WDF_TRI_STATE AutoForwardCleanupClose;
|
||||
|
||||
BOOLEAN ClassExtension;
|
||||
|
||||
FxCxDeviceInfo* CxDeviceInfo;
|
||||
};
|
||||
|
||||
#endif // _FXFILEOBJECTCALLBACKS_H
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue