48 ULONG PagedPoolCharge, NonPagedPoolCharge;
59 HeaderLocation = CreatorInfo;
63 HeaderLocation = NameInfo;
67 HeaderLocation = HandleInfo;
71 HeaderLocation = QuotaInfo;
81 if (
Header->ObjectCreateInfo)
91 if (
Header->QuotaBlockCharged)
104 PagedPoolCharge =
ObjectType->TypeInfo.DefaultPagedPoolCharge;
183 RtlInitEmptyUnicodeString(&NameInfo->
Name,
NULL, 0);
187 if (
Header->SecurityDescriptor)
192 DeleteSecurityDescriptor,
196 &
Header->SecurityDescriptor,
240 ReapObject = NextObject;
241 }
while ((ReapObject) && (ReapObject != (
PVOID)1));
388 RtlInitEmptyUnicodeString(CapturedName,
NULL, 0);
407 StringLength = LocalName.
Length;
411 if ((StringLength & (
sizeof(
WCHAR) - 1)) ||
462 ULONG SdCharge, QuotaInfoSize;
517 ObjectCreateInfo->SecurityDescriptor =
NULL;
529 if ((2 * QuotaInfoSize) > 2048)
531 SdCharge = 2 * QuotaInfoSize;
535 ObjectCreateInfo->SecurityDescriptorCharge = SdCharge;
552 ObjectCreateInfo->SecurityQualityOfService = *SecurityQos;
553 ObjectCreateInfo->SecurityQos =
554 &ObjectCreateInfo->SecurityQualityOfService;
560 LocalObjectName =
NULL;
577 AllocateFromLookaside);
585 if (ObjectCreateInfo->RootDirectory)
619 ULONG QuotaSize, HandleSize, NameSize, CreatorSize;
647 if (!ObjectCreateInfo)
650 QuotaSize = HandleSize = 0;
657 if ((((ObjectCreateInfo->PagedPoolCharge !=
658 ObjectType->TypeInfo.DefaultPagedPoolCharge) ||
659 (ObjectCreateInfo->NonPagedPoolCharge !=
660 ObjectType->TypeInfo.DefaultNonPagedPoolCharge) ||
661 (ObjectCreateInfo->SecurityDescriptorCharge > 2048)) &&
716 FinalSize = QuotaSize +
758 (ObjectCreateInfo) &&
792 Header->QuotaInfoOffset = 0;
806 Header->HandleInfoOffset = 0;
813 Header->NameInfoOffset = (
UCHAR)(NameSize + CreatorSize);
818 Header->NameInfoOffset = 0;
834 Header->ObjectCreateInfo = ObjectCreateInfo;
838 if ((ObjectCreateInfo) && (ObjectCreateInfo->Attributes &
OBJ_PERMANENT))
845 if ((ObjectCreateInfo) && (ObjectCreateInfo->Attributes &
OBJ_EXCLUSIVE))
862 TotalNumberOfObjects,
864 HighWaterNumberOfObjects);
896 ObjectTypeInfo->TotalNumberOfHandles =
898 ObjectTypeInfo->TotalNumberOfObjects =
900 ObjectTypeInfo->HighWaterNumberOfHandles =
902 ObjectTypeInfo->HighWaterNumberOfObjects =
904 ObjectTypeInfo->PoolType =
906 ObjectTypeInfo->DefaultNonPagedPoolCharge =
907 ObjectType->TypeInfo.DefaultNonPagedPoolCharge;
908 ObjectTypeInfo->DefaultPagedPoolCharge =
910 ObjectTypeInfo->ValidAccessMask =
912 ObjectTypeInfo->SecurityRequired =
914 ObjectTypeInfo->InvalidAttributes =
916 ObjectTypeInfo->GenericMapping =
918 ObjectTypeInfo->MaintainHandleCount =
922 InfoBuffer = (
PWSTR)(ObjectTypeInfo + 1);
923 ObjectTypeInfo->TypeName.Buffer = InfoBuffer;
924 ObjectTypeInfo->TypeName.MaximumLength =
ObjectType->Name.MaximumLength;
925 ObjectTypeInfo->TypeName.Length =
ObjectType->Name.Length;
980 if (
Type->TypeInfo.InvalidAttributes & ObjectCreateInfo->
Attributes)
988 if (!PagedPoolCharge)
991 PagedPoolCharge =
Type->TypeInfo.DefaultPagedPoolCharge;
995 if (!NonPagedPoolCharge)
998 NonPagedPoolCharge =
Type->TypeInfo.DefaultNonPagedPoolCharge;
1066 !(TypeName->Length) ||
1067 (TypeName->Length %
sizeof(
WCHAR)) ||
1068 !(ObjectTypeInitializer) ||
1069 (ObjectTypeInitializer->Length !=
sizeof(*ObjectTypeInitializer)) ||
1071 (ObjectTypeInitializer->MaintainHandleCount &&
1072 (!(ObjectTypeInitializer->OpenProcedure) &&
1073 !ObjectTypeInitializer->CloseProcedure)) ||
1074 ((!ObjectTypeInitializer->UseDefaultObject) &&
1082 p = TypeName->Buffer;
1083 i = TypeName->Length /
sizeof(
WCHAR);
1114 TypeName->MaximumLength,
1124 ObjectName.MaximumLength = TypeName->MaximumLength;
1180 LocalObjectType->
Key = *(
PULONG)TypeName->Buffer;
1185 LocalObjectType->
TypeInfo = *ObjectTypeInitializer;
1198 (ObjectTypeInitializer->MaintainHandleCount ?
1214 if (!ObjectTypeInitializer->SecurityProcedure)
1229 else if ((TypeName->Length == 8) && !(
wcscmp(TypeName->Buffer,
L"File")))
1235 else if ((TypeName->Length == 24) && !(
wcscmp(TypeName->Buffer,
L"WaitablePort")))
1249 for (
i = 0;
i < 4;
i++)
1335 for (
i = 0;
i < 4;
i++)
1488 ULONG InfoLength = 0;
1575 if (ObjectQuota !=
NULL)
1614 QuerySecurityDescriptor,
1651 DPRINT1(
"NOT IMPLEMENTED!\n");
1657 case ObjectHandleFlagInformation:
1752 case ObjectHandleFlagInformation:
1803 AttachedToProcess =
TRUE;
1831 case ObjectSessionInformation:
1838 DPRINT1(
"Privilege not held\n");
#define ProbeForWriteUlong(Ptr)
#define STATUS_OBJECT_NAME_COLLISION
NTSTATUS NTAPI ObpAllocateObject(IN POBJECT_CREATE_INFORMATION ObjectCreateInfo, IN PUNICODE_STRING ObjectName, IN POBJECT_TYPE ObjectType, IN ULONG ObjectSize, IN KPROCESSOR_MODE PreviousMode, IN POBJECT_HEADER *ObjectHeader)
POBJECT_TYPE ObpTypeObjectType
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
IN CINT OUT PVOID IN ULONG OUT PULONG ReturnLength
#define STATUS_PRIVILEGE_NOT_HELD
NTSTATUS NTAPI ObCreateObjectType(IN PUNICODE_STRING TypeName, IN POBJECT_TYPE_INITIALIZER ObjectTypeInitializer, IN PVOID Reserved, OUT POBJECT_TYPE *ObjectType)
struct _OBJECT_HEADER_HANDLE_INFO * POBJECT_HEADER_HANDLE_INFO
__in WDFOBJECT __in PCWDF_OBJECT_CONTEXT_TYPE_INFO TypeInfo
FORCEINLINE VOID ObpAcquireObjectLock(IN POBJECT_HEADER ObjectHeader)
#define STATUS_INSUFFICIENT_RESOURCES
_In_ ULONG _In_ ULONG _In_ ULONG Length
FORCEINLINE VOID ObpFreeCapturedAttributes(IN PVOID Buffer, IN PP_NPAGED_LOOKASIDE_NUMBER Type)
#define STATUS_INFO_LENGTH_MISMATCH
BOOLEAN NTAPI ObpSetHandleAttributes(IN OUT PHANDLE_TABLE_ENTRY HandleTableEntry, IN ULONG_PTR Context)
#define ALIGN_UP(size, type)
#define OBJ_CASE_INSENSITIVE
POBJECT_HANDLE_COUNT_DATABASE HandleCountDatabase
struct _OBJECT_SYMBOLIC_LINK * POBJECT_SYMBOLIC_LINK
const LUID SeCreatePermanentPrivilege
NTSTATUS NTAPI SeComputeQuotaInformationSize(_In_ PSECURITY_DESCRIPTOR SecurityDescriptor, _Out_ PULONG QuotaInfoSize)
VOID NTAPI ObpDeleteObject(IN PVOID Object, IN BOOLEAN CalledFromWorkerThread)
IN BOOLEAN OUT PSTR Buffer
#define OBJECT_HEADER_TO_HANDLE_INFO(h)
_In_ USHORT _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR _Reserved_ ULONG _In_opt_ PVOID _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH _In_opt_ PEPROCESS _In_opt_ PETHREAD _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor
#define STATUS_INVALID_PARAMETER
#define BooleanFlagOn(F, SF)
WORK_QUEUE_ITEM ObpReaperWorkItem
GENERAL_LOOKASIDE ObpNameBufferLookasideList
VOID NTAPI PsReturnSharedPoolQuota(_In_ PEPROCESS_QUOTA_BLOCK QuotaBlock, _In_ SIZE_T AmountToReturnPaged, _In_ SIZE_T AmountToReturnNonPaged)
Returns the shared (paged and non paged) pool quotas. The function is used exclusively by the Object ...
FORCEINLINE VOID ObpReleaseObjectLock(IN POBJECT_HEADER ObjectHeader)
#define KeGetPreviousMode()
struct _OBJECT_HANDLE_ATTRIBUTE_INFORMATION * POBJECT_HANDLE_ATTRIBUTE_INFORMATION
ULONG ObpObjectsWithHandleDB
NTSTATUS NTAPI ObpCaptureObjectCreateInformation(IN POBJECT_ATTRIBUTES ObjectAttributes, IN KPROCESSOR_MODE AccessMode, IN KPROCESSOR_MODE CreatorMode, IN BOOLEAN AllocateFromLookaside, IN POBJECT_CREATE_INFORMATION ObjectCreateInfo, OUT PUNICODE_STRING ObjectName)
VOID FASTCALL ObpSetPermanentObject(IN PVOID ObjectBody, IN BOOLEAN Permanent)
FORCEINLINE VOID ObpReleaseObjectCreateInformation(IN POBJECT_CREATE_INFORMATION ObjectCreateInfo)
NTSTATUS ExInitializeResourceLite(PULONG res)
NTSTATUS NTAPI ExDeleteResourceLite(IN PERESOURCE Resource)
#define InterlockedCompareExchange
#define OB_FLAG_SINGLE_PROCESS
_Must_inspect_result_ _In_ _In_ ULONG ProbeMode
NTSTATUS NTAPI ObQueryNameString(IN PVOID Object, OUT POBJECT_NAME_INFORMATION ObjectNameInfo, IN ULONG Length, OUT PULONG ReturnLength)
#define OBJECT_HEADER_TO_NAME_INFO(h)
#define ObpIsKernelHandle(Handle, ProcessorMode)
KPROCESSOR_MODE NTAPI ExGetPreviousMode(VOID)
ULONG ObpObjectsWithPoolQuota
IN CINT OUT PVOID ObjectInformation
NTSTATUS NTAPI NtMakeTemporaryObject(IN HANDLE ObjectHandle)
#define GROUP_SECURITY_INFORMATION
struct _OBJECT_HEADER_CREATOR_INFO * POBJECT_HEADER_CREATOR_INFO
struct _OBJECT_BASIC_INFORMATION * POBJECT_BASIC_INFORMATION
_In_ PVOID _Out_opt_ PULONG_PTR _Outptr_opt_ PCUNICODE_STRING * ObjectName
#define InsertTailList(ListHead, Entry)
volatile PVOID ObpReaperList
#define OBJ_KERNEL_HANDLE
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
BOOLEAN NTAPI ExChangeHandle(IN PHANDLE_TABLE HandleTable, IN HANDLE Handle, IN PEX_CHANGE_HANDLE_CALLBACK ChangeRoutine, IN ULONG_PTR Context)
FORCEINLINE VOID ObpReleaseDirectoryLock(IN POBJECT_DIRECTORY Directory, IN POBP_LOOKUP_CONTEXT Context)
Unlocks a previously shared or exclusively locked directory.
NTSTATUS NTAPI NtMakePermanentObject(IN HANDLE ObjectHandle)
ULONG TotalNumberOfHandles
enum _OBJECT_INFORMATION_CLASS OBJECT_INFORMATION_CLASS
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString)
#define OB_FLAG_PERMANENT
struct LOOKASIDE_ALIGN _GENERAL_LOOKASIDE GENERAL_LOOKASIDE
#define OBJECT_TO_OBJECT_HEADER(o)
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
FORCEINLINE PVOID ObpAllocateObjectCreateInfoBuffer(IN PP_NPAGED_LOOKASIDE_NUMBER Type)
#define OBJ_PROTECT_CLOSE
return STATUS_NOT_IMPLEMENTED
GENERAL_LOOKASIDE ObpCreateInfoLookasideList
NTSTATUS NTAPI ObReferenceObjectByHandle(IN HANDLE Handle, IN ACCESS_MASK DesiredAccess, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, OUT PVOID *Object, OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
struct _OBJECT_HEADER OBJECT_HEADER
struct _OBJECT_HEADER * POBJECT_HEADER
PEPROCESS PsInitialSystemProcess
VOID NTAPI KeStackAttachProcess(IN PKPROCESS Process, OUT PRKAPC_STATE ApcState)
DWORD SECURITY_INFORMATION
#define OBJ_NAME_PATH_SEPARATOR
NTSTATUS NTAPI ObpCaptureObjectName(IN OUT PUNICODE_STRING CapturedName, IN PUNICODE_STRING ObjectName, IN KPROCESSOR_MODE AccessMode, IN BOOLEAN UseLookaside)
NTSTATUS NTAPI NtSetInformationObject(IN HANDLE ObjectHandle, IN OBJECT_INFORMATION_CLASS ObjectInformationClass, IN PVOID ObjectInformation, IN ULONG Length)
_In_ PEPROCESS _In_ KPROCESSOR_MODE AccessMode
KGUARDED_MUTEX ObpDeviceMapLock
#define PsGetCurrentProcess
#define FLG_MAINTAIN_OBJECT_TYPELIST
FORCEINLINE VOID ObpCalloutStart(IN PKIRQL CalloutIrql)
FORCEINLINE VOID ObpFreeObjectCreateInformation(IN POBJECT_CREATE_INFORMATION ObjectCreateInfo)
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ SECURITY_INFORMATION SecurityInformation
_Reserved_ PVOID Reserved
VOID NTAPI ObpDeleteObjectType(IN PVOID Object)
PHANDLE_TABLE ObpKernelHandleTable
IN CINT ObjectInformationClass
#define OBJ_VALID_KERNEL_ATTRIBUTES
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToAnsiString(PANSI_STRING DestinationString, PUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
#define OB_FLAG_EXCLUSIVE
NTSTATUS NTAPI ObCreateObject(IN KPROCESSOR_MODE ProbeMode OPTIONAL, IN POBJECT_TYPE Type, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN KPROCESSOR_MODE AccessMode, IN OUT PVOID ParseContext OPTIONAL, IN ULONG ObjectSize, IN ULONG PagedPoolCharge OPTIONAL, IN ULONG NonPagedPoolCharge OPTIONAL, OUT PVOID *Object)
BOOLEAN NTAPI ObpInsertEntryDirectory(IN POBJECT_DIRECTORY Parent, IN POBP_LOOKUP_CONTEXT Context, IN POBJECT_HEADER ObjectHeader)
struct _OBJECT_HEADER_QUOTA_INFO OBJECT_HEADER_QUOTA_INFO
VOID NTAPI ObFreeObjectCreateInfoBuffer(IN POBJECT_CREATE_INFORMATION ObjectCreateInfo)
#define OBJECT_HEADER_TO_QUOTA_INFO(h)
ULONG NTAPI PsGetCurrentProcessSessionId(VOID)
_In_ KPROCESSOR_MODE PreviousMode
#define ObpDirectoryObjectType
struct _OBJECT_BASIC_INFORMATION OBJECT_BASIC_INFORMATION
#define InterlockedExchangePointer(Target, Value)
OBJECT_HANDLE_COUNT_ENTRY SingleEntry
_In_ WDFDMATRANSACTION _In_ size_t MaximumLength
#define NT_SUCCESS(StatCode)
#define EXCEPTION_EXECUTE_HANDLER
NTSTATUS NTAPI SeCaptureSecurityDescriptor(_In_ PSECURITY_DESCRIPTOR _OriginalSecurityDescriptor, _In_ KPROCESSOR_MODE CurrentMode, _In_ POOL_TYPE PoolType, _In_ BOOLEAN CaptureIfKernel, _Out_ PSECURITY_DESCRIPTOR *CapturedSecurityDescriptor)
Captures a security descriptor.
#define ObDereferenceObject
static OB_SECURITY_METHOD SeDefaultObjectMethod
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.
FORCEINLINE VOID ObpEnterObjectTypeMutex(IN POBJECT_TYPE ObjectType)
NTSYSAPI VOID NTAPI RtlFreeAnsiString(PANSI_STRING AnsiString)
ULONG ObpObjectsWithCreatorInfo
#define SACL_SECURITY_INFORMATION
NTSTATUS NTAPI ObQueryTypeInfo(IN POBJECT_TYPE ObjectType, OUT POBJECT_TYPE_INFORMATION ObjectTypeInfo, IN ULONG Length, OUT PULONG ReturnLength)
#define STATUS_ACCESS_DENIED
#define OB_FLAG_CREATE_INFO
#define ExAllocatePoolWithTag(hernya, size, tag)
struct _OBJECT_HANDLE_ATTRIBUTE_INFORMATION OBJECT_HANDLE_ATTRIBUTE_INFORMATION
struct _OBJECT_TYPE * POBJECT_TYPE
FORCEINLINE VOID ObpLeaveObjectTypeMutex(IN POBJECT_TYPE ObjectType)
FORCEINLINE VOID ObpCalloutEnd(IN KIRQL CalloutIrql, IN PCHAR Procedure, IN POBJECT_TYPE ObjectType, IN PVOID Object)
struct _OBJECT_HEADER_NAME_INFO * POBJECT_HEADER_NAME_INFO
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
#define STATUS_INVALID_INFO_CLASS
#define InterlockedDecrement
PVOID NTAPI ObpLookupEntryDirectory(IN POBJECT_DIRECTORY Directory, IN PUNICODE_STRING Name, IN ULONG Attributes, IN UCHAR SearchShadow, IN POBP_LOOKUP_CONTEXT Context)
VOID FASTCALL ObpDeallocateObject(IN PVOID Object)
ULONG HighWaterNumberOfObjects
OBJECT_TYPE_INITIALIZER TypeInfo
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
ULONG HighWaterNumberOfHandles
VOID NTAPI ObDeleteCapturedInsertInfo(IN PVOID Object)
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
#define OB_FLAG_KERNEL_MODE
const LUID SeTcbPrivilege
#define OBP_NAME_LOOKASIDE_MAX_SIZE
PWCHAR NTAPI ObpAllocateObjectNameBuffer(IN ULONG Length, IN BOOLEAN UseLookaside, IN OUT PUNICODE_STRING ObjectName)
FORCEINLINE VOID ObpReleaseLookupContext(IN POBP_LOOKUP_CONTEXT Context)
Releases an initialized object directory lookup context. Unlocks it if necessary, and dereferences th...
ULONG DefaultPagedPoolCharge
struct _OBJECT_HEADER_QUOTA_INFO * POBJECT_HEADER_QUOTA_INFO
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
ULONG TotalNumberOfObjects
#define ObpSymbolicLinkObjectType
FORCEINLINE VOID ObpInitializeLookupContext(IN POBP_LOOKUP_CONTEXT Context)
Initializes a new object directory lookup context. Used for lookup operations (insertions/deletions) ...
LONG NTAPI ExSystemExceptionFilter(VOID)
#define InterlockedIncrement
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define OB_FLAG_DEFER_DELETE
VOID NTAPI KeUnstackDetachProcess(IN PRKAPC_STATE ApcState)
#define InitializeListHead(ListHead)
OB_SECURITY_METHOD SecurityProcedure
#define OBJECT_HEADER_TO_CREATOR_INFO(h)
_Out_ PKAPC_STATE ApcState
#define FIELD_OFFSET(t, f)
#define STATUS_OBJECT_NAME_INVALID
#define OWNER_SECURITY_INFORMATION
HANDLE NTAPI PsGetCurrentProcessId(VOID)
#define OBJ_KERNEL_EXCLUSIVE
#define ProbeForReadUnicodeString(Ptr)
#define OB_FLAG_CREATOR_INFO
BOOLEAN NTAPI SeSinglePrivilegeCheck(_In_ LUID PrivilegeValue, _In_ KPROCESSOR_MODE PreviousMode)
Checks if a single privilege is present in the context of the calling thread.
struct _OBJECT_HEADER_NAME_INFO OBJECT_HEADER_NAME_INFO
struct tagContext Context
#define ObReferenceObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
#define OBP_SYSTEM_PROCESS_QUOTA
base for all directory entries
VOID NTAPI ObpReapObject(IN PVOID Parameter)
#define RtlZeroMemory(Destination, Length)
#define RtlCopyMemory(Destination, Source, Length)
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_ PULONG ResultLength
#define _SEH2_EXCEPT(...)
#define _SEH2_GetExceptionCode()
#define _SEH2_YIELD(__stmt)
#define ObKernelHandleToHandle(Handle)
struct _OBJECT_HEADER_HANDLE_INFO OBJECT_HEADER_HANDLE_INFO
_In_ BOOLEAN _In_ USHORT Directory
POBJECT_TYPE ObpObjectTypes[32]
VOID NTAPI ObpDeleteNameCheck(IN PVOID Object)
#define ExFreePoolWithTag(_P, _T)
#define OB_FLAG_KERNEL_EXCLUSIVE
NTSTATUS NTAPI NtQueryObject(IN HANDLE ObjectHandle, IN OBJECT_INFORMATION_CLASS ObjectInformationClass, OUT PVOID ObjectInformation, IN ULONG Length, OUT PULONG ResultLength OPTIONAL)
ULONG DefaultNonPagedPoolCharge
#define DACL_SECURITY_INFORMATION
struct _OBJECT_HEADER_CREATOR_INFO OBJECT_HEADER_CREATOR_INFO
POBJECT_DIRECTORY ObpTypeDirectoryObject
VOID NTAPI ObpFreeObjectNameBuffer(IN PUNICODE_STRING Name)
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...
VOID NTAPI ObMakeTemporaryObject(IN PVOID ObjectBody)
PULONG MinorVersion OPTIONAL