/*
* PROJECT: ReactOS Kernel
* LICENSE: GPL - See COPYING in the top level directory
-* FILE: ntoskrnl/include/ob.h
+* FILE: ntoskrnl/include/internal/ob.h
* PURPOSE: Internal header for the Object Manager
* PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org)
*/
#else
#define KERNEL_HANDLE_FLAG 0x80000000
#endif
-#define ObIsKernelHandle(Handle, ProcessorMode) \
- (((ULONG_PTR)(Handle) & KERNEL_HANDLE_FLAG) && \
- ((ProcessorMode) == KernelMode))
+#define ObpIsKernelHandle(Handle, ProcessorMode) \
+ ((((ULONG_PTR)(Handle) & KERNEL_HANDLE_FLAG) == KERNEL_HANDLE_FLAG) && \
+ ((ProcessorMode) == KernelMode) && \
+ ((Handle) != NtCurrentProcess()) && \
+ ((Handle) != NtCurrentThread()))
//
// Converts to and from a Kernel Handle to a normal handle
//
// Startup and Shutdown Functions
//
+INIT_FUNCTION
BOOLEAN
NTAPI
ObInitSystem(
NTSTATUS
NTAPI
ObpLookupObjectName(
- IN HANDLE RootHandle,
- IN PUNICODE_STRING ObjectName,
+ 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,
- IN PVOID InsertObject,
- IN PACCESS_STATE AccessState,
- IN POBP_LOOKUP_CONTEXT LookupContext,
+ IN PSECURITY_QUALITY_OF_SERVICE SecurityQos OPTIONAL,
+ IN PVOID InsertObject OPTIONAL,
+ IN OUT PACCESS_STATE AccessState,
+ OUT POBP_LOOKUP_CONTEXT LookupContext,
OUT PVOID *FoundObject
);
IN ULONG_PTR Context
);
-VOID
+NTSTATUS
NTAPI
ObQueryDeviceMapInformation(
IN PEPROCESS Process,
- OUT PPROCESS_DEVICEMAP_INFORMATION DeviceMapInfo
+ OUT PPROCESS_DEVICEMAP_INFORMATION DeviceMapInfo,
+ IN ULONG Flags
);
//
IN PVOID Object
);
+NTSTATUS
+NTAPI
+ObReferenceFileObjectForWrite(
+ IN HANDLE Handle,
+ IN KPROCESSOR_MODE AccessMode,
+ OUT PFILE_OBJECT *FileObject,
+ OUT POBJECT_HANDLE_INFORMATION HandleInformation
+);
+
//
// DOS Devices Functions
//
+NTSTATUS
+NTAPI
+ObSetDeviceMap(
+ IN PEPROCESS Process,
+ IN HANDLE DirectoryHandle
+);
+
+NTSTATUS
+NTAPI
+ObSetDirectoryDeviceMap(OUT PDEVICE_MAP * DeviceMap,
+ IN HANDLE DirectoryHandle
+);
+
VOID
NTAPI
ObDereferenceDeviceMap(
VOID
FASTCALL
ObfDereferenceDeviceMap(
- IN PVOID DeviceMap
+ IN PDEVICE_MAP DeviceMap
);
VOID
IN PEPROCESS Process
);
+INIT_FUNCTION
NTSTATUS
NTAPI
ObpCreateDosDevicesDirectory(
VOID
);
+ULONG
+NTAPI
+ObIsLUIDDeviceMapsEnabled(
+ VOID
+);
+
//
// Security descriptor cache functions
//
+INIT_FUNCTION
NTSTATUS
NTAPI
ObpInitSdCache(
extern KEVENT ObpDefaultObject;
extern KGUARDED_MUTEX ObpDeviceMapLock;
extern POBJECT_TYPE ObpTypeObjectType;
-extern POBJECT_TYPE ObSymbolicLinkType;
-extern POBJECT_TYPE ObpTypeObjectType;
+extern POBJECT_TYPE ObpDirectoryObjectType;
+extern POBJECT_TYPE ObpSymbolicLinkObjectType;
extern POBJECT_DIRECTORY ObpRootDirectoryObject;
extern POBJECT_DIRECTORY ObpTypeDirectoryObject;
extern PHANDLE_TABLE ObpKernelHandleTable;
extern ALIGNEDNAME ObpDosDevicesShortNamePrefix;
extern ALIGNEDNAME ObpDosDevicesShortNameRoot;
extern UNICODE_STRING ObpDosDevicesShortName;
+extern WCHAR ObpUnsecureGlobalNamesBuffer[128];
+extern ULONG ObpUnsecureGlobalNamesLength;
+extern ULONG ObpObjectSecurityMode;
+extern ULONG ObpProtectionMode;
+extern ULONG ObpLUIDDeviceMapsDisabled;
+extern ULONG ObpLUIDDeviceMapsEnabled;
//
// Inlined Functions