52 AclSize =
sizeof(
ACL) +
114 AclSize =
sizeof(
ACL) +
332 &ObjectNameInfo->
Name,
357 if ((ObjectNameInfo) &&
402 PWSTR UnsecureBuffer;
420 if (UnsecureName.
Length == 0)
472 ULONG MaxReparse = 30;
477 "%s - Finding Object: %wZ. Expecting: %p\n",
596 else if (--MaxReparse)
685 if (DeviceMap !=
NULL)
757 while (Reparse && MaxReparse)
794 if (!ComponentName.
Length)
836 if (!ReferencedDirectory)
866 else if (!InsertObject)
973 if ((ParseRoutine) &&
986 if (ReferencedDirectory)
990 ReferencedDirectory =
NULL;
994 if (ReferencedParentDirectory)
998 ReferencedParentDirectory =
NULL;
1025 if (MaxReparse == 0)
1137 if (ReferencedParentDirectory)
1144 ReferencedParentDirectory = ReferencedDirectory;
1147 ReferencedDirectory =
NULL;
1175 if (ReferencedParentDirectory)
1198 "%s - Found Object: %p. Expected: %p\n",
1230 ObjectIsNamed = ((LocalInfo) && (LocalInfo->
Name.
Length > 0));
1252 if (!(LocalInfo) || !(LocalInfo->
Name.
Buffer))
1269 RtlInitEmptyUnicodeString(&ObjectNameInfo->Name,
NULL, 0);
1350 ObjectNameInfo->Name.Length = (
USHORT)NameSize;
1351 ObjectNameInfo->Name.MaximumLength = (
USHORT)(NameSize +
1402 ObjectNameInfo->Name.Length = (
USHORT)NameSize;
1403 ObjectNameInfo->Name.MaximumLength =
while(CdLookupNextInitialFileDirent(IrpContext, Fcb, FileContext))
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
UNICODE_STRING ObpDosDevicesShortName
IN CINT OUT PVOID IN ULONG OUT PULONG ReturnLength
BOOLEAN ObpCaseInsensitive
FORCEINLINE VOID ObpAcquireObjectLock(IN POBJECT_HEADER ObjectHeader)
#define STATUS_INSUFFICIENT_RESOURCES
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define STATUS_INFO_LENGTH_MISMATCH
_In_ BOOLEAN _In_opt_ PACL _In_opt_ BOOLEAN DaclDefaulted
NTSTATUS NTAPI NtCreateSymbolicLinkObject(OUT PHANDLE LinkHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN PUNICODE_STRING LinkTarget)
#define OBJ_CASE_INSENSITIVE
NTSTATUS NTAPI ObpGetDosDevicesProtection(OUT PSECURITY_DESCRIPTOR SecurityDescriptor)
ULONG ObpLUIDDeviceMapsEnabled
_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
NTSTATUS NTAPI ObpLookupObjectName(IN HANDLE RootHandle OPTIONAL, IN OUT PUNICODE_STRING ObjectName, IN ULONG Attributes, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, IN OUT PVOID ParseContext, IN PSECURITY_QUALITY_OF_SERVICE SecurityQos OPTIONAL, IN PVOID InsertObject OPTIONAL, IN OUT PACCESS_STATE AccessState, OUT POBP_LOOKUP_CONTEXT LookupContext, OUT PVOID *FoundObject)
#define BooleanFlagOn(F, SF)
#define DIRECTORY_CREATE_OBJECT
VOID FASTCALL ObfDereferenceDeviceMap(IN PDEVICE_MAP DeviceMap)
VOID NTAPI ObpDeleteNameCheck(IN PVOID Object)
FORCEINLINE VOID ObpReleaseObjectLock(IN POBJECT_HEADER ObjectHeader)
BOOLEAN NTAPI ObpIsUnsecureName(IN PUNICODE_STRING ObjectName, IN BOOLEAN CaseInSensitive)
NTSTATUS NTAPI ObSetDeviceMap(IN PEPROCESS Process, IN HANDLE DirectoryHandle)
NTSTATUS NTAPI ObQueryNameString(IN PVOID Object, OUT POBJECT_NAME_INFORMATION ObjectNameInfo, IN ULONG Length, OUT PULONG ReturnLength)
#define OBJECT_HEADER_TO_NAME_INFO(h)
BOOLEAN NTAPI SeSinglePrivilegeCheck(IN LUID PrivilegeValue, IN KPROCESSOR_MODE PreviousMode)
#define TOKEN_HAS_TRAVERSE_PRIVILEGE
BOOLEAN NTAPI ObpCheckTraverseAccess(IN PVOID Object, IN ACCESS_MASK TraverseAccess, IN PACCESS_STATE AccessState OPTIONAL, IN BOOLEAN LockHeld, IN KPROCESSOR_MODE AccessMode, OUT PNTSTATUS AccessStatus)
NTSYSAPI NTSTATUS NTAPI RtlCreateSecurityDescriptor(_Out_ PSECURITY_DESCRIPTOR SecurityDescriptor, _In_ ULONG Revision)
_In_ PVOID _Out_opt_ PULONG_PTR _Outptr_opt_ PCUNICODE_STRING * ObjectName
NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAce(PACL, DWORD, DWORD, PSID)
NTSYSAPI NTSTATUS WINAPI RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR, BOOLEAN, PACL, BOOLEAN)
#define SYMBOLIC_LINK_ALL_ACCESS
#define STATUS_INVALID_HANDLE
NTSYSAPI NTSTATUS NTAPI RtlGetDaclSecurityDescriptor(_In_ PSECURITY_DESCRIPTOR SecurityDescriptor, _Out_ PBOOLEAN DaclPresent, _Out_ PACL *Dacl, _Out_ PBOOLEAN DaclDefaulted)
#define OB_FLAG_PERMANENT
NTSYSAPI NTSTATUS NTAPI RtlCreateAcl(PACL Acl, ULONG AclSize, ULONG AclRevision)
#define OBJECT_TO_OBJECT_HEADER(o)
#define SECURITY_DESCRIPTOR_REVISION
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)
#define OBJ_NAME_PATH_SEPARATOR
_In_ const STRING _In_ BOOLEAN CaseInSensitive
#define STATUS_REPARSE_OBJECT
_In_ PEPROCESS _In_ KPROCESSOR_MODE AccessMode
#define EXCEPTION_EXECUTE_HANDLER
struct _OBJECT_NAME_INFORMATION OBJECT_NAME_INFORMATION
FORCEINLINE VOID ObpCalloutStart(IN PKIRQL CalloutIrql)
NTSTATUS NTAPI ObReferenceObjectByPointer(IN PVOID Object, IN ACCESS_MASK DesiredAccess, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode)
NTSYSAPI ULONG NTAPI RtlLengthSid(IN PSID Sid)
NTSTATUS(NTAPI * OB_PARSE_METHOD)(_In_ PVOID ParseObject, _In_ PVOID ObjectType, _Inout_ PACCESS_STATE AccessState, _In_ KPROCESSOR_MODE AccessMode, _In_ ULONG Attributes, _Inout_ PUNICODE_STRING CompleteName, _Inout_ PUNICODE_STRING RemainingName, _Inout_opt_ PVOID Context, _In_opt_ PSECURITY_QUALITY_OF_SERVICE SecurityQos, _Out_ PVOID *Object)
#define InterlockedExchangeAdd
BOOLEAN NTAPI ObpInsertEntryDirectory(IN POBJECT_DIRECTORY Parent, IN POBP_LOOKUP_CONTEXT Context, IN POBJECT_HEADER ObjectHeader)
#define DIRECTORY_TRAVERSE
#define CONTAINER_INHERIT_ACE
ULONG NTAPI PsGetCurrentProcessSessionId(VOID)
#define ObpDirectoryObjectType
#define STATUS_OBJECT_TYPE_MISMATCH
#define DIRECTORY_CREATE_SUBDIRECTORY
#define _SEH2_YIELD(STMT_)
#define NT_SUCCESS(StatCode)
FORCEINLINE POBJECT_HEADER_NAME_INFO ObpReferenceNameInfo(IN POBJECT_HEADER ObjectHeader)
#define ObDereferenceObject
FORCEINLINE VOID ObpAcquireDirectoryLockExclusive(IN POBJECT_DIRECTORY Directory, IN POBP_LOOKUP_CONTEXT Context)
OB_PARSE_METHOD ParseProcedure
#define STATUS_OBJECT_PATH_NOT_FOUND
#define STATUS_ACCESS_DENIED
ALIGNEDNAME ObpDosDevicesShortNameRoot
POBJECT_TYPE MmSectionObjectType
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
static const LUID SeCreateGlobalPrivilege
_In_opt_ PVOID _In_opt_ PUNICODE_STRING _In_ PSECURITY_DESCRIPTOR _In_ PACCESS_STATE AccessState
#define ExAllocatePoolWithTag(hernya, size, tag)
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL Dacl
BOOLEAN NTAPI ObCheckCreateObjectAccess(IN PVOID Object, IN ACCESS_MASK CreateAccess, IN PACCESS_STATE AccessState, IN PUNICODE_STRING ComponentName, IN BOOLEAN LockHeld, IN KPROCESSOR_MODE AccessMode, OUT PNTSTATUS AccessStatus)
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define InterlockedExchangeAddSizeT(a, b)
FORCEINLINE VOID ObpCalloutEnd(IN KIRQL CalloutIrql, IN PCHAR Procedure, IN POBJECT_TYPE ObjectType, IN PVOID Object)
NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAceEx(PACL, DWORD, DWORD, DWORD, PSID)
#define OBJ_FORCE_ACCESS_CHECK
PVOID NTAPI ObpLookupEntryDirectory(IN POBJECT_DIRECTORY Directory, IN PUNICODE_STRING Name, IN ULONG Attributes, IN UCHAR SearchShadow, IN POBP_LOOKUP_CONTEXT Context)
ULONG ObpUnsecureGlobalNamesLength
POBJECT_DIRECTORY ObpRootDirectoryObject
POBJECT_DIRECTORY ObpTypeDirectoryObject
OBJECT_TYPE_INITIALIZER TypeInfo
POBJECT_TYPE IoFileObjectType
#define OB_NAMESPACE_DEBUG
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
FORCEINLINE VOID ObpReleaseLookupContext(IN POBP_LOOKUP_CONTEXT Context)
VOID NTAPI ObpDeleteSymbolicLinkName(IN POBJECT_SYMBOLIC_LINK SymbolicLink)
NTSTATUS NTAPI NtCreateDirectoryObject(OUT PHANDLE DirectoryHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
#define ObpSymbolicLinkObjectType
FORCEINLINE VOID ObpInitializeLookupContext(IN POBP_LOOKUP_CONTEXT Context)
#define STATUS_OBJECT_NAME_NOT_FOUND
#define DIRECTORY_ALL_ACCESS
NTSTATUS NTAPI ObpParseSymbolicLink(IN PVOID ParsedObject, IN PVOID ObjectType, IN OUT PACCESS_STATE AccessState, IN KPROCESSOR_MODE AccessMode, IN ULONG Attributes, IN OUT PUNICODE_STRING FullPath, IN OUT PUNICODE_STRING RemainingName, IN OUT PVOID Context OPTIONAL, IN PSECURITY_QUALITY_OF_SERVICE SecurityQos OPTIONAL, OUT PVOID *NextObject)
#define STATUS_OBJECT_NAME_INVALID
#define OBTRACE(x, fmt,...)
NTSYSAPI BOOLEAN NTAPI RtlPrefixUnicodeString(IN PUNICODE_STRING String1, IN PUNICODE_STRING String2, IN BOOLEAN CaseInSensitive)
_In_ PUNICODE_STRING NewName
struct tagContext Context
#define ObReferenceObject
__GNU_EXTENSION typedef unsigned __int64 * PULONGLONG
ALIGNEDNAME ObpDosDevicesShortNamePrefix
OB_QUERYNAME_METHOD QueryNameProcedure
base for all directory entries
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define InitializeObjectAttributes(p, n, a, r, s)
ULONG ObpLUIDDeviceMapsDisabled
POBJECT_DIRECTORY DosDevicesDirectory
#define RtlCopyMemory(Destination, Source, Length)
#define _SEH2_EXCEPT(...)
PDEVICE_MAP NTAPI ObpReferenceDeviceMap(VOID)
#define ExFreePoolWithTag(_P, _T)
#define _SEH2_GetExceptionCode()
VOID NTAPI ObpFreeDosDevicesProtection(OUT PSECURITY_DESCRIPTOR SecurityDescriptor)
WCHAR ObpUnsecureGlobalNamesBuffer[128]
#define STATUS_OBJECT_PATH_SYNTAX_BAD
_In_ BOOLEAN _In_ USHORT Directory
NTSTATUS NTAPI ObpCreateDosDevicesDirectory(VOID)
FORCEINLINE VOID ObpDereferenceNameInfo(IN POBJECT_HEADER_NAME_INFO HeaderNameInfo)
#define OB_FLAG_KERNEL_EXCLUSIVE
#define OBJECT_INHERIT_ACE
BOOLEAN NTAPI ObpDeleteEntryDirectory(IN POBP_LOOKUP_CONTEXT Context)
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
_Inout_ PFCB _Inout_ PUNICODE_STRING RemainingName
PULONG MinorVersion OPTIONAL