From 6b86cb440697e80640df8ee7bfcf46296a4080b1 Mon Sep 17 00:00:00 2001 From: Alex Ionescu Date: Sun, 15 May 2005 23:24:11 +0000 Subject: [PATCH] Fix build, clean up headers, add public stuff to public headers svn path=/trunk/; revision=15326 --- reactos/include/ddk/obfuncs.h | 115 ++++++++++++++++++++++++ reactos/include/ddk/psfuncs.h | 3 +- reactos/include/ddk/pstypes.h | 74 ---------------- reactos/ntoskrnl/include/internal/ob.h | 40 --------- reactos/ntoskrnl/include/internal/ps.h | 9 ++ reactos/w32api/include/ddk/winddk.h | 117 ++++++++++++++++++++++++- 6 files changed, 242 insertions(+), 116 deletions(-) diff --git a/reactos/include/ddk/obfuncs.h b/reactos/include/ddk/obfuncs.h index cfd9c88b63a..f4e2afda280 100644 --- a/reactos/include/ddk/obfuncs.h +++ b/reactos/include/ddk/obfuncs.h @@ -2,6 +2,121 @@ #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_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/include/ddk/psfuncs.h b/reactos/include/ddk/psfuncs.h index 574af3ee203..4ddddb99370 100644 --- a/reactos/include/ddk/psfuncs.h +++ b/reactos/include/ddk/psfuncs.h @@ -356,11 +356,12 @@ STDCALL PsSetThreadWin32Thread( PVOID Win32Thread ); +struct _W32_OBJECT_CALLBACK; VOID STDCALL STDCALL PsEstablishWin32Callouts (PW32_PROCESS_CALLBACK W32ProcessCallback, PW32_THREAD_CALLBACK W32ThreadCallback, - PW32_OBJECT_CALLBACK W32ObjectCallback, + struct _W32_OBJECT_CALLBACK *W32ObjectCallback, PVOID Param4, ULONG W32ThreadSize, ULONG W32ProcessSize); diff --git a/reactos/include/ddk/pstypes.h b/reactos/include/ddk/pstypes.h index b453b9f8835..a54e8496804 100644 --- a/reactos/include/ddk/pstypes.h +++ b/reactos/include/ddk/pstypes.h @@ -66,81 +66,7 @@ typedef NTSTATUS STDCALL_FUNC typedef NTSTATUS STDCALL_FUNC (*PW32_THREAD_CALLBACK)(struct _ETHREAD *Thread, BOOLEAN Create); - -typedef enum _OB_OPEN_REASON -{ - ObCreateHandle, - ObOpenHandle, - ObDuplicateHandle, - ObInheritHandle, - ObMaxOpenReason -} OB_OPEN_REASON; - -/* - * Callbacks used for Win32 objects... this define won't be needed after the Object Manager - * rewrite -- Alex - */ - -/* TEMPORARY HACK */ -typedef NTSTATUS STDCALL_FUNC -(*OB_CREATE_METHOD)(PVOID ObjectBody, - PVOID Parent, - PWSTR RemainingPath, - struct _OBJECT_ATTRIBUTES* ObjectAttributes); - -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 _W32_OBJECT_CALLBACK { - OB_OPEN_METHOD WinStaCreate; - OB_PARSE_METHOD WinStaParse; - OB_DELETE_METHOD WinStaDelete; - OB_FIND_METHOD WinStaFind; - OB_CREATE_METHOD DesktopCreate; - OB_DELETE_METHOD DesktopDelete; -} W32_OBJECT_CALLBACK, *PW32_OBJECT_CALLBACK; - typedef struct _STACK_INFORMATION { PVOID BaseAddress; diff --git a/reactos/ntoskrnl/include/internal/ob.h b/reactos/ntoskrnl/include/internal/ob.h index b7522cefde6..25a2355db26 100644 --- a/reactos/ntoskrnl/include/internal/ob.h +++ b/reactos/ntoskrnl/include/internal/ob.h @@ -24,46 +24,6 @@ typedef struct typedef PVOID POBJECT; -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_HEADER /* * PURPOSE: Header for every object managed by the object manager diff --git a/reactos/ntoskrnl/include/internal/ps.h b/reactos/ntoskrnl/include/internal/ps.h index 19d7018efda..696bbe25946 100644 --- a/reactos/ntoskrnl/include/internal/ps.h +++ b/reactos/ntoskrnl/include/internal/ps.h @@ -55,6 +55,15 @@ extern LCID PsDefaultSystemLocaleId; #define FSRTL_FAST_IO_TOP_LEVEL_IRP (0x04) #define FSRTL_MAX_TOP_LEVEL_IRP_FLAG (0x04) +typedef struct _W32_OBJECT_CALLBACK { + OB_OPEN_METHOD WinStaCreate; + OB_PARSE_METHOD WinStaParse; + OB_DELETE_METHOD WinStaDelete; + OB_FIND_METHOD WinStaFind; + OB_CREATE_METHOD DesktopCreate; + OB_DELETE_METHOD DesktopDelete; +} W32_OBJECT_CALLBACK, *PW32_OBJECT_CALLBACK; + #ifndef __USE_W32API typedef struct { diff --git a/reactos/w32api/include/ddk/winddk.h b/reactos/w32api/include/ddk/winddk.h index 6ae1955b38b..81af7cf255b 100644 --- a/reactos/w32api/include/ddk/winddk.h +++ b/reactos/w32api/include/ddk/winddk.h @@ -8447,7 +8447,122 @@ MmUnmapVideoDisplay( -/** Object manager routines **/ +/** 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_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; NTOSAPI NTSTATUS