ktmtypes.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. /**
  2. * This file is part of the mingw-w64 runtime package.
  3. * No warranty is given; refer to the file DISCLAIMER within this package.
  4. */
  5. #ifndef _KTMTYPES_
  6. #define _KTMTYPES_
  7. #ifdef __cplusplus
  8. extern "C" {
  9. #endif
  10. typedef GUID CRM_PROTOCOL_ID,*PCRM_PROTOCOL_ID;
  11. #define TRANSACTION_MANAGER_VOLATILE 0x00000001
  12. #define TRANSACTION_MANAGER_COMMIT_DEFAULT 0x00000000
  13. #define TRANSACTION_MANAGER_COMMIT_SYSTEM_VOLUME 0x00000002
  14. #define TRANSACTION_MANAGER_COMMIT_SYSTEM_HIVES 0x00000004
  15. #define TRANSACTION_MANAGER_COMMIT_LOWEST 0x00000008
  16. #define TRANSACTION_MANAGER_CORRUPT_FOR_RECOVERY 0x00000010
  17. #define TRANSACTION_MANAGER_CORRUPT_FOR_PROGRESS 0x00000020
  18. #define TRANSACTION_MANAGER_MAXIMUM_OPTION 0x0000003f
  19. #define TRANSACTION_DO_NOT_PROMOTE 0x00000001
  20. #define TRANSACTION_MAXIMUM_OPTION 0x00000001
  21. #define RESOURCE_MANAGER_VOLATILE 0x00000001
  22. #define RESOURCE_MANAGER_COMMUNICATION 0x00000002
  23. #define RESOURCE_MANAGER_MAXIMUM_OPTION 0x00000003
  24. #define CRM_PROTOCOL_EXPLICIT_MARSHAL_ONLY 0x00000001
  25. #define CRM_PROTOCOL_DYNAMIC_MARSHAL_INFO 0x00000002
  26. #define CRM_PROTOCOL_MAXIMUM_OPTION 0x00000003
  27. #define ENLISTMENT_SUPERIOR 0x00000001
  28. #define ENLISTMENT_MAXIMUM_OPTION 0x00000001
  29. typedef ULONG NOTIFICATION_MASK;
  30. #define TRANSACTION_NOTIFY_MASK 0x3fffffff
  31. #define TRANSACTION_NOTIFY_PREPREPARE 0x00000001
  32. #define TRANSACTION_NOTIFY_PREPARE 0x00000002
  33. #define TRANSACTION_NOTIFY_COMMIT 0x00000004
  34. #define TRANSACTION_NOTIFY_ROLLBACK 0x00000008
  35. #define TRANSACTION_NOTIFY_PREPREPARE_COMPLETE 0x00000010
  36. #define TRANSACTION_NOTIFY_PREPARE_COMPLETE 0x00000020
  37. #define TRANSACTION_NOTIFY_COMMIT_COMPLETE 0x00000040
  38. #define TRANSACTION_NOTIFY_ROLLBACK_COMPLETE 0x00000080
  39. #define TRANSACTION_NOTIFY_RECOVER 0x00000100
  40. #define TRANSACTION_NOTIFY_SINGLE_PHASE_COMMIT 0x00000200
  41. #define TRANSACTION_NOTIFY_DELEGATE_COMMIT 0x00000400
  42. #define TRANSACTION_NOTIFY_RECOVER_QUERY 0x00000800
  43. #define TRANSACTION_NOTIFY_ENLIST_PREPREPARE 0x00001000
  44. #define TRANSACTION_NOTIFY_LAST_RECOVER 0x00002000
  45. #define TRANSACTION_NOTIFY_INDOUBT 0x00004000
  46. #define TRANSACTION_NOTIFY_PROPAGATE_PULL 0x00008000
  47. #define TRANSACTION_NOTIFY_PROPAGATE_PUSH 0x00010000
  48. #define TRANSACTION_NOTIFY_MARSHAL 0x00020000
  49. #define TRANSACTION_NOTIFY_ENLIST_MASK 0x00040000
  50. #define TRANSACTION_NOTIFY_RM_DISCONNECTED 0x01000000
  51. #define TRANSACTION_NOTIFY_TM_ONLINE 0x02000000
  52. #define TRANSACTION_NOTIFY_COMMIT_REQUEST 0x04000000
  53. #define TRANSACTION_NOTIFY_PROMOTE 0x08000000
  54. #define TRANSACTION_NOTIFY_PROMOTE_NEW 0x10000000
  55. #define TRANSACTION_NOTIFY_REQUEST_OUTCOME 0x20000000
  56. #define TRANSACTION_NOTIFY_COMMIT_FINALIZE 0x40000000
  57. #define TRANSACTIONMANAGER_OBJECT_PATH L"\\TransactionManager\\"
  58. #define TRANSACTION_OBJECT_PATH L"\\Transaction\\"
  59. #define ENLISTMENT_OBJECT_PATH L"\\Enlistment\\"
  60. #define RESOURCE_MANAGER_OBJECT_PATH L"\\ResourceManager\\"
  61. #define TRANSACTIONMANAGER_OBJECT_NAME_LENGTH_IN_BYTES (sizeof (TRANSACTIONMANAGER_OBJECT_PATH) + (38 * sizeof (WCHAR)))
  62. #define TRANSACTION_OBJECT_NAME_LENGTH_IN_BYTES (sizeof (TRANSACTION_OBJECT_PATH) + (38 * sizeof (WCHAR)))
  63. #define ENLISTMENT_OBJECT_NAME_LENGTH_IN_BYTES (sizeof (ENLISTMENT_OBJECT_PATH) + (38 * sizeof (WCHAR)))
  64. #define RESOURCE_MANAGER_OBJECT_NAME_LENGTH_IN_BYTES (sizeof (RESOURCE_MANAGER_OBJECT_PATH) + (38 * sizeof (WCHAR)))
  65. typedef struct _TRANSACTION_NOTIFICATION {
  66. PVOID TransactionKey;
  67. ULONG TransactionNotification;
  68. LARGE_INTEGER TmVirtualClock;
  69. ULONG ArgumentLength;
  70. } TRANSACTION_NOTIFICATION,*PTRANSACTION_NOTIFICATION;
  71. typedef struct _TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT {
  72. GUID EnlistmentId;
  73. GUID UOW;
  74. } TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT,*PTRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT;
  75. #define TRANSACTION_NOTIFICATION_TM_ONLINE_FLAG_IS_CLUSTERED 0x1
  76. typedef struct _TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT {
  77. GUID TmIdentity;
  78. ULONG Flags;
  79. } TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT,*PTRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT;
  80. typedef ULONG SAVEPOINT_ID,*PSAVEPOINT_ID;
  81. typedef struct _TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT {
  82. SAVEPOINT_ID SavepointId;
  83. } TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT,*PTRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT;
  84. typedef struct _TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT {
  85. ULONG PropagationCookie;
  86. GUID UOW;
  87. GUID TmIdentity;
  88. ULONG BufferLength;
  89. } TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT,*PTRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT;
  90. typedef struct _TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT {
  91. ULONG MarshalCookie;
  92. GUID UOW;
  93. } TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT,*PTRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT;
  94. typedef TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT TRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT,*PTRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT;
  95. #define KTM_MARSHAL_BLOB_VERSION_MAJOR 1
  96. #define KTM_MARSHAL_BLOB_VERSION_MINOR 1
  97. #define MAX_TRANSACTION_DESCRIPTION_LENGTH 64
  98. #define MAX_RESOURCEMANAGER_DESCRIPTION_LENGTH 64
  99. typedef struct _KCRM_MARSHAL_HEADER {
  100. ULONG VersionMajor;
  101. ULONG VersionMinor;
  102. ULONG NumProtocols;
  103. ULONG Unused;
  104. } KCRM_MARSHAL_HEADER,*PKCRM_MARSHAL_HEADER,*RESTRICTED_POINTER PRKCRM_MARSHAL_HEADER;
  105. typedef struct _KCRM_TRANSACTION_BLOB {
  106. GUID UOW;
  107. GUID TmIdentity;
  108. ULONG IsolationLevel;
  109. ULONG IsolationFlags;
  110. ULONG Timeout;
  111. WCHAR Description[MAX_TRANSACTION_DESCRIPTION_LENGTH];
  112. } KCRM_TRANSACTION_BLOB,*PKCRM_TRANSACTION_BLOB,*RESTRICTED_POINTER PRKCRM_TRANSACTION_BLOB;
  113. typedef struct _KCRM_PROTOCOL_BLOB {
  114. CRM_PROTOCOL_ID ProtocolId;
  115. ULONG StaticInfoLength;
  116. ULONG TransactionIdInfoLength;
  117. ULONG Unused1;
  118. ULONG Unused2;
  119. } KCRM_PROTOCOL_BLOB,*PKCRM_PROTOCOL_BLOB,*RESTRICTED_POINTER PRKCRM_PROTOCOL_BLOB;
  120. #ifdef __cplusplus
  121. }
  122. #endif
  123. #endif