Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenktmtypes.h
Go to the documentation of this file.
00001 /* 00002 * ktmtypes.h 00003 * 00004 * This file is part of the ReactOS PSDK package. 00005 * 00006 * Contributors: 00007 * Created by Timo Kreuzer <timo.kreuzer@reactos.org> 00008 * 00009 * THIS SOFTWARE IS NOT COPYRIGHTED 00010 * 00011 * This source code is offered for use in the public domain. You may 00012 * use, modify or distribute it freely. 00013 * 00014 * This code is distributed in the hope that it will be useful but 00015 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 00016 * DISCLAIMED. This includes but is not limited to warranties of 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00018 * 00019 */ 00020 00021 #ifndef _KTMTYPES_ 00022 #define _KTMTYPES_ 00023 00024 #define TRANSACTION_MANAGER_VOLATILE 0x00000001 00025 #define TRANSACTION_MANAGER_COMMIT_DEFAULT 0x00000000 00026 #define TRANSACTION_MANAGER_COMMIT_SYSTEM_VOLUME 0x00000002 00027 #define TRANSACTION_MANAGER_COMMIT_SYSTEM_HIVES 0x00000004 00028 #define TRANSACTION_MANAGER_COMMIT_LOWEST 0x00000008 00029 #define TRANSACTION_MANAGER_CORRUPT_FOR_RECOVERY 0x00000010 00030 #define TRANSACTION_MANAGER_CORRUPT_FOR_PROGRESS 0x00000020 00031 #define TRANSACTION_MANAGER_MAXIMUM_OPTION 0x0000003F 00032 00033 #define TRANSACTION_DO_NOT_PROMOTE 0x00000001 00034 #define TRANSACTION_MAXIMUM_OPTION 0x00000001 00035 00036 #define RESOURCE_MANAGER_VOLATILE 0x00000001 00037 #define RESOURCE_MANAGER_COMMUNICATION 0x00000002 00038 #define RESOURCE_MANAGER_MAXIMUM_OPTION 0x00000003 00039 00040 #define CRM_PROTOCOL_EXPLICIT_MARSHAL_ONLY 0x00000001 00041 #define CRM_PROTOCOL_DYNAMIC_MARSHAL_INFO 0x00000002 00042 #define CRM_PROTOCOL_MAXIMUM_OPTION 0x00000003 00043 00044 #define ENLISTMENT_SUPERIOR 0x00000001 00045 #define ENLISTMENT_MAXIMUM_OPTION 0x00000001 00046 00047 #define TRANSACTION_NOTIFY_MASK 0x3FFFFFFF 00048 #define TRANSACTION_NOTIFY_PREPREPARE 0x00000001 00049 #define TRANSACTION_NOTIFY_PREPARE 0x00000002 00050 #define TRANSACTION_NOTIFY_COMMIT 0x00000004 00051 #define TRANSACTION_NOTIFY_ROLLBACK 0x00000008 00052 #define TRANSACTION_NOTIFY_PREPREPARE_COMPLETE 0x00000010 00053 #define TRANSACTION_NOTIFY_PREPARE_COMPLETE 0x00000020 00054 #define TRANSACTION_NOTIFY_COMMIT_COMPLETE 0x00000040 00055 #define TRANSACTION_NOTIFY_ROLLBACK_COMPLETE 0x00000080 00056 #define TRANSACTION_NOTIFY_RECOVER 0x00000100 00057 #define TRANSACTION_NOTIFY_SINGLE_PHASE_COMMIT 0x00000200 00058 #define TRANSACTION_NOTIFY_DELEGATE_COMMIT 0x00000400 00059 #define TRANSACTION_NOTIFY_RECOVER_QUERY 0x00000800 00060 #define TRANSACTION_NOTIFY_ENLIST_PREPREPARE 0x00001000 00061 #define TRANSACTION_NOTIFY_LAST_RECOVER 0x00002000 00062 #define TRANSACTION_NOTIFY_INDOUBT 0x00004000 00063 #define TRANSACTION_NOTIFY_PROPAGATE_PULL 0x00008000 00064 #define TRANSACTION_NOTIFY_PROPAGATE_PUSH 0x00010000 00065 #define TRANSACTION_NOTIFY_MARSHAL 0x00020000 00066 #define TRANSACTION_NOTIFY_ENLIST_MASK 0x00040000 00067 #define TRANSACTION_NOTIFY_RM_DISCONNECTED 0x01000000 00068 #define TRANSACTION_NOTIFY_TM_ONLINE 0x02000000 00069 #define TRANSACTION_NOTIFY_COMMIT_REQUEST 0x04000000 00070 #define TRANSACTION_NOTIFY_PROMOTE 0x08000000 00071 #define TRANSACTION_NOTIFY_PROMOTE_NEW 0x10000000 00072 #define TRANSACTION_NOTIFY_REQUEST_OUTCOME 0x20000000 00073 00074 #define TRANSACTION_NOTIFY_COMMIT_FINALIZE 0x40000000 00075 00076 #define TRANSACTIONMANAGER_OBJECT_PATH L"\\TransactionManager\\" 00077 #define TRANSACTION_OBJECT_PATH L"\\Transaction\\" 00078 #define ENLISTMENT_OBJECT_PATH L"\\Enlistment\\" 00079 #define RESOURCE_MANAGER_OBJECT_PATH L"\\ResourceManager\\" 00080 00081 #define TRANSACTIONMANAGER_OBJECT_NAME_LENGTH_IN_BYTES (sizeof(TRANSACTIONMANAGER_OBJECT_PATH)+(38*sizeof(WCHAR))) 00082 #define TRANSACTION_OBJECT_NAME_LENGTH_IN_BYTES (sizeof(TRANSACTION_OBJECT_PATH)+(38*sizeof(WCHAR))) 00083 #define ENLISTMENT_OBJECT_NAME_LENGTH_IN_BYTES (sizeof(ENLISTMENT_OBJECT_PATH)+(38*sizeof(WCHAR))) 00084 #define RESOURCE_MANAGER_OBJECT_NAME_LENGTH_IN_BYTES (sizeof(RESOURCE_MANAGER_OBJECT_PATH)+(38*sizeof(WCHAR))) 00085 00086 #define TRANSACTION_NOTIFICATION_TM_ONLINE_FLAG_IS_CLUSTERED 0x1 00087 00088 #define KTM_MARSHAL_BLOB_VERSION_MAJOR 1 00089 #define KTM_MARSHAL_BLOB_VERSION_MINOR 1 00090 00091 #define MAX_TRANSACTION_DESCRIPTION_LENGTH 64 00092 #define MAX_RESOURCEMANAGER_DESCRIPTION_LENGTH 64 00093 00094 #ifndef _WDMDDK_ 00095 typedef GUID UOW, *PUOW; 00096 #endif 00097 00098 typedef GUID CRM_PROTOCOL_ID, *PCRM_PROTOCOL_ID; 00099 typedef ULONG NOTIFICATION_MASK; 00100 typedef ULONG SAVEPOINT_ID, *PSAVEPOINT_ID; 00101 00102 typedef struct _TRANSACTION_NOTIFICATION { 00103 PVOID TransactionKey; 00104 ULONG TransactionNotification; 00105 LARGE_INTEGER TmVirtualClock; 00106 ULONG ArgumentLength; 00107 } TRANSACTION_NOTIFICATION, *PTRANSACTION_NOTIFICATION; 00108 00109 typedef struct _TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT { 00110 GUID EnlistmentId; 00111 #if defined(__cplusplus) 00112 ::UOW UOW; 00113 #else 00114 UOW UOW; 00115 #endif 00116 } TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT, *PTRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT; 00117 00118 typedef struct _TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT { 00119 GUID TmIdentity; 00120 ULONG Flags; 00121 } TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT, *PTRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT; 00122 00123 typedef struct _TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT { 00124 SAVEPOINT_ID SavepointId; 00125 } TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT, *PTRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT; 00126 00127 typedef struct _TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT { 00128 ULONG PropagationCookie; 00129 GUID UOW; 00130 GUID TmIdentity; 00131 ULONG BufferLength; 00132 } TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT, *PTRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT, 00133 TRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT, *PTRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT; 00134 00135 typedef struct _TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT { 00136 ULONG MarshalCookie; 00137 GUID UOW; 00138 } TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT, *PTRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT; 00139 00140 typedef struct _KCRM_MARSHAL_HEADER { 00141 ULONG VersionMajor; 00142 ULONG VersionMinor; 00143 ULONG NumProtocols; 00144 ULONG Unused; 00145 } KCRM_MARSHAL_HEADER, *PKCRM_MARSHAL_HEADER, *RESTRICTED_POINTER PRKCRM_MARSHAL_HEADER; 00146 00147 typedef struct _KCRM_TRANSACTION_BLOB { 00148 #if defined(__cplusplus) 00149 ::UOW UOW; 00150 #else 00151 UOW UOW; 00152 #endif 00153 GUID TmIdentity; 00154 ULONG IsolationLevel; 00155 ULONG IsolationFlags; 00156 ULONG Timeout; 00157 WCHAR Description[MAX_TRANSACTION_DESCRIPTION_LENGTH]; 00158 } KCRM_TRANSACTION_BLOB, *PKCRM_TRANSACTION_BLOB, *RESTRICTED_POINTER PRKCRM_TRANSACTION_BLOB; 00159 00160 typedef struct _KCRM_PROTOCOL_BLOB { 00161 CRM_PROTOCOL_ID ProtocolId; 00162 ULONG StaticInfoLength; 00163 ULONG TransactionIdInfoLength; 00164 ULONG Unused1; 00165 ULONG Unused2; 00166 } KCRM_PROTOCOL_BLOB, *PKCRM_PROTOCOL_BLOB, *RESTRICTED_POINTER PRKCRM_PROTOCOL_BLOB; 00167 00168 #endif /* _KTMTYPES_ */ 00169 Generated on Mon May 28 2012 04:31:26 for ReactOS by
1.7.6.1
|