11#define OBP_LOCK_STATE_PRE_ACQUISITION_EXCLUSIVE 0xAAAA1234
12#define OBP_LOCK_STATE_PRE_ACQUISITION_SHARED 0xBBBB1234
13#define OBP_LOCK_STATE_POST_ACQUISITION_EXCLUSIVE 0xCCCC1234
14#define OBP_LOCK_STATE_POST_ACQUISITION_SHARED 0xDDDD1234
15#define OBP_LOCK_STATE_RELEASED 0xEEEE1234
16#define OBP_LOCK_STATE_INITIALIZED 0xFFFF1234
18#define OBP_NAME_LOOKASIDE_MAX_SIZE 248
43 return (((
ULONG_PTR)ObjectHeader) >> 8) & 3;
105 ULONG NewValue, References;
109 if (!ObjectNameInfo)
return NULL;
116 if (!References)
return NULL;
123 if (NewValue == References)
break;
126 References = NewValue;
138 return ObjectNameInfo;
148 if (!HeaderNameInfo)
return;
154 if (HeaderNameInfo->Name.Buffer)
158 RtlInitEmptyUnicodeString(&HeaderNameInfo->Name,
NULL, 0);
166 HeaderNameInfo->Directory =
NULL;
367 if (ObjectCreateInfo->SecurityDescriptor)
371 ObjectCreateInfo->ProbeMode,
373 ObjectCreateInfo->SecurityDescriptor =
NULL;
389 List->L.TotalAllocates++;
394 List->L.AllocateMisses++;
398 List->L.TotalAllocates++;
403 List->L.AllocateMisses++;
424 List->L.TotalFrees++;
430 List->L.FreeMisses++;
434 List->L.TotalFrees++;
440 List->L.FreeMisses++;
487 DbgPrint(
"OB: ObjectType: %wZ Procedure: %s Object: %p\n",
489 DbgPrint(
" Returned at %x IRQL, but was called at %x IRQL\n",
_In_ PVOID _In_ ULONG _Out_ PVOID _In_ ULONG _Inout_ PULONG _In_ KPROCESSOR_MODE PreviousMode
#define InterlockedDecrement
#define KeGetCurrentIrql()
#define ExAcquireResourceExclusiveLite(res, wait)
#define ExAcquireResourceSharedLite(res, wait)
FORCEINLINE VOID ExReleasePushLock(PEX_PUSH_LOCK PushLock)
FORCEINLINE VOID ExAcquirePushLockExclusive(PEX_PUSH_LOCK PushLock)
FORCEINLINE VOID ExAcquirePushLockShared(PEX_PUSH_LOCK PushLock)
#define OBJ_KERNEL_HANDLE
#define OBJ_VALID_ATTRIBUTES
NTSYSAPI void WINAPI DbgBreakPoint(void)
#define InterlockedCompareExchange
#define KeLeaveCriticalRegion()
#define KeEnterCriticalRegion()
#define ExFreePoolWithTag(_P, _T)
FORCEINLINE struct _KPRCB * KeGetCurrentPrcb(VOID)
enum _PP_NPAGED_LOOKASIDE_NUMBER PP_NPAGED_LOOKASIDE_NUMBER
@ LookasideCreateInfoList
#define OBJECT_HEADER_TO_NAME_INFO(h)
#define OBJECT_TO_OBJECT_HEADER(o)
#define OBJ_VALID_KERNEL_ATTRIBUTES
#define UNREFERENCED_PARAMETER(P)
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
NTSTATUS NTAPI SeReleaseSecurityDescriptor(_In_ PSECURITY_DESCRIPTOR CapturedSecurityDescriptor, _In_ KPROCESSOR_MODE CurrentMode, _In_ BOOLEAN CaptureIfKernelMode)
Releases a captured security descriptor buffer.
FORCEINLINE VOID ObpAcquireDirectoryLockExclusive(IN POBJECT_DIRECTORY Directory, IN POBP_LOOKUP_CONTEXT Context)
Locks a directory for exclusive access. Used for writing/reading members of the directory object.
#define OBP_LOCK_STATE_PRE_ACQUISITION_EXCLUSIVE
#define OBP_LOCK_STATE_RELEASED
FORCEINLINE VOID ObpAcquireLookupContextLock(IN POBP_LOOKUP_CONTEXT Context, IN POBJECT_DIRECTORY Directory)
Locks an object directory lookup context for performing lookup operations (insertions/deletions) in a...
#define OBP_LOCK_STATE_POST_ACQUISITION_EXCLUSIVE
FORCEINLINE VOID ObpAcquireDirectoryLockShared(IN POBJECT_DIRECTORY Directory, IN POBP_LOOKUP_CONTEXT Context)
Locks a directory for shared access. Used for reading members of the directory object.
FORCEINLINE VOID ObpAcquireObjectLock(IN POBJECT_HEADER ObjectHeader)
FORCEINLINE VOID ObpInitializeLookupContext(IN POBP_LOOKUP_CONTEXT Context)
Initializes a new object directory lookup context. Used for lookup operations (insertions/deletions) ...
FORCEINLINE VOID ObpReleaseObjectLock(IN POBJECT_HEADER ObjectHeader)
FORCEINLINE VOID ObpAcquireObjectLockShared(IN POBJECT_HEADER ObjectHeader)
#define OBP_LOCK_STATE_POST_ACQUISITION_SHARED
#define OBP_LOCK_STATE_PRE_ACQUISITION_SHARED
FORCEINLINE VOID ObpLeaveObjectTypeMutex(IN POBJECT_TYPE ObjectType)
#define OBP_LOCK_STATE_INITIALIZED
FORCEINLINE PVOID ObpAllocateObjectCreateInfoBuffer(IN PP_NPAGED_LOOKASIDE_NUMBER Type)
FORCEINLINE VOID ObpReleaseLookupContextObject(IN POBP_LOOKUP_CONTEXT Context)
FORCEINLINE VOID ObpDereferenceNameInfo(IN POBJECT_HEADER_NAME_INFO HeaderNameInfo)
FORCEINLINE VOID ObpReleaseDirectoryLock(IN POBJECT_DIRECTORY Directory, IN POBP_LOOKUP_CONTEXT Context)
Unlocks a previously shared or exclusively locked directory.
FORCEINLINE VOID ObpCalloutStart(IN PKIRQL CalloutIrql)
FORCEINLINE VOID ObpReleaseObjectCreateInformation(IN POBJECT_CREATE_INFORMATION ObjectCreateInfo)
FORCEINLINE ULONG ObpValidateAttributes(IN ULONG Attributes, IN KPROCESSOR_MODE PreviousMode)
FORCEINLINE VOID ObpReleaseLookupContext(IN POBP_LOOKUP_CONTEXT Context)
Releases an initialized object directory lookup context. Unlocks it if necessary, and dereferences th...
FORCEINLINE ULONG ObpSelectObjectLockSlot(IN POBJECT_HEADER ObjectHeader)
FORCEINLINE VOID ObpFreeCapturedAttributes(IN PVOID Buffer, IN PP_NPAGED_LOOKASIDE_NUMBER Type)
FORCEINLINE VOID ObpCalloutEnd(IN KIRQL CalloutIrql, IN PCHAR Procedure, IN POBJECT_TYPE ObjectType, IN PVOID Object)
FORCEINLINE POBJECT_HEADER_NAME_INFO ObpReferenceNameInfo(IN POBJECT_HEADER ObjectHeader)
FORCEINLINE VOID ObpEnterObjectTypeMutex(IN POBJECT_TYPE ObjectType)
FORCEINLINE VOID ObpFreeObjectCreateInformation(IN POBJECT_CREATE_INFORMATION ObjectCreateInfo)
VOID NTAPI ObDereferenceObjectDeferDelete(IN PVOID Object)
base for all directory entries
PP_LOOKASIDE_LIST PPLookasideList[16]
struct _GENERAL_LOOKASIDE * P
struct _GENERAL_LOOKASIDE * L
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
_Must_inspect_result_ _In_ WDFCMRESLIST List
FORCEINLINE USHORT ExQueryDepthSList(_In_ PSLIST_HEADER SListHead)
struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST * PNPAGED_LOOKASIDE_LIST
#define ObDereferenceObject
#define InterlockedPushEntrySList(SListHead, SListEntry)
#define InterlockedPopEntrySList(SListHead)