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));
289 ObjectHeader->
Flags &= ~OB_FLAG_PERMANENT;
388 RtlInitEmptyUnicodeString(CapturedName,
NULL, 0);
407 StringLength = LocalName.
Length;
411 if ((StringLength & (
sizeof(
WCHAR) - 1)) ||
462 ULONG SdCharge, QuotaInfoSize;
498 if (CreatorMode !=
KernelMode) ObjectCreateInfo->Attributes &= ~OBJ_KERNEL_HANDLE;
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);
984 ObjectTypeInfo->TotalNumberOfHandles =
986 ObjectTypeInfo->TotalNumberOfObjects =
988 ObjectTypeInfo->HighWaterNumberOfHandles =
990 ObjectTypeInfo->HighWaterNumberOfObjects =
992 ObjectTypeInfo->PoolType =
994 ObjectTypeInfo->DefaultNonPagedPoolCharge =
995 ObjectType->TypeInfo.DefaultNonPagedPoolCharge;
996 ObjectTypeInfo->DefaultPagedPoolCharge =
998 ObjectTypeInfo->ValidAccessMask =
1000 ObjectTypeInfo->SecurityRequired =
1002 ObjectTypeInfo->InvalidAttributes =
1004 ObjectTypeInfo->GenericMapping =
1006 ObjectTypeInfo->MaintainHandleCount =
1010 InfoBuffer = (
PWSTR)(ObjectTypeInfo + 1);
1011 ObjectTypeInfo->TypeName.Buffer = InfoBuffer;
1012 ObjectTypeInfo->TypeName.MaximumLength =
ObjectType->Name.MaximumLength;
1013 ObjectTypeInfo->TypeName.Length =
ObjectType->Name.Length;
1068 if (
Type->TypeInfo.InvalidAttributes & ObjectCreateInfo->
Attributes)
1076 if (!PagedPoolCharge)
1079 PagedPoolCharge =
Type->TypeInfo.DefaultPagedPoolCharge;
1083 if (!NonPagedPoolCharge)
1086 NonPagedPoolCharge =
Type->TypeInfo.DefaultNonPagedPoolCharge;
1154 !(TypeName->Length) ||
1155 (TypeName->Length %
sizeof(
WCHAR)) ||
1156 !(ObjectTypeInitializer) ||
1157 (ObjectTypeInitializer->Length !=
sizeof(*ObjectTypeInitializer)) ||
1159 (ObjectTypeInitializer->MaintainHandleCount &&
1160 (!(ObjectTypeInitializer->OpenProcedure) &&
1161 !ObjectTypeInitializer->CloseProcedure)) ||
1162 ((!ObjectTypeInitializer->UseDefaultObject) &&
1170 p = TypeName->Buffer;
1171 i = TypeName->Length /
sizeof(
WCHAR);
1202 TypeName->MaximumLength,
1212 ObjectName.MaximumLength = TypeName->MaximumLength;
1268 LocalObjectType->
Key = *(
PULONG)TypeName->Buffer;
1273 LocalObjectType->
TypeInfo = *ObjectTypeInitializer;
1286 (ObjectTypeInitializer->MaintainHandleCount ?
1302 if (!ObjectTypeInitializer->SecurityProcedure)
1317 else if ((TypeName->Length == 8) && !(
wcscmp(TypeName->Buffer,
L"File")))
1323 else if ((TypeName->Length == 24) && !(
wcscmp(TypeName->Buffer,
L"WaitablePort")))
1337 for (
i = 0;
i < 4;
i++)
1356 Header->Flags &= ~OB_FLAG_CREATE_INFO;
1423 for (
i = 0;
i < 4;
i++)
1576 ULONG InfoLength = 0;
1663 if (ObjectQuota !=
NULL)
1703 QuerySecurityDescriptor,
1740 DPRINT1(
"NOT IMPLEMENTED!\n");
1746 case ObjectHandleFlagInformation:
1841 case ObjectHandleFlagInformation:
1892 AttachedToProcess =
TRUE;
1920 case ObjectSessionInformation:
1927 DPRINT1(
"Privilege not held\n");
#define STATUS_PRIVILEGE_NOT_HELD
#define OBJ_PROTECT_CLOSE
#define ObpDirectoryObjectType
static OB_SECURITY_METHOD SeDefaultObjectMethod
#define ObpSymbolicLinkObjectType
#define OBJ_NAME_PATH_SEPARATOR
#define InterlockedIncrement
#define InterlockedDecrement
IN CINT ObjectInformationClass
IN CINT OUT PVOID ObjectInformation
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
#define STATUS_NOT_IMPLEMENTED
#define NT_SUCCESS(StatCode)
#define InterlockedExchangePointer(Target, Value)
IN CINT OUT PVOID IN ULONG OUT PULONG ReturnLength
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define IsListEmpty(ListHead)
NTSTATUS ExInitializeResourceLite(PULONG res)
#define ExDeleteResourceLite(res)
#define InitializeListHead(ListHead)
#define ExGetPreviousMode
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
#define BooleanFlagOn(F, SF)
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ SECURITY_INFORMATION SecurityInformation
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
__in WDFOBJECT __in PCWDF_OBJECT_CONTEXT_TYPE_INFO TypeInfo
LONG NTAPI ExSystemExceptionFilter(VOID)
#define FLG_MAINTAIN_OBJECT_TYPELIST
enum _OBJECT_INFORMATION_CLASS OBJECT_INFORMATION_CLASS
#define OBJ_CASE_INSENSITIVE
struct _OBJECT_BASIC_INFORMATION OBJECT_BASIC_INFORMATION
struct _OBJECT_BASIC_INFORMATION * POBJECT_BASIC_INFORMATION
#define EXCEPTION_EXECUTE_HANDLER
#define InterlockedCompareExchange
#define ExFreePoolWithTag(_P, _T)
DWORD SECURITY_INFORMATION
#define KeGetPreviousMode()
@ LookasideCreateInfoList
@ LookasideNameBufferList
struct _OBJECT_SYMBOLIC_LINK * POBJECT_SYMBOLIC_LINK
#define OBJECT_HEADER_TO_HANDLE_INFO(h)
#define OB_FLAG_SINGLE_PROCESS
struct _OBJECT_HEADER_CREATOR_INFO * POBJECT_HEADER_CREATOR_INFO
struct _OBJECT_HEADER_QUOTA_INFO * POBJECT_HEADER_QUOTA_INFO
#define OB_FLAG_EXCLUSIVE
#define OB_FLAG_KERNEL_EXCLUSIVE
#define OBJECT_HEADER_TO_CREATOR_INFO(h)
struct _OBJECT_HEADER_HANDLE_INFO * POBJECT_HEADER_HANDLE_INFO
#define OB_FLAG_CREATOR_INFO
#define OB_FLAG_CREATE_INFO
#define OBJECT_HEADER_TO_NAME_INFO(h)
#define OBJECT_HEADER_TO_QUOTA_INFO(h)
#define OB_FLAG_KERNEL_MODE
struct _OBJECT_HEADER_CREATOR_INFO OBJECT_HEADER_CREATOR_INFO
struct _OBJECT_HANDLE_ATTRIBUTE_INFORMATION * POBJECT_HANDLE_ATTRIBUTE_INFORMATION
#define OB_FLAG_PERMANENT
struct _OBJECT_HEADER_NAME_INFO * POBJECT_HEADER_NAME_INFO
struct _OBJECT_HEADER_NAME_INFO OBJECT_HEADER_NAME_INFO
struct _OBJECT_HEADER OBJECT_HEADER
struct _OBJECT_HEADER * POBJECT_HEADER
#define OB_FLAG_DEFER_DELETE
struct _OBJECT_HEADER_QUOTA_INFO OBJECT_HEADER_QUOTA_INFO
#define OBJ_KERNEL_EXCLUSIVE
#define OBJECT_TO_OBJECT_HEADER(o)
struct _OBJECT_TYPE_INFORMATION OBJECT_TYPE_INFORMATION
#define OBJ_VALID_KERNEL_ATTRIBUTES
struct _OBJECT_HANDLE_ATTRIBUTE_INFORMATION OBJECT_HANDLE_ATTRIBUTE_INFORMATION
struct _OBJECT_HEADER_HANDLE_INFO OBJECT_HEADER_HANDLE_INFO
#define _Out_writes_bytes_to_(s, c)
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString)
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToAnsiString(PANSI_STRING DestinationString, PUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI VOID NTAPI RtlFreeAnsiString(PANSI_STRING AnsiString)
struct _OBJECT_NAME_INFORMATION OBJECT_NAME_INFORMATION
struct _OBJECT_TYPE * POBJECT_TYPE
_In_ ULONG _In_ ULONG _In_ ULONG Length
BOOLEAN NTAPI ExChangeHandle(IN PHANDLE_TABLE HandleTable, IN HANDLE Handle, IN PEX_CHANGE_HANDLE_CALLBACK ChangeRoutine, IN ULONG_PTR Context)
_Out_ PKAPC_STATE ApcState
const LUID SeTcbPrivilege
const LUID SeCreatePermanentPrivilege
NTSTATUS NTAPI SeComputeQuotaInformationSize(_In_ PSECURITY_DESCRIPTOR SecurityDescriptor, _Out_ PULONG QuotaInfoSize)
HANDLE NTAPI PsGetCurrentProcessId(VOID)
ULONG NTAPI PsGetCurrentProcessSessionId(VOID)
BOOLEAN NTAPI SeSinglePrivilegeCheck(_In_ LUID PrivilegeValue, _In_ KPROCESSOR_MODE PreviousMode)
Checks if a single privilege is present in the context of the calling thread.
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 STATUS_INVALID_INFO_CLASS
POBJECT_DIRECTORY ObpTypeDirectoryObject
BOOLEAN NTAPI ObpSetHandleAttributes(IN OUT PHANDLE_TABLE_ENTRY HandleTableEntry, IN ULONG_PTR Context)
PHANDLE_TABLE ObpKernelHandleTable
#define OBP_SYSTEM_PROCESS_QUOTA
#define ObpIsKernelHandle(Handle, ProcessorMode)
PVOID NTAPI ObpLookupEntryDirectory(IN POBJECT_DIRECTORY Directory, IN PUNICODE_STRING Name, IN ULONG Attributes, IN UCHAR SearchShadow, IN POBP_LOOKUP_CONTEXT Context)
BOOLEAN NTAPI ObpInsertEntryDirectory(IN POBJECT_DIRECTORY Parent, IN POBP_LOOKUP_CONTEXT Context, IN POBJECT_HEADER ObjectHeader)
#define ObKernelHandleToHandle(Handle)
VOID NTAPI ObpDeleteNameCheck(IN PVOID Object)
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 ObpAcquireLookupContextLock(IN POBP_LOOKUP_CONTEXT Context, IN POBJECT_DIRECTORY Directory)
Locks an object directory lookup context for performing lookup operations (insertions/deletions) in a...
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 ObpLeaveObjectTypeMutex(IN POBJECT_TYPE ObjectType)
FORCEINLINE PVOID ObpAllocateObjectCreateInfoBuffer(IN PP_NPAGED_LOOKASIDE_NUMBER Type)
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 VOID ObpReleaseLookupContext(IN POBP_LOOKUP_CONTEXT Context)
Releases an initialized object directory lookup context. Unlocks it if necessary, and dereferences th...
#define OBP_NAME_LOOKASIDE_MAX_SIZE
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 VOID ObpEnterObjectTypeMutex(IN POBJECT_TYPE ObjectType)
FORCEINLINE VOID ObpFreeObjectCreateInformation(IN POBJECT_CREATE_INFORMATION ObjectCreateInfo)
volatile PVOID ObpReaperList
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)
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)
ULONG ObpObjectsWithPoolQuota
POBJECT_TYPE ObpTypeObjectType
NTSTATUS NTAPI NtMakePermanentObject(IN HANDLE ObjectHandle)
VOID NTAPI ObpDeleteObjectType(IN PVOID Object)
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)
VOID FASTCALL ObpSetPermanentObject(IN PVOID ObjectBody, IN BOOLEAN Permanent)
POBJECT_TYPE ObpObjectTypes[32]
NTSTATUS NTAPI ObQueryTypeInfo(_In_ POBJECT_TYPE ObjectType, _Out_writes_bytes_to_(Length, *ReturnLength) POBJECT_TYPE_INFORMATION ObjectTypeInfo, _In_ ULONG Length, _Out_ PULONG ReturnLength)
VOID NTAPI ObFreeObjectCreateInfoBuffer(IN POBJECT_CREATE_INFORMATION ObjectCreateInfo)
NTSTATUS NTAPI NtQueryObject(IN HANDLE ObjectHandle, IN OBJECT_INFORMATION_CLASS ObjectInformationClass, OUT PVOID ObjectInformation, IN ULONG Length, OUT PULONG ResultLength OPTIONAL)
KGUARDED_MUTEX ObpDeviceMapLock
VOID NTAPI ObDeleteCapturedInsertInfo(IN PVOID Object)
PWCHAR NTAPI ObpAllocateObjectNameBuffer(IN ULONG Length, IN BOOLEAN UseLookaside, IN OUT PUNICODE_STRING ObjectName)
NTSTATUS NTAPI ObCreateObjectType(IN PUNICODE_STRING TypeName, IN POBJECT_TYPE_INITIALIZER ObjectTypeInitializer, IN PVOID Reserved, OUT POBJECT_TYPE *ObjectType)
ULONG ObpObjectsWithCreatorInfo
NTSTATUS NTAPI ObpCaptureObjectName(IN OUT PUNICODE_STRING CapturedName, IN PUNICODE_STRING ObjectName, IN KPROCESSOR_MODE AccessMode, IN BOOLEAN UseLookaside)
GENERAL_LOOKASIDE ObpNameBufferLookasideList
WORK_QUEUE_ITEM ObpReaperWorkItem
VOID NTAPI ObpReapObject(IN PVOID Parameter)
VOID NTAPI ObpDeleteObject(IN PVOID Object, IN BOOLEAN CalledFromWorkerThread)
VOID NTAPI ObMakeTemporaryObject(IN PVOID ObjectBody)
GENERAL_LOOKASIDE ObpCreateInfoLookasideList
VOID NTAPI ObpFreeObjectNameBuffer(IN PUNICODE_STRING Name)
NTSTATUS NTAPI NtMakeTemporaryObject(IN HANDLE ObjectHandle)
ULONG ObpObjectsWithHandleDB
NTSTATUS NTAPI NtSetInformationObject(IN HANDLE ObjectHandle, IN OBJECT_INFORMATION_CLASS ObjectInformationClass, IN PVOID ObjectInformation, IN ULONG Length)
VOID FASTCALL ObpDeallocateObject(IN PVOID Object)
static ULONG ObpQueryNameInfoSize(_In_ POBJECT_HEADER ObjectHeader)
Queries the name info size of a given resource object. The function loops through all the parent dire...
NTSTATUS NTAPI ObQueryNameString(IN PVOID Object, OUT POBJECT_NAME_INFORMATION ObjectNameInfo, IN ULONG Length, OUT PULONG ReturnLength)
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)
VOID NTAPI KeStackAttachProcess(IN PKPROCESS Process, OUT PRKAPC_STATE ApcState)
VOID NTAPI KeUnstackDetachProcess(IN PRKAPC_STATE ApcState)
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 ...
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
#define _SEH2_YIELD(__stmt)
PEPROCESS PsInitialSystemProcess
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
#define ProbeForWriteUlong(Ptr)
#define ProbeForReadUnicodeString(Ptr)
PULONG MinorVersion OPTIONAL
base for all directory entries
POBJECT_HANDLE_COUNT_DATABASE HandleCountDatabase
OBJECT_HANDLE_COUNT_ENTRY SingleEntry
OB_SECURITY_METHOD SecurityProcedure
ULONG DefaultPagedPoolCharge
ULONG DefaultNonPagedPoolCharge
ULONG TotalNumberOfHandles
ULONG HighWaterNumberOfObjects
ULONG TotalNumberOfObjects
OBJECT_TYPE_INITIALIZER TypeInfo
ULONG HighWaterNumberOfHandles
#define FIELD_OFFSET(t, f)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define STATUS_ACCESS_DENIED
#define STATUS_INVALID_PARAMETER
#define STATUS_OBJECT_NAME_COLLISION
#define STATUS_INFO_LENGTH_MISMATCH
#define STATUS_OBJECT_NAME_INVALID
#define STATUS_INSUFFICIENT_RESOURCES
#define ALIGN_UP(size, type)
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_ PULONG ResultLength
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
_In_ WDFDMATRANSACTION _In_ size_t MaximumLength
_Reserved_ PVOID Reserved
_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
_In_ PVOID _Out_opt_ PULONG_PTR _Outptr_opt_ PCUNICODE_STRING * ObjectName
struct LOOKASIDE_ALIGN _GENERAL_LOOKASIDE GENERAL_LOOKASIDE
_Must_inspect_result_ _In_ _In_ ULONG ProbeMode
_In_ PEPROCESS _In_ KPROCESSOR_MODE AccessMode
#define ObDereferenceObject
#define ObReferenceObject
#define PsGetCurrentProcess
_Inout_opt_ PVOID Parameter
_In_ KPROCESSOR_MODE PreviousMode
#define DACL_SECURITY_INFORMATION
#define OWNER_SECURITY_INFORMATION
#define GROUP_SECURITY_INFORMATION
#define SACL_SECURITY_INFORMATION