reactos/sdk/lib/drivers/wdf/shared/inc/private/common/fxuserobject.hpp
Victor Perevertkin 1f377076d7
[WDF] Fix KMDF so it can compile with ReactOS SDK
Not all files are included, but these are necessary to compile cdrom driver.
So far it can only be statically linked with drivers, a proper
implementation requires wdfldr helper driver
2020-11-03 00:06:27 +03:00

106 lines
1.7 KiB
C++

/*++
Copyright (c) Microsoft. All rights reserved.
Module Name:
FxUserObject.hpp
Abstract:
This module implements the user object that device
driver writers can use to take advantage of the
driver frameworks infrastructure.
Author:
Environment:
Both kernel and user mode
Revision History:
Made mode agnostic
--*/
#ifndef _FXUSEROBJECT_H_
#define _FXUSEROBJECT_H_
class FxUserObject : public FxNonPagedObject {
private:
public:
static
_Must_inspect_result_
NTSTATUS
_Create(
__in PFX_DRIVER_GLOBALS FxDriverGlobals,
__in_opt PWDF_OBJECT_ATTRIBUTES Attributes,
__out FxUserObject** Object
);
FxUserObject(
__in PFX_DRIVER_GLOBALS FxDriverGlobals
);
virtual
NTSTATUS
QueryInterface(
__in FxQueryInterfaceParams* Params
)
{
switch (Params->Type) {
case FX_TYPE_USEROBJECT:
*Params->Object = (FxUserObject*) this;
break;
default:
return FxNonPagedObject::QueryInterface(Params); // __super call
}
return STATUS_SUCCESS;
}
__inline
WDFOBJECT
GetHandle(
VOID
)
{
return (WDFOBJECT) GetObjectHandle();
}
private:
#ifdef INLINE_WRAPPER_ALLOCATION
#if (FX_CORE_MODE==FX_CORE_USER_MODE)
static
USHORT
GetWrapperSize(
VOID
);
public:
FORCEINLINE
PVOID
GetCOMWrapper(
VOID
)
{
PBYTE ptr = (PBYTE) this;
return (ptr + (USHORT) WDF_ALIGN_SIZE_UP(sizeof(*this), MEMORY_ALLOCATION_ALIGNMENT));
}
#endif
#endif
};
#endif // _FXUSEROBJECT_H_