31 #if defined(EVENT_TRACING) 32 #include "HandleAPI.tmh" 55 size_t contextSize = 0;
63 contextSize =
Attributes->ContextTypeInfo->ContextSize;
121 status = RtlSizeTAdd(*Total, alignUp, Total);
129 status = RtlSizeTAdd(*Total,
137 "Size overflow, object size 0x%x, extra object size 0x%x, " 138 "context size 0x%I64x, %!STATUS!",
201 Tag = FxDriverGlobals->Tag;
210 if (FxDriverGlobals->IsObjectDebugOn()) {
232 blob = FxPoolAllocateWithTag(FxDriverGlobals,
PoolType, totalSize,
Tag);
274 contextSize =
Attributes->ContextSizeOverride;
278 contextSize =
Attributes->ContextTypeInfo->ContextSize;
321 if (FxDriverGlobals->IsObjectDebugOn()) {
381 "Object Type Mismatch, Handle 0x%p, Type 0x%x, " 454 "Attributes %p ContextTypeInfo is NULL, %!STATUS!",
559 "WDFHANDLE %p cannot have contexts added to it, %!STATUS!",
650 "Attempting to get context type %s from WDFOBJECT 0x%p",
690 #pragma prefast(push); 693 #pragma prefast(disable:__WARNING_BUFFER_UNDERFLOW, "No way to express that passed in ptr is at an offset"); 698 #pragma prefast(pop);
_Must_inspect_result_ __drv_maxIRQL(DISPATCH_LEVEL) WDFAPI NTSTATUS STDCALL WDFEXPORT(WdfObjectAllocateContext)(__in PWDF_DRIVER_GLOBALS DriverGlobals
size_t FxGetContextSize(__in_opt PWDF_OBJECT_ATTRIBUTES Attributes)
#define _Must_inspect_result_
__in WDFOBJECT __in PCWDF_OBJECT_CONTEXT_TYPE_INFO TypeInfo
#define STATUS_INSUFFICIENT_RESOURCES
_Must_inspect_result_ __in WDFOBJECT __in PWDF_OBJECT_ATTRIBUTES __deref_opt_out PVOID * Context
#define ALIGN_UP(size, type)
#define WDF_PTR_ADD_OFFSET(_ptr, _offset)
_Must_inspect_result_ NTSTATUS FxObjectAllocateContext(__in FxObject *Object, __in PWDF_OBJECT_ATTRIBUTES Attributes, __in BOOLEAN AllowCallbacksOnly, __deref_opt_out PVOID *Context)
__in PVOID ContextPointer
_Must_inspect_result_ NTSTATUS FxCalculateObjectTotalSize2(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in USHORT RawObjectSize, __in USHORT ExtraSize, __in size_t ContextSize, __out size_t *Total)
IN PVOID IN PVOID IN USHORT IN USHORT Size
_Must_inspect_result_ __in WDFOBJECT __in PWDF_OBJECT_ATTRIBUTES Attributes
_Must_inspect_result_ _In_ FLT_CONTEXT_TYPE _In_ SIZE_T ContextSize
#define FxVerifierBugCheck(FxDriverGlobals, Error,...)
PFX_DRIVER_GLOBALS pFxDriverGlobals
GLenum const GLfloat * params
#define STATUS_INTEGER_OVERFLOW
FORCEINLINE size_t WDF_ALIGN_SIZE_UP(_In_ size_t Length, _In_ size_t AlignTo)
PVOID __inline GetObjectHandle(VOID)
FxContextHeader * pHeader
_Must_inspect_result_ BOOLEAN IsVersionGreaterThanOrEqualTo(__in ULONG Major, __in ULONG Minor)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
PVOID FxObjectHandleAlloc(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in POOL_TYPE PoolType, __in size_t Size, __in ULONG Tag, __in_opt PWDF_OBJECT_ATTRIBUTES Attributes, __in USHORT ExtraSize, __in FxObjectType ObjectType)
#define COMPUTE_OBJECT_SIZE(_rawObjectSize, _extraSize)
#define NT_SUCCESS(StatCode)
FORCEINLINE WDFOBJECT WdfObjectContextGetObject(_In_ PVOID ContextPointer)
_Must_inspect_result_ NTSTATUS FxCalculateObjectTotalSize(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in USHORT RawObjectSize, __in USHORT ExtraSize, __in_opt PWDF_OBJECT_ATTRIBUTES Attributes, __out size_t *Total)
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_WARNING, TRACINGHANDLE, "Attempting to get context type %s from WDFOBJECT 0x%p", pGivenName, Handle)
FORCEINLINE PVOID WdfObjectGetTypedContextWorker(_In_ WDFOBJECT Handle, _In_ PCWDF_OBJECT_CONTEXT_TYPE_INFO TypeInfo)
VOID FxContextHeaderInit(__in FxContextHeader *Header, __in FxObject *Object, __in_opt PWDF_OBJECT_ATTRIBUTES Attributes)
_Must_inspect_result_ NTSTATUS FxValidateObjectAttributes(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PWDF_OBJECT_ATTRIBUTES Attributes, __in ULONG Flags=FX_VALIDATE_OPTION_NONE_SPECIFIED)
FORCEINLINE NTSTATUS WdfObjectAllocateContext(_In_ WDFOBJECT Handle, _In_ PWDF_OBJECT_ATTRIBUTES ContextAttributes, _Outptr_opt_ PVOID *Context)
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
#define TRACE_LEVEL_ERROR
#define TRACE_LEVEL_WARNING
__inline FxContextHeader * GetContextHeader(VOID)
_In_ ULONG _In_ ULONG Offset
__inline PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
_Must_inspect_result_ __in WDFOBJECT Handle
PFX_DRIVER_GLOBALS fxDriverGlobals
#define STATUS_OBJECT_NAME_INVALID
#define STATUS_OBJECT_PATH_INVALID
FxPointerNotNull(GetFxDriverGlobals(DriverGlobals), Handle)
static FxObject * _GetObjectFromHandle(__in WDFOBJECT Handle, __inout PWDFOBJECT_OFFSET ObjectOffset)
VOID FxObjectHandleGetPtrQI(__in FxObject *Object, __out PVOID *PPObject, __in WDFOBJECT Handle, __in WDFTYPE Type, __in WDFOBJECT_OFFSET Offset)
PVOID FxObjectAndHandleHeaderInit(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PVOID AllocationStart, __in USHORT ObjectSize, __in_opt PWDF_OBJECT_ATTRIBUTES Attributes, __in FxObjectType ObjectType)
#define DDI_ENTRY_IMPERSONATION_OK()
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
#define RtlZeroMemory(Destination, Length)
__inline PFX_DRIVER_GLOBALS GetFxDriverGlobals(__in PWDF_DRIVER_GLOBALS DriverGlobals)
void FxPoolFree(__in_xcount(ptr is at an offset from AllocationStart) PVOID ptr)
#define MEMORY_ALLOCATION_ALIGNMENT
#define FX_CONTEXT_HEADER_SIZE
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes