From 095faa8449df3ebc91e73948d7c03c8c723aa133 Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Tue, 14 Jun 2005 20:41:49 +0000 Subject: [PATCH] - Remove KeAttachProcess and KeDetachProcess prototypes from winddk.h. - Remove non-public object manager stuff from W32API and ROS headers. svn path=/trunk/; revision=15916 --- reactos/hal/halx86/generic/adapter.c | 1 + reactos/hal/halx86/generic/irql.c | 1 + reactos/hal/halx86/generic/pci.c | 1 + reactos/hal/halx86/generic/spinlock.c | 1 + reactos/hal/halx86/generic/timer.c | 1 + reactos/hal/halx86/xbox/part_xbox.c | 1 + reactos/include/ddk/obfuncs.h | 152 ----------------------- reactos/ntoskrnl/include/internal/ob.h | 163 +++++++++++++++++++++++++ reactos/ntoskrnl/include/ntoskrnl.h | 2 +- reactos/ntoskrnl/rtl/i386/exception.c | 1 + reactos/subsys/win32k/misc/error.c | 6 +- reactos/subsys/win32k/ntuser/csr.c | 4 +- reactos/subsys/win32k/ntuser/desktop.c | 2 +- reactos/subsys/win32k/ntuser/menu.c | 2 +- reactos/subsys/win32k/objects/gdiobj.c | 2 +- reactos/w32api/include/ddk/winddk.h | 151 +---------------------- 16 files changed, 180 insertions(+), 311 deletions(-) diff --git a/reactos/hal/halx86/generic/adapter.c b/reactos/hal/halx86/generic/adapter.c index 193aab3fa03..a40d1e86ac5 100644 --- a/reactos/hal/halx86/generic/adapter.c +++ b/reactos/hal/halx86/generic/adapter.c @@ -15,6 +15,7 @@ #include #include +#include #include #define NDEBUG #include diff --git a/reactos/hal/halx86/generic/irql.c b/reactos/hal/halx86/generic/irql.c index bca26a93b1f..3d93bd5205a 100644 --- a/reactos/hal/halx86/generic/irql.c +++ b/reactos/hal/halx86/generic/irql.c @@ -10,6 +10,7 @@ /* INCLUDES *****************************************************************/ #include +#include #include #include #include diff --git a/reactos/hal/halx86/generic/pci.c b/reactos/hal/halx86/generic/pci.c index 162c40dbe59..bd5013791e3 100644 --- a/reactos/hal/halx86/generic/pci.c +++ b/reactos/hal/halx86/generic/pci.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #define NDEBUG diff --git a/reactos/hal/halx86/generic/spinlock.c b/reactos/hal/halx86/generic/spinlock.c index d2ea93bd917..e40f7e1cb17 100644 --- a/reactos/hal/halx86/generic/spinlock.c +++ b/reactos/hal/halx86/generic/spinlock.c @@ -18,6 +18,7 @@ /* INCLUDES ****************************************************************/ #include +#include #include #include diff --git a/reactos/hal/halx86/generic/timer.c b/reactos/hal/halx86/generic/timer.c index 4f41d35980e..8c86fe786ee 100644 --- a/reactos/hal/halx86/generic/timer.c +++ b/reactos/hal/halx86/generic/timer.c @@ -33,6 +33,7 @@ /* INCLUDES ***************************************************************/ #include +#include #include #include diff --git a/reactos/hal/halx86/xbox/part_xbox.c b/reactos/hal/halx86/xbox/part_xbox.c index 6222770b66d..5146aefb64d 100644 --- a/reactos/hal/halx86/xbox/part_xbox.c +++ b/reactos/hal/halx86/xbox/part_xbox.c @@ -14,6 +14,7 @@ #include #include #include "halxbox.h" +#include #include #define NDEBUG diff --git a/reactos/include/ddk/obfuncs.h b/reactos/include/ddk/obfuncs.h index 8edf62bcf6c..cfd9c88b63a 100644 --- a/reactos/include/ddk/obfuncs.h +++ b/reactos/include/ddk/obfuncs.h @@ -2,158 +2,6 @@ #define _INCLUDE_DDK_OBFUNCS_H /* OBJECT MANAGER ************************************************************/ -typedef enum _OB_OPEN_REASON -{ - ObCreateHandle, - ObOpenHandle, - ObDuplicateHandle, - ObInheritHandle, - ObMaxOpenReason -} OB_OPEN_REASON; - -/* TEMPORARY HACK */ -typedef NTSTATUS STDCALL_FUNC -(*OB_CREATE_METHOD)(PVOID ObjectBody, - PVOID Parent, - PWSTR RemainingPath, - struct _OBJECT_ATTRIBUTES* ObjectAttributes); - -/* Object Callbacks */ -typedef NTSTATUS STDCALL_FUNC -(*OB_OPEN_METHOD)(OB_OPEN_REASON Reason, - PVOID ObjectBody, - PEPROCESS Process, - ULONG HandleCount, - ACCESS_MASK GrantedAccess); - -typedef NTSTATUS STDCALL_FUNC -(*OB_PARSE_METHOD)(PVOID Object, - PVOID *NextObject, - PUNICODE_STRING FullPath, - PWSTR *Path, - ULONG Attributes); - -typedef VOID STDCALL_FUNC -(*OB_DELETE_METHOD)(PVOID DeletedObject); - -typedef VOID STDCALL_FUNC -(*OB_CLOSE_METHOD)(PVOID ClosedObject, ULONG HandleCount); - -typedef VOID STDCALL_FUNC -(*OB_DUMP_METHOD)(VOID); - -typedef NTSTATUS STDCALL_FUNC -(*OB_OKAYTOCLOSE_METHOD)(VOID); - -typedef NTSTATUS STDCALL_FUNC -(*OB_QUERYNAME_METHOD)(PVOID ObjectBody, - POBJECT_NAME_INFORMATION ObjectNameInfo, - ULONG Length, - PULONG ReturnLength); - -typedef PVOID STDCALL_FUNC -(*OB_FIND_METHOD)(PVOID WinStaObject, - PWSTR Name, - ULONG Attributes); - -typedef NTSTATUS STDCALL_FUNC -(*OB_SECURITY_METHOD)(PVOID ObjectBody, - SECURITY_OPERATION_CODE OperationCode, - SECURITY_INFORMATION SecurityInformation, - PSECURITY_DESCRIPTOR SecurityDescriptor, - PULONG BufferLength); - -typedef struct _OBJECT_HANDLE_COUNT_ENTRY -{ - struct _EPROCESS *Process; - ULONG HandleCount; -} OBJECT_HANDLE_COUNT_ENTRY, *POBJECT_HANDLE_COUNT_ENTRY; - -typedef struct _OBJECT_HANDLE_COUNT_DATABASE -{ - ULONG CountEntries; - POBJECT_HANDLE_COUNT_ENTRY HandleCountEntries[1]; -} OBJECT_HANDLE_COUNT_DATABASE, *POBJECT_HANDLE_COUNT_DATABASE; - -typedef struct _OBJECT_HEADER_HANDLE_INFO -{ - union { - POBJECT_HANDLE_COUNT_DATABASE HandleCountDatabase; - OBJECT_HANDLE_COUNT_ENTRY SingleEntry; - }; -} OBJECT_HEADER_HANDLE_INFO, *POBJECT_HEADER_HANDLE_INFO; - -typedef struct _OBJECT_HEADER_CREATOR_INFO -{ - LIST_ENTRY TypeList; - PVOID CreatorUniqueProcess; - USHORT CreatorBackTraceIndex; - USHORT Reserved; -} OBJECT_HEADER_CREATOR_INFO, *POBJECT_HEADER_CREATOR_INFO; - -typedef struct _OBJECT_HEADER_NAME_INFO -{ - struct _DIRECTORY_OBJECT *Directory; - UNICODE_STRING Name; - ULONG QueryReferences; - ULONG Reserved2; - ULONG DbgReferenceCount; -} OBJECT_HEADER_NAME_INFO, *POBJECT_HEADER_NAME_INFO; - -typedef struct _OBJECT_CREATE_INFORMATION -{ - ULONG Attributes; - HANDLE RootDirectory; - PVOID ParseContext; - KPROCESSOR_MODE ProbeMode; - ULONG PagedPoolCharge; - ULONG NonPagedPoolCharge; - ULONG SecurityDescriptorCharge; - PSECURITY_DESCRIPTOR SecurityDescriptor; - PSECURITY_QUALITY_OF_SERVICE SecurityQos; - SECURITY_QUALITY_OF_SERVICE SecurityQualityOfService; -} OBJECT_CREATE_INFORMATION, *POBJECT_CREATE_INFORMATION; - -typedef struct _OBJECT_TYPE_INITIALIZER -{ - WORD Length; - UCHAR UseDefaultObject; - UCHAR CaseInsensitive; - ULONG InvalidAttributes; - GENERIC_MAPPING GenericMapping; - ULONG ValidAccessMask; - UCHAR SecurityRequired; - UCHAR MaintainHandleCount; - UCHAR MaintainTypeList; - POOL_TYPE PoolType; - ULONG DefaultPagedPoolCharge; - ULONG DefaultNonPagedPoolCharge; - OB_DUMP_METHOD DumpProcedure; - OB_OPEN_METHOD OpenProcedure; - OB_CLOSE_METHOD CloseProcedure; - OB_DELETE_METHOD DeleteProcedure; - OB_PARSE_METHOD ParseProcedure; - OB_SECURITY_METHOD SecurityProcedure; - OB_QUERYNAME_METHOD QueryNameProcedure; - OB_OKAYTOCLOSE_METHOD OkayToCloseProcedure; -} OBJECT_TYPE_INITIALIZER, *POBJECT_TYPE_INITIALIZER; - -typedef struct _OBJECT_TYPE -{ - ERESOURCE Mutex; /* Used to lock the Object Type */ - LIST_ENTRY TypeList; /* Links all the Types Together for Debugging */ - UNICODE_STRING Name; /* Name of the Type */ - PVOID DefaultObject; /* What Object to use during a Wait (ie, FileObjects wait on FileObject->Event) */ - ULONG Index; /* Index of this Type in the Object Directory */ - ULONG TotalNumberOfObjects; /* Total number of objects of this type */ - ULONG TotalNumberOfHandles; /* Total number of handles of this type */ - ULONG HighWaterNumberOfObjects; /* Peak number of objects of this type */ - ULONG HighWaterNumberOfHandles; /* Peak number of handles of this type */ - OBJECT_TYPE_INITIALIZER TypeInfo; /* Information captured during type creation */ - ULONG Key; /* Key to use when allocating objects of this type */ - ERESOURCE ObjectLocks[4]; /* Locks for locking the Objects */ -} OBJECT_TYPE; - NTSTATUS STDCALL ObAssignSecurity(IN PACCESS_STATE AccessState, IN PSECURITY_DESCRIPTOR SecurityDescriptor, diff --git a/reactos/ntoskrnl/include/internal/ob.h b/reactos/ntoskrnl/include/internal/ob.h index 55b70182aa1..2e4f8ac1c0a 100644 --- a/reactos/ntoskrnl/include/internal/ob.h +++ b/reactos/ntoskrnl/include/internal/ob.h @@ -16,6 +16,169 @@ struct _EPROCESS; +typedef enum _OB_OPEN_REASON +{ + ObCreateHandle, + ObOpenHandle, + ObDuplicateHandle, + ObInheritHandle, + ObMaxOpenReason +} OB_OPEN_REASON; + +/* TEMPORARY HACK */ +typedef NTSTATUS +(STDCALL *OB_CREATE_METHOD)( + PVOID ObjectBody, + PVOID Parent, + PWSTR RemainingPath, + struct _OBJECT_ATTRIBUTES* ObjectAttributes); + +/* Object Callbacks */ +typedef NTSTATUS +(STDCALL *OB_OPEN_METHOD)( + OB_OPEN_REASON Reason, + PVOID ObjectBody, + PEPROCESS Process, + ULONG HandleCount, + ACCESS_MASK GrantedAccess); + +typedef NTSTATUS +(STDCALL *OB_PARSE_METHOD)( + PVOID Object, + PVOID *NextObject, + PUNICODE_STRING FullPath, + PWSTR *Path, + ULONG Attributes); + +typedef VOID +(STDCALL *OB_DELETE_METHOD)( + PVOID DeletedObject); + +typedef VOID +(STDCALL *OB_CLOSE_METHOD)( + PVOID ClosedObject, + ULONG HandleCount); + +typedef VOID +(STDCALL *OB_DUMP_METHOD)( + VOID); + +typedef NTSTATUS +(STDCALL *OB_OKAYTOCLOSE_METHOD)( + VOID); + +typedef NTSTATUS +(STDCALL *OB_QUERYNAME_METHOD)( + PVOID ObjectBody, + POBJECT_NAME_INFORMATION ObjectNameInfo, + ULONG Length, + PULONG ReturnLength); + +typedef PVOID +(STDCALL *OB_FIND_METHOD)( + PVOID WinStaObject, + PWSTR Name, + ULONG Attributes); + +typedef NTSTATUS +(STDCALL *OB_SECURITY_METHOD)( + PVOID ObjectBody, + SECURITY_OPERATION_CODE OperationCode, + SECURITY_INFORMATION SecurityInformation, + PSECURITY_DESCRIPTOR SecurityDescriptor, + PULONG BufferLength); + +typedef struct _OBJECT_HEADER_NAME_INFO +{ + struct _DIRECTORY_OBJECT *Directory; + UNICODE_STRING Name; + ULONG QueryReferences; + ULONG Reserved2; + ULONG DbgReferenceCount; +} OBJECT_HEADER_NAME_INFO, *POBJECT_HEADER_NAME_INFO; + +typedef struct _OBJECT_CREATE_INFORMATION +{ + ULONG Attributes; + HANDLE RootDirectory; + PVOID ParseContext; + KPROCESSOR_MODE ProbeMode; + ULONG PagedPoolCharge; + ULONG NonPagedPoolCharge; + ULONG SecurityDescriptorCharge; + PSECURITY_DESCRIPTOR SecurityDescriptor; + PSECURITY_QUALITY_OF_SERVICE SecurityQos; + SECURITY_QUALITY_OF_SERVICE SecurityQualityOfService; +} OBJECT_CREATE_INFORMATION, *POBJECT_CREATE_INFORMATION; + +typedef struct _OBJECT_TYPE_INITIALIZER +{ + WORD Length; + UCHAR UseDefaultObject; + UCHAR CaseInsensitive; + ULONG InvalidAttributes; + GENERIC_MAPPING GenericMapping; + ULONG ValidAccessMask; + UCHAR SecurityRequired; + UCHAR MaintainHandleCount; + UCHAR MaintainTypeList; + POOL_TYPE PoolType; + ULONG DefaultPagedPoolCharge; + ULONG DefaultNonPagedPoolCharge; + OB_DUMP_METHOD DumpProcedure; + OB_OPEN_METHOD OpenProcedure; + OB_CLOSE_METHOD CloseProcedure; + OB_DELETE_METHOD DeleteProcedure; + OB_PARSE_METHOD ParseProcedure; + OB_SECURITY_METHOD SecurityProcedure; + OB_QUERYNAME_METHOD QueryNameProcedure; + OB_OKAYTOCLOSE_METHOD OkayToCloseProcedure; +} OBJECT_TYPE_INITIALIZER, *POBJECT_TYPE_INITIALIZER; + +typedef struct _OBJECT_TYPE +{ + ERESOURCE Mutex; /* Used to lock the Object Type */ + LIST_ENTRY TypeList; /* Links all the Types Together for Debugging */ + UNICODE_STRING Name; /* Name of the Type */ + PVOID DefaultObject; /* What Object to use during a Wait (ie, FileObjects wait on FileObject->Event) */ + ULONG Index; /* Index of this Type in the Object Directory */ + ULONG TotalNumberOfObjects; /* Total number of objects of this type */ + ULONG TotalNumberOfHandles; /* Total number of handles of this type */ + ULONG HighWaterNumberOfObjects; /* Peak number of objects of this type */ + ULONG HighWaterNumberOfHandles; /* Peak number of handles of this type */ + OBJECT_TYPE_INITIALIZER TypeInfo; /* Information captured during type creation */ + ULONG Key; /* Key to use when allocating objects of this type */ + ERESOURCE ObjectLocks[4]; /* Locks for locking the Objects */ +} OBJECT_TYPE; + +typedef struct _OBJECT_HANDLE_COUNT_ENTRY +{ + struct _EPROCESS *Process; + ULONG HandleCount; +} OBJECT_HANDLE_COUNT_ENTRY, *POBJECT_HANDLE_COUNT_ENTRY; + +typedef struct _OBJECT_HANDLE_COUNT_DATABASE +{ + ULONG CountEntries; + POBJECT_HANDLE_COUNT_ENTRY HandleCountEntries[1]; +} OBJECT_HANDLE_COUNT_DATABASE, *POBJECT_HANDLE_COUNT_DATABASE; + +typedef struct _OBJECT_HEADER_HANDLE_INFO +{ + union { + POBJECT_HANDLE_COUNT_DATABASE HandleCountDatabase; + OBJECT_HANDLE_COUNT_ENTRY SingleEntry; + }; +} OBJECT_HEADER_HANDLE_INFO, *POBJECT_HEADER_HANDLE_INFO; + +typedef struct _OBJECT_HEADER_CREATOR_INFO +{ + LIST_ENTRY TypeList; + PVOID CreatorUniqueProcess; + USHORT CreatorBackTraceIndex; + USHORT Reserved; +} OBJECT_HEADER_CREATOR_INFO, *POBJECT_HEADER_CREATOR_INFO; + typedef PVOID POBJECT; typedef struct _QUAD diff --git a/reactos/ntoskrnl/include/ntoskrnl.h b/reactos/ntoskrnl/include/ntoskrnl.h index 1cd0a0f70b7..bb130fcc0fd 100755 --- a/reactos/ntoskrnl/include/ntoskrnl.h +++ b/reactos/ntoskrnl/include/ntoskrnl.h @@ -40,6 +40,7 @@ #include #include #include +#include #include #include #include @@ -50,7 +51,6 @@ #include #include #include -#include #include "internal/xhal.h" #include #include diff --git a/reactos/ntoskrnl/rtl/i386/exception.c b/reactos/ntoskrnl/rtl/i386/exception.c index f6fdd18ac4b..5012e872016 100755 --- a/reactos/ntoskrnl/rtl/i386/exception.c +++ b/reactos/ntoskrnl/rtl/i386/exception.c @@ -12,6 +12,7 @@ #include #include +#include #include #define NDEBUG diff --git a/reactos/subsys/win32k/misc/error.c b/reactos/subsys/win32k/misc/error.c index 7e632614fcd..7fb12bf5911 100644 --- a/reactos/subsys/win32k/misc/error.c +++ b/reactos/subsys/win32k/misc/error.c @@ -26,11 +26,7 @@ * REVISION HISTORY: * 06-06-2001 CSH Created */ -#include -#include -#include -#include - +#include VOID FASTCALL SetLastNtError(NTSTATUS Status) diff --git a/reactos/subsys/win32k/ntuser/csr.c b/reactos/subsys/win32k/ntuser/csr.c index e2687c19045..ac11a73d9e6 100644 --- a/reactos/subsys/win32k/ntuser/csr.c +++ b/reactos/subsys/win32k/ntuser/csr.c @@ -58,7 +58,7 @@ CsrNotify(PCSRSS_API_REQUEST Request, PCSRSS_API_REPLY Reply) OldProcess = PsGetCurrentProcess(); if (CsrProcess != OldProcess) { - KeAttachProcess(CsrProcess); + KeAttachProcess(EPROCESS_TO_KPROCESS(CsrProcess)); } Status = ZwRequestWaitReplyPort(WindowsApiPort, &Request->Header, @@ -132,7 +132,7 @@ CsrCloseHandle(HANDLE Handle) OldProcess = PsGetCurrentProcess(); if (CsrProcess != OldProcess) { - KeAttachProcess(CsrProcess); + KeAttachProcess(EPROCESS_TO_KPROCESS(CsrProcess)); } Status = ZwClose(Handle); diff --git a/reactos/subsys/win32k/ntuser/desktop.c b/reactos/subsys/win32k/ntuser/desktop.c index c3bec8c5b8e..33b99cc243c 100644 --- a/reactos/subsys/win32k/ntuser/desktop.c +++ b/reactos/subsys/win32k/ntuser/desktop.c @@ -1361,7 +1361,7 @@ NtUserGetThreadDesktop(DWORD dwThreadId, DWORD Unknown1) may be a bit safer (e.g. when the desktop is being destroyed */ /* switch into the context of the thread we're trying to get the desktop from, so we can use the handle */ - KeAttachProcess(Thread->ThreadsProcess); + KeAttachProcess(EPROCESS_TO_KPROCESS(Thread->ThreadsProcess)); Status = ObReferenceObjectByHandle(hThreadDesktop, GENERIC_ALL, ExDesktopObjectType, diff --git a/reactos/subsys/win32k/ntuser/menu.c b/reactos/subsys/win32k/ntuser/menu.c index c08ac858452..f3d5d191468 100644 --- a/reactos/subsys/win32k/ntuser/menu.c +++ b/reactos/subsys/win32k/ntuser/menu.c @@ -1250,7 +1250,7 @@ IntCleanupMenus(struct _EPROCESS *Process, PW32PROCESS Win32Process) CurrentProcess = PsGetCurrentProcess(); if (CurrentProcess != Process) { - KeAttachProcess(Process); + KeAttachProcess(EPROCESS_TO_KPROCESS(Process)); } IntLockProcessMenus(Win32Process); diff --git a/reactos/subsys/win32k/objects/gdiobj.c b/reactos/subsys/win32k/objects/gdiobj.c index deea3b0a830..4f280bac1f4 100644 --- a/reactos/subsys/win32k/objects/gdiobj.c +++ b/reactos/subsys/win32k/objects/gdiobj.c @@ -656,7 +656,7 @@ GDI_CleanupForProcess (struct _EPROCESS *Process) CurrentProcess = PsGetCurrentProcess(); if (CurrentProcess != Process) { - KeAttachProcess(Process); + KeAttachProcess(EPROCESS_TO_KPROCESS(Process)); } W32Process = (PW32PROCESS)Process->Win32Process; ASSERT(W32Process); diff --git a/reactos/w32api/include/ddk/winddk.h b/reactos/w32api/include/ddk/winddk.h index c0ee8a6ecb8..eff7c342b4b 100644 --- a/reactos/w32api/include/ddk/winddk.h +++ b/reactos/w32api/include/ddk/winddk.h @@ -7121,6 +7121,8 @@ IoReuseIrp( _InvokeOnCancel) \ { \ PIO_STACK_LOCATION _IrpSp; \ + ASSERT(_InvokeOnSuccess || _InvokeOnError || _InvokeOnCancel ? \ + _CompletionRoutine != NULL : TRUE); \ _IrpSp = IoGetNextIrpStackLocation(_Irp); \ _IrpSp->CompletionRoutine = (PIO_COMPLETION_ROUTINE)(_CompletionRoutine); \ _IrpSp->Context = (_Context); \ @@ -7502,12 +7504,6 @@ DDKAPI KeAreApcsDisabled( VOID); -NTOSAPI -VOID -DDKAPI -KeAttachProcess( - IN PKPROCESS Process); - NTOSAPI VOID DDKAPI @@ -7550,12 +7546,6 @@ DDKAPI KeDeregisterBugCheckCallback( IN PKBUGCHECK_CALLBACK_RECORD CallbackRecord); -NTOSAPI -VOID -DDKAPI -KeDetachProcess( - VOID); - NTOSAPI VOID DDKAPI @@ -8459,142 +8449,7 @@ MmUnmapVideoDisplay( -/** Object manager **/ - -typedef enum _OB_OPEN_REASON -{ - ObCreateHandle, - ObOpenHandle, - ObDuplicateHandle, - ObInheritHandle, - ObMaxOpenReason -} OB_OPEN_REASON; - -/* TEMPORARY HACK */ -typedef NTSTATUS -(DDKAPI *OB_CREATE_METHOD)( - PVOID ObjectBody, - PVOID Parent, - PWSTR RemainingPath, - struct _OBJECT_ATTRIBUTES* ObjectAttributes); - -/* Object Callbacks */ -typedef NTSTATUS -(DDKAPI *OB_OPEN_METHOD)( - OB_OPEN_REASON Reason, - PVOID ObjectBody, - PEPROCESS Process, - ULONG HandleCount, - ACCESS_MASK GrantedAccess); - -typedef NTSTATUS -(DDKAPI *OB_PARSE_METHOD)( - PVOID Object, - PVOID *NextObject, - PUNICODE_STRING FullPath, - PWSTR *Path, - ULONG Attributes); - -typedef VOID -(DDKAPI *OB_DELETE_METHOD)( - PVOID DeletedObject); - -typedef VOID -(DDKAPI *OB_CLOSE_METHOD)( - PVOID ClosedObject, - ULONG HandleCount); - -typedef VOID -(DDKAPI *OB_DUMP_METHOD)( - VOID); - -typedef NTSTATUS -(DDKAPI *OB_OKAYTOCLOSE_METHOD)( - VOID); - -typedef NTSTATUS -(DDKAPI *OB_QUERYNAME_METHOD)( - PVOID ObjectBody, - POBJECT_NAME_INFORMATION ObjectNameInfo, - ULONG Length, - PULONG ReturnLength); - -typedef PVOID -(DDKAPI *OB_FIND_METHOD)( - PVOID WinStaObject, - PWSTR Name, - ULONG Attributes); - -typedef NTSTATUS -(DDKAPI *OB_SECURITY_METHOD)( - PVOID ObjectBody, - SECURITY_OPERATION_CODE OperationCode, - SECURITY_INFORMATION SecurityInformation, - PSECURITY_DESCRIPTOR SecurityDescriptor, - PULONG BufferLength); - -typedef struct _OBJECT_HEADER_NAME_INFO -{ - struct _DIRECTORY_OBJECT *Directory; - UNICODE_STRING Name; - ULONG QueryReferences; - ULONG Reserved2; - ULONG DbgReferenceCount; -} OBJECT_HEADER_NAME_INFO, *POBJECT_HEADER_NAME_INFO; - -typedef struct _OBJECT_CREATE_INFORMATION -{ - ULONG Attributes; - HANDLE RootDirectory; - PVOID ParseContext; - KPROCESSOR_MODE ProbeMode; - ULONG PagedPoolCharge; - ULONG NonPagedPoolCharge; - ULONG SecurityDescriptorCharge; - PSECURITY_DESCRIPTOR SecurityDescriptor; - PSECURITY_QUALITY_OF_SERVICE SecurityQos; - SECURITY_QUALITY_OF_SERVICE SecurityQualityOfService; -} OBJECT_CREATE_INFORMATION, *POBJECT_CREATE_INFORMATION; - -typedef struct _OBJECT_TYPE_INITIALIZER -{ - WORD Length; - UCHAR UseDefaultObject; - UCHAR CaseInsensitive; - ULONG InvalidAttributes; - GENERIC_MAPPING GenericMapping; - ULONG ValidAccessMask; - UCHAR SecurityRequired; - UCHAR MaintainHandleCount; - UCHAR MaintainTypeList; - POOL_TYPE PoolType; - ULONG DefaultPagedPoolCharge; - ULONG DefaultNonPagedPoolCharge; - OB_DUMP_METHOD DumpProcedure; - OB_OPEN_METHOD OpenProcedure; - OB_CLOSE_METHOD CloseProcedure; - OB_DELETE_METHOD DeleteProcedure; - OB_PARSE_METHOD ParseProcedure; - OB_SECURITY_METHOD SecurityProcedure; - OB_QUERYNAME_METHOD QueryNameProcedure; - OB_OKAYTOCLOSE_METHOD OkayToCloseProcedure; -} OBJECT_TYPE_INITIALIZER, *POBJECT_TYPE_INITIALIZER; - -typedef struct _OBJECT_TYPE -{ - ERESOURCE Mutex; /* Used to lock the Object Type */ - LIST_ENTRY TypeList; /* Links all the Types Together for Debugging */ - UNICODE_STRING Name; /* Name of the Type */ - PVOID DefaultObject; /* What Object to use during a Wait (ie, FileObjects wait on FileObject->Event) */ - ULONG Index; /* Index of this Type in the Object Directory */ - ULONG TotalNumberOfObjects; /* Total number of objects of this type */ - ULONG TotalNumberOfHandles; /* Total number of handles of this type */ - ULONG HighWaterNumberOfObjects; /* Peak number of objects of this type */ - ULONG HighWaterNumberOfHandles; /* Peak number of handles of this type */ - OBJECT_TYPE_INITIALIZER TypeInfo; /* Information captured during type creation */ - ULONG Key; /* Key to use when allocating objects of this type */ - ERESOURCE ObjectLocks[4]; /* Locks for locking the Objects */ -} OBJECT_TYPE; +/** Object manager routines **/ NTOSAPI NTSTATUS -- 2.17.1