Fix build, clean up headers, add public stuff to public headers

svn path=/trunk/; revision=15326
This commit is contained in:
Alex Ionescu 2005-05-15 23:24:11 +00:00
parent 6a7f1b10c5
commit 6b86cb4406
6 changed files with 242 additions and 116 deletions

View file

@ -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,

View file

@ -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);

View file

@ -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;

View file

@ -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

View file

@ -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
{

View file

@ -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