winapi\shared/
ktmtypes.rs1use shared::guiddef::GUID;
8use shared::minwindef::{DWORD, ULONG};
9use um::winnt::{LARGE_INTEGER, PVOID, WCHAR};
10pub type UOW = GUID;
11pub type PUOW = *mut GUID;
12pub type CRM_PROTOCOL_ID = GUID;
13pub type PCRM_PROTOCOL_ID = *mut GUID;
14pub const TRANSACTION_MANAGER_VOLATILE: ULONG = 0x00000001;
15pub const TRANSACTION_MANAGER_COMMIT_DEFAULT: ULONG = 0x00000000;
16pub const TRANSACTION_MANAGER_COMMIT_SYSTEM_VOLUME: ULONG = 0x00000002;
17pub const TRANSACTION_MANAGER_COMMIT_SYSTEM_HIVES: ULONG = 0x00000004;
18pub const TRANSACTION_MANAGER_COMMIT_LOWEST: ULONG = 0x00000008;
19pub const TRANSACTION_MANAGER_CORRUPT_FOR_RECOVERY: ULONG = 0x00000010;
20pub const TRANSACTION_MANAGER_CORRUPT_FOR_PROGRESS: ULONG = 0x00000020;
21pub const TRANSACTION_MANAGER_MAXIMUM_OPTION: ULONG = 0x0000003F;
22pub const TRANSACTION_DO_NOT_PROMOTE: DWORD = 0x00000001;
23pub const TRANSACTION_MAXIMUM_OPTION: DWORD = 0x00000001;
24pub const RESOURCE_MANAGER_VOLATILE: DWORD = 0x00000001;
25pub const RESOURCE_MANAGER_COMMUNICATION: DWORD = 0x00000002;
26pub const RESOURCE_MANAGER_MAXIMUM_OPTION: DWORD = 0x00000003;
27pub const CRM_PROTOCOL_EXPLICIT_MARSHAL_ONLY: DWORD = 0x00000001;
28pub const CRM_PROTOCOL_DYNAMIC_MARSHAL_INFO: DWORD = 0x00000002;
29pub const CRM_PROTOCOL_MAXIMUM_OPTION: DWORD = 0x00000003;
30pub const ENLISTMENT_SUPERIOR: ULONG = 0x00000001;
31pub const ENLISTMENT_MAXIMUM_OPTION: ULONG = 0x00000001;
32pub type NOTIFICATION_MASK = ULONG;
33pub const TRANSACTION_NOTIFY_MASK: ULONG = 0x3FFFFFFF;
34pub const TRANSACTION_NOTIFY_PREPREPARE: ULONG = 0x00000001;
35pub const TRANSACTION_NOTIFY_PREPARE: ULONG = 0x00000002;
36pub const TRANSACTION_NOTIFY_COMMIT: ULONG = 0x00000004;
37pub const TRANSACTION_NOTIFY_ROLLBACK: ULONG = 0x00000008;
38pub const TRANSACTION_NOTIFY_PREPREPARE_COMPLETE: ULONG = 0x00000010;
39pub const TRANSACTION_NOTIFY_PREPARE_COMPLETE: ULONG = 0x00000020;
40pub const TRANSACTION_NOTIFY_COMMIT_COMPLETE: ULONG = 0x00000040;
41pub const TRANSACTION_NOTIFY_ROLLBACK_COMPLETE: ULONG = 0x00000080;
42pub const TRANSACTION_NOTIFY_RECOVER: ULONG = 0x00000100;
43pub const TRANSACTION_NOTIFY_SINGLE_PHASE_COMMIT: ULONG = 0x00000200;
44pub const TRANSACTION_NOTIFY_DELEGATE_COMMIT: ULONG = 0x00000400;
45pub const TRANSACTION_NOTIFY_RECOVER_QUERY: ULONG = 0x00000800;
46pub const TRANSACTION_NOTIFY_ENLIST_PREPREPARE: ULONG = 0x00001000;
47pub const TRANSACTION_NOTIFY_LAST_RECOVER: ULONG = 0x00002000;
48pub const TRANSACTION_NOTIFY_INDOUBT: ULONG = 0x00004000;
49pub const TRANSACTION_NOTIFY_PROPAGATE_PULL: ULONG = 0x00008000;
50pub const TRANSACTION_NOTIFY_PROPAGATE_PUSH: ULONG = 0x00010000;
51pub const TRANSACTION_NOTIFY_MARSHAL: ULONG = 0x00020000;
52pub const TRANSACTION_NOTIFY_ENLIST_MASK: ULONG = 0x00040000;
53pub const TRANSACTION_NOTIFY_RM_DISCONNECTED: ULONG = 0x01000000;
54pub const TRANSACTION_NOTIFY_TM_ONLINE: ULONG = 0x02000000;
55pub const TRANSACTION_NOTIFY_COMMIT_REQUEST: ULONG = 0x04000000;
56pub const TRANSACTION_NOTIFY_PROMOTE: ULONG = 0x08000000;
57pub const TRANSACTION_NOTIFY_PROMOTE_NEW: ULONG = 0x10000000;
58pub const TRANSACTION_NOTIFY_REQUEST_OUTCOME: ULONG = 0x20000000;
59pub const TRANSACTION_NOTIFY_COMMIT_FINALIZE: ULONG = 0x40000000;
60pub const TRANSACTIONMANAGER_OBJECT_PATH: &'static str = "\\TransactionManager\\";
61pub const TRANSACTION_OBJECT_PATH: &'static str = "\\Transaction\\";
62pub const ENLISTMENT_OBJECT_PATH: &'static str = "\\Enlistment\\";
63pub const RESOURCE_MANAGER_OBJECT_PATH: &'static str = "\\ResourceManager\\";
64STRUCT!{struct TRANSACTION_NOTIFICATION {
65 TransactionKey: PVOID,
66 TransactionNotification: ULONG,
67 TmVirtualClock: LARGE_INTEGER,
68 ArgumentLength: ULONG,
69}}
70pub type PTRANSACTION_NOTIFICATION = *mut TRANSACTION_NOTIFICATION;
71STRUCT!{struct TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT {
72 EnlistmentId: GUID,
73 UOW: UOW,
74}}
75pub type PTRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT
76 = *mut TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT;
77pub const TRANSACTION_NOTIFICATION_TM_ONLINE_FLAG_IS_CLUSTERED: ULONG = 0x1;
78STRUCT!{struct TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT {
79 TmIdentity: GUID,
80 Flags: ULONG,
81}}
82pub type PTRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT
83 = *mut TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT;
84pub type SAVEPOINT_ID = ULONG;
85pub type PSAVEPOINT_ID = *mut ULONG;
86STRUCT!{struct TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT {
87 SavepointId: SAVEPOINT_ID,
88}}
89pub type PTRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT
90 = *mut TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT;
91STRUCT!{struct TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT {
92 PropagationCookie: ULONG,
93 UOW: GUID,
94 TmIdentity: GUID,
95 BufferLength: ULONG,
96}}
97pub type PTRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT
98 = *mut TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT;
99STRUCT!{struct TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT {
100 MarshalCookie: ULONG,
101 UOW: GUID,
102}}
103pub type PTRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT
104 = *mut TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT;
105pub type TRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT = TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT;
106pub type PTRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT
107 = *mut TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT;
108pub const KTM_MARSHAL_BLOB_VERSION_MAJOR: ULONG = 1;
109pub const KTM_MARSHAL_BLOB_VERSION_MINOR: ULONG = 1;
110pub const MAX_TRANSACTION_DESCRIPTION_LENGTH: usize = 64;
111pub const MAX_RESOURCEMANAGER_DESCRIPTION_LENGTH: usize = 64;
112STRUCT!{struct KCRM_MARSHAL_HEADER {
113 VersionMajor: ULONG,
114 VersionMinor: ULONG,
115 NumProtocols: ULONG,
116 Unused: ULONG,
117}}
118pub type PKCRM_MARSHAL_HEADER = *mut KCRM_MARSHAL_HEADER;
119pub type PRKCRM_MARSHAL_HEADER = *mut KCRM_MARSHAL_HEADER;
120STRUCT!{struct KCRM_TRANSACTION_BLOB {
121 UOW: UOW,
122 TmIdentity: GUID,
123 IsolationLevel: ULONG,
124 IsolationFlags: ULONG,
125 Timeout: ULONG,
126 Description: [WCHAR; MAX_TRANSACTION_DESCRIPTION_LENGTH],
127}}
128pub type PKCRM_TRANSACTION_BLOB = *mut KCRM_TRANSACTION_BLOB;
129pub type PRKCRM_TRANSACTION_BLOB = *mut KCRM_TRANSACTION_BLOB;
130STRUCT!{struct KCRM_PROTOCOL_BLOB {
131 ProtocolId: CRM_PROTOCOL_ID,
132 StaticInfoLength: ULONG,
133 TransactionIdInfoLength: ULONG,
134 Unused1: ULONG,
135 Unused2: ULONG,
136}}
137pub type PKCRM_PROTOCOL_BLOB = *mut KCRM_PROTOCOL_BLOB;
138pub type PRKCRM_PROTOCOL_BLOB = *mut KCRM_PROTOCOL_BLOB;