Reactos
at master 179 lines 6.6 kB view raw
1/****************************************************************************** 2 * Object Manager Types * 3 ******************************************************************************/ 4 5$if (_WDMDDK_) 6#define MAXIMUM_FILENAME_LENGTH 256 7#define OBJ_NAME_PATH_SEPARATOR ((WCHAR)L'\\') 8 9#define OBJECT_TYPE_CREATE 0x0001 10#define OBJECT_TYPE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1) 11 12#define DIRECTORY_QUERY 0x0001 13#define DIRECTORY_TRAVERSE 0x0002 14#define DIRECTORY_CREATE_OBJECT 0x0004 15#define DIRECTORY_CREATE_SUBDIRECTORY 0x0008 16#define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF) 17 18#define SYMBOLIC_LINK_QUERY 0x0001 19#define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1) 20 21#define DUPLICATE_CLOSE_SOURCE 0x00000001 22#define DUPLICATE_SAME_ACCESS 0x00000002 23#define DUPLICATE_SAME_ATTRIBUTES 0x00000004 24 25#define OB_FLT_REGISTRATION_VERSION_0100 0x0100 26#define OB_FLT_REGISTRATION_VERSION OB_FLT_REGISTRATION_VERSION_0100 27 28typedef ULONG OB_OPERATION; 29 30#define OB_OPERATION_HANDLE_CREATE 0x00000001 31#define OB_OPERATION_HANDLE_DUPLICATE 0x00000002 32 33typedef struct _OB_PRE_CREATE_HANDLE_INFORMATION { 34 _Inout_ ACCESS_MASK DesiredAccess; 35 _In_ ACCESS_MASK OriginalDesiredAccess; 36} OB_PRE_CREATE_HANDLE_INFORMATION, *POB_PRE_CREATE_HANDLE_INFORMATION; 37 38typedef struct _OB_PRE_DUPLICATE_HANDLE_INFORMATION { 39 _Inout_ ACCESS_MASK DesiredAccess; 40 _In_ ACCESS_MASK OriginalDesiredAccess; 41 _In_ PVOID SourceProcess; 42 _In_ PVOID TargetProcess; 43} OB_PRE_DUPLICATE_HANDLE_INFORMATION, *POB_PRE_DUPLICATE_HANDLE_INFORMATION; 44 45typedef union _OB_PRE_OPERATION_PARAMETERS { 46 _Inout_ OB_PRE_CREATE_HANDLE_INFORMATION CreateHandleInformation; 47 _Inout_ OB_PRE_DUPLICATE_HANDLE_INFORMATION DuplicateHandleInformation; 48} OB_PRE_OPERATION_PARAMETERS, *POB_PRE_OPERATION_PARAMETERS; 49 50typedef struct _OB_PRE_OPERATION_INFORMATION { 51 _In_ OB_OPERATION Operation; 52 _ANONYMOUS_UNION union { 53 _In_ ULONG Flags; 54 _ANONYMOUS_STRUCT struct { 55 _In_ ULONG KernelHandle:1; 56 _In_ ULONG Reserved:31; 57 } DUMMYSTRUCTNAME; 58 } DUMMYUNIONNAME; 59 _In_ PVOID Object; 60 _In_ POBJECT_TYPE ObjectType; 61 _Out_ PVOID CallContext; 62 _In_ POB_PRE_OPERATION_PARAMETERS Parameters; 63} OB_PRE_OPERATION_INFORMATION, *POB_PRE_OPERATION_INFORMATION; 64 65typedef struct _OB_POST_CREATE_HANDLE_INFORMATION { 66 _In_ ACCESS_MASK GrantedAccess; 67} OB_POST_CREATE_HANDLE_INFORMATION, *POB_POST_CREATE_HANDLE_INFORMATION; 68 69typedef struct _OB_POST_DUPLICATE_HANDLE_INFORMATION { 70 _In_ ACCESS_MASK GrantedAccess; 71} OB_POST_DUPLICATE_HANDLE_INFORMATION, *POB_POST_DUPLICATE_HANDLE_INFORMATION; 72 73typedef union _OB_POST_OPERATION_PARAMETERS { 74 _In_ OB_POST_CREATE_HANDLE_INFORMATION CreateHandleInformation; 75 _In_ OB_POST_DUPLICATE_HANDLE_INFORMATION DuplicateHandleInformation; 76} OB_POST_OPERATION_PARAMETERS, *POB_POST_OPERATION_PARAMETERS; 77 78typedef struct _OB_POST_OPERATION_INFORMATION { 79 _In_ OB_OPERATION Operation; 80 _ANONYMOUS_UNION union { 81 _In_ ULONG Flags; 82 _ANONYMOUS_STRUCT struct { 83 _In_ ULONG KernelHandle:1; 84 _In_ ULONG Reserved:31; 85 } DUMMYSTRUCTNAME; 86 } DUMMYUNIONNAME; 87 _In_ PVOID Object; 88 _In_ POBJECT_TYPE ObjectType; 89 _In_ PVOID CallContext; 90 _In_ NTSTATUS ReturnStatus; 91 _In_ POB_POST_OPERATION_PARAMETERS Parameters; 92} OB_POST_OPERATION_INFORMATION,*POB_POST_OPERATION_INFORMATION; 93 94typedef enum _OB_PREOP_CALLBACK_STATUS { 95 OB_PREOP_SUCCESS 96} OB_PREOP_CALLBACK_STATUS, *POB_PREOP_CALLBACK_STATUS; 97 98typedef OB_PREOP_CALLBACK_STATUS 99(NTAPI *POB_PRE_OPERATION_CALLBACK)( 100 _In_ PVOID RegistrationContext, 101 _Inout_ POB_PRE_OPERATION_INFORMATION OperationInformation); 102 103typedef VOID 104(NTAPI *POB_POST_OPERATION_CALLBACK)( 105 _In_ PVOID RegistrationContext, 106 _In_ POB_POST_OPERATION_INFORMATION OperationInformation); 107 108typedef struct _OB_OPERATION_REGISTRATION { 109 _In_ POBJECT_TYPE *ObjectType; 110 _In_ OB_OPERATION Operations; 111 _In_ POB_PRE_OPERATION_CALLBACK PreOperation; 112 _In_ POB_POST_OPERATION_CALLBACK PostOperation; 113} OB_OPERATION_REGISTRATION, *POB_OPERATION_REGISTRATION; 114 115typedef struct _OB_CALLBACK_REGISTRATION { 116 _In_ USHORT Version; 117 _In_ USHORT OperationRegistrationCount; 118 _In_ UNICODE_STRING Altitude; 119 _In_ PVOID RegistrationContext; 120 _In_ OB_OPERATION_REGISTRATION *OperationRegistration; 121} OB_CALLBACK_REGISTRATION, *POB_CALLBACK_REGISTRATION; 122 123typedef struct _OBJECT_NAME_INFORMATION { 124 UNICODE_STRING Name; 125} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION; 126 127/* Exported object types */ 128#ifdef _NTSYSTEM_ 129extern POBJECT_TYPE NTSYSAPI CmKeyObjectType; 130extern POBJECT_TYPE NTSYSAPI ExEventObjectType; 131extern POBJECT_TYPE NTSYSAPI ExSemaphoreObjectType; 132extern POBJECT_TYPE NTSYSAPI IoFileObjectType; 133extern POBJECT_TYPE NTSYSAPI PsThreadType; 134extern POBJECT_TYPE NTSYSAPI SeTokenObjectType; 135extern POBJECT_TYPE NTSYSAPI PsProcessType; 136#else 137__CREATE_NTOS_DATA_IMPORT_ALIAS(CmKeyObjectType) 138__CREATE_NTOS_DATA_IMPORT_ALIAS(IoFileObjectType) 139__CREATE_NTOS_DATA_IMPORT_ALIAS(ExEventObjectType) 140__CREATE_NTOS_DATA_IMPORT_ALIAS(ExSemaphoreObjectType) 141__CREATE_NTOS_DATA_IMPORT_ALIAS(TmTransactionManagerObjectType) 142__CREATE_NTOS_DATA_IMPORT_ALIAS(TmResourceManagerObjectType) 143__CREATE_NTOS_DATA_IMPORT_ALIAS(TmEnlistmentObjectType) 144__CREATE_NTOS_DATA_IMPORT_ALIAS(TmTransactionObjectType) 145__CREATE_NTOS_DATA_IMPORT_ALIAS(PsProcessType) 146__CREATE_NTOS_DATA_IMPORT_ALIAS(PsThreadType) 147__CREATE_NTOS_DATA_IMPORT_ALIAS(SeTokenObjectType) 148extern POBJECT_TYPE *CmKeyObjectType; 149extern POBJECT_TYPE *IoFileObjectType; 150extern POBJECT_TYPE *ExEventObjectType; 151extern POBJECT_TYPE *ExSemaphoreObjectType; 152extern POBJECT_TYPE *TmTransactionManagerObjectType; 153extern POBJECT_TYPE *TmResourceManagerObjectType; 154extern POBJECT_TYPE *TmEnlistmentObjectType; 155extern POBJECT_TYPE *TmTransactionObjectType; 156extern POBJECT_TYPE *PsProcessType; 157extern POBJECT_TYPE *PsThreadType; 158extern POBJECT_TYPE *SeTokenObjectType; 159#endif 160 161$endif (_WDMDDK_) 162$if (_NTIFS_) 163typedef enum _OBJECT_INFORMATION_CLASS { 164 ObjectBasicInformation = 0, 165 ObjectTypeInformation = 2, 166$endif (_NTIFS_) 167$if (_NTIFS_) // we should remove these, but the kernel needs them :-/ 168 /* Not for public use */ 169 ObjectNameInformation = 1, 170 ObjectTypesInformation = 3, 171 ObjectHandleFlagInformation = 4, 172 ObjectSessionInformation = 5, 173 MaxObjectInfoClass 174$endif (_NTIFS_) 175$if (_NTIFS_) 176} OBJECT_INFORMATION_CLASS; 177 178$endif (_NTIFS_) 179