[NTOSKRNL] Modify ObpCreateDeviceMap so that it can handle any process
[reactos.git] / ntoskrnl / include / internal / ob.h
index 54c7d1d..b2d7037 100644 (file)
@@ -1,7 +1,7 @@
 /*
 * 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)
 */
@@ -159,6 +159,7 @@ typedef struct _OB_TEMP_BUFFER
 //
 // Startup and Shutdown Functions
 //
+INIT_FUNCTION
 BOOLEAN
 NTAPI
 ObInitSystem(
@@ -268,16 +269,16 @@ ObKillProcess(
 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
 );
 
@@ -384,9 +385,24 @@ ObpDeleteObjectType(
     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);
+
 VOID
 NTAPI
 ObDereferenceDeviceMap(
@@ -396,7 +412,7 @@ ObDereferenceDeviceMap(
 VOID
 FASTCALL
 ObfDereferenceDeviceMap(
-    IN PVOID DeviceMap
+    IN PDEVICE_MAP DeviceMap
 );
 
 VOID
@@ -406,6 +422,7 @@ ObInheritDeviceMap(
     IN PEPROCESS Process
 );
 
+INIT_FUNCTION
 NTSTATUS
 NTAPI
 ObpCreateDosDevicesDirectory(
@@ -415,6 +432,7 @@ ObpCreateDosDevicesDirectory(
 //
 // Security descriptor cache functions
 //
+INIT_FUNCTION
 NTSTATUS
 NTAPI
 ObpInitSdCache(
@@ -586,8 +604,8 @@ extern ULONG ObpTraceLevel;
 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;
@@ -598,6 +616,10 @@ extern BOOLEAN IoCountOperations;
 extern ALIGNEDNAME ObpDosDevicesShortNamePrefix;
 extern ALIGNEDNAME ObpDosDevicesShortNameRoot;
 extern UNICODE_STRING ObpDosDevicesShortName;
+extern WCHAR ObpUnsecureGlobalNamesBuffer[128];
+extern ULONG ObpUnsecureGlobalNamesLength;
+extern ULONG ObpObjectSecurityMode;
+extern ULONG ObpProtectionMode;
 
 //
 // Inlined Functions