X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=ntoskrnl%2Finclude%2Finternal%2Fob.h;h=e6f9c56292633199172860c22a9d927bb0c510a5;hp=dd1f375598b1a8b57da487cc951df498a12ef777;hb=2c909db295f72693e481c9c1ae01ad7695aecc3b;hpb=c70f992aa17e22fdd474580a1e10c253c258b88f diff --git a/ntoskrnl/include/internal/ob.h b/ntoskrnl/include/internal/ob.h index dd1f375598b..e6f9c562926 100644 --- a/ntoskrnl/include/internal/ob.h +++ b/ntoskrnl/include/internal/ob.h @@ -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) */ @@ -61,9 +61,11 @@ #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 @@ -266,16 +268,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 ); @@ -382,9 +384,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 +ObpCreateDeviceMap( + IN HANDLE DirectoryHandle +); + VOID NTAPI ObDereferenceDeviceMap( @@ -394,7 +411,7 @@ ObDereferenceDeviceMap( VOID FASTCALL ObfDereferenceDeviceMap( - IN PVOID DeviceMap + IN PDEVICE_MAP DeviceMap ); VOID @@ -584,8 +601,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;