mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 19:33:16 +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
136
sdk/lib/drivers/wdf/shared/inc/private/common/fxcallback.hpp
Normal file
136
sdk/lib/drivers/wdf/shared/inc/private/common/fxcallback.hpp
Normal file
|
@ -0,0 +1,136 @@
|
|||
/*++
|
||||
|
||||
Copyright (c) Microsoft Corporation
|
||||
|
||||
Module Name:
|
||||
|
||||
FxCallback.hpp
|
||||
|
||||
Abstract:
|
||||
|
||||
This represents a delegate object base class for
|
||||
calling back into the driver.
|
||||
|
||||
Author:
|
||||
|
||||
|
||||
|
||||
|
||||
Revision History:
|
||||
|
||||
--*/
|
||||
|
||||
#ifndef _FXCALLBACK_H_
|
||||
#define _FXCALLBACK_H_
|
||||
|
||||
extern "C" {
|
||||
#if defined(EVENT_TRACING)
|
||||
#include "FxCallback.hpp.tmh"
|
||||
#endif
|
||||
}
|
||||
|
||||
class FxCallback {
|
||||
|
||||
public:
|
||||
|
||||
FxCallback(
|
||||
__in_opt PFX_DRIVER_GLOBALS FxDriverGlobals = NULL
|
||||
)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(FxDriverGlobals);
|
||||
}
|
||||
|
||||
PVOID
|
||||
operator new(
|
||||
__in size_t Size,
|
||||
__in PFX_DRIVER_GLOBALS FxDriverGlobals,
|
||||
__in POOL_TYPE PoolType = NonPagedPool
|
||||
)
|
||||
{
|
||||
return FxPoolAllocate(FxDriverGlobals, PoolType, Size);
|
||||
}
|
||||
|
||||
VOID
|
||||
operator delete(
|
||||
__in PVOID pointer
|
||||
)
|
||||
{
|
||||
FxPoolFree(pointer);
|
||||
}
|
||||
|
||||
protected:
|
||||
void
|
||||
__inline
|
||||
CallbackStart(
|
||||
VOID
|
||||
)
|
||||
{
|
||||
// intentionally does nothing, visual place marker only for now
|
||||
DO_NOTHING();
|
||||
}
|
||||
|
||||
void
|
||||
__inline
|
||||
CallbackEnd(
|
||||
VOID
|
||||
)
|
||||
{
|
||||
// intentionally does nothing, visual place marker only for now
|
||||
DO_NOTHING();
|
||||
}
|
||||
};
|
||||
|
||||
class FxLockedCallback {
|
||||
|
||||
private:
|
||||
FxCallbackLock* m_CallbackLock;
|
||||
|
||||
public:
|
||||
FxLockedCallback(
|
||||
VOID
|
||||
)
|
||||
{
|
||||
m_CallbackLock = NULL;
|
||||
}
|
||||
|
||||
FxCallbackLock*
|
||||
GetCallbackLockPtr(
|
||||
VOID
|
||||
)
|
||||
{
|
||||
return m_CallbackLock;
|
||||
}
|
||||
|
||||
void
|
||||
SetCallbackLockPtr(
|
||||
FxCallbackLock* Lock
|
||||
)
|
||||
{
|
||||
m_CallbackLock = Lock;
|
||||
}
|
||||
|
||||
protected:
|
||||
__inline
|
||||
void
|
||||
CallbackStart(
|
||||
__out PKIRQL PreviousIrql
|
||||
)
|
||||
{
|
||||
if (m_CallbackLock != NULL) {
|
||||
m_CallbackLock->Lock(PreviousIrql);
|
||||
}
|
||||
}
|
||||
|
||||
__inline
|
||||
void
|
||||
CallbackEnd(
|
||||
__in KIRQL PreviousIrql
|
||||
)
|
||||
{
|
||||
if (m_CallbackLock != NULL) {
|
||||
m_CallbackLock->Unlock(PreviousIrql);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
#endif // _FXCALLBACK_H_
|
Loading…
Add table
Add a link
Reference in a new issue