winapi\shared/
ktmtypes.rsuse shared::guiddef::GUID;
use shared::minwindef::{DWORD, ULONG};
use um::winnt::{LARGE_INTEGER, PVOID, WCHAR};
pub type UOW = GUID;
pub type PUOW = *mut GUID;
pub type CRM_PROTOCOL_ID = GUID;
pub type PCRM_PROTOCOL_ID = *mut GUID;
pub const TRANSACTION_MANAGER_VOLATILE: ULONG = 0x00000001;
pub const TRANSACTION_MANAGER_COMMIT_DEFAULT: ULONG = 0x00000000;
pub const TRANSACTION_MANAGER_COMMIT_SYSTEM_VOLUME: ULONG = 0x00000002;
pub const TRANSACTION_MANAGER_COMMIT_SYSTEM_HIVES: ULONG = 0x00000004;
pub const TRANSACTION_MANAGER_COMMIT_LOWEST: ULONG = 0x00000008;
pub const TRANSACTION_MANAGER_CORRUPT_FOR_RECOVERY: ULONG = 0x00000010;
pub const TRANSACTION_MANAGER_CORRUPT_FOR_PROGRESS: ULONG = 0x00000020;
pub const TRANSACTION_MANAGER_MAXIMUM_OPTION: ULONG = 0x0000003F;
pub const TRANSACTION_DO_NOT_PROMOTE: DWORD = 0x00000001;
pub const TRANSACTION_MAXIMUM_OPTION: DWORD = 0x00000001;
pub const RESOURCE_MANAGER_VOLATILE: DWORD = 0x00000001;
pub const RESOURCE_MANAGER_COMMUNICATION: DWORD = 0x00000002;
pub const RESOURCE_MANAGER_MAXIMUM_OPTION: DWORD = 0x00000003;
pub const CRM_PROTOCOL_EXPLICIT_MARSHAL_ONLY: DWORD = 0x00000001;
pub const CRM_PROTOCOL_DYNAMIC_MARSHAL_INFO: DWORD = 0x00000002;
pub const CRM_PROTOCOL_MAXIMUM_OPTION: DWORD = 0x00000003;
pub const ENLISTMENT_SUPERIOR: ULONG = 0x00000001;
pub const ENLISTMENT_MAXIMUM_OPTION: ULONG = 0x00000001;
pub type NOTIFICATION_MASK = ULONG;
pub const TRANSACTION_NOTIFY_MASK: ULONG = 0x3FFFFFFF;
pub const TRANSACTION_NOTIFY_PREPREPARE: ULONG = 0x00000001;
pub const TRANSACTION_NOTIFY_PREPARE: ULONG = 0x00000002;
pub const TRANSACTION_NOTIFY_COMMIT: ULONG = 0x00000004;
pub const TRANSACTION_NOTIFY_ROLLBACK: ULONG = 0x00000008;
pub const TRANSACTION_NOTIFY_PREPREPARE_COMPLETE: ULONG = 0x00000010;
pub const TRANSACTION_NOTIFY_PREPARE_COMPLETE: ULONG = 0x00000020;
pub const TRANSACTION_NOTIFY_COMMIT_COMPLETE: ULONG = 0x00000040;
pub const TRANSACTION_NOTIFY_ROLLBACK_COMPLETE: ULONG = 0x00000080;
pub const TRANSACTION_NOTIFY_RECOVER: ULONG = 0x00000100;
pub const TRANSACTION_NOTIFY_SINGLE_PHASE_COMMIT: ULONG = 0x00000200;
pub const TRANSACTION_NOTIFY_DELEGATE_COMMIT: ULONG = 0x00000400;
pub const TRANSACTION_NOTIFY_RECOVER_QUERY: ULONG = 0x00000800;
pub const TRANSACTION_NOTIFY_ENLIST_PREPREPARE: ULONG = 0x00001000;
pub const TRANSACTION_NOTIFY_LAST_RECOVER: ULONG = 0x00002000;
pub const TRANSACTION_NOTIFY_INDOUBT: ULONG = 0x00004000;
pub const TRANSACTION_NOTIFY_PROPAGATE_PULL: ULONG = 0x00008000;
pub const TRANSACTION_NOTIFY_PROPAGATE_PUSH: ULONG = 0x00010000;
pub const TRANSACTION_NOTIFY_MARSHAL: ULONG = 0x00020000;
pub const TRANSACTION_NOTIFY_ENLIST_MASK: ULONG = 0x00040000;
pub const TRANSACTION_NOTIFY_RM_DISCONNECTED: ULONG = 0x01000000;
pub const TRANSACTION_NOTIFY_TM_ONLINE: ULONG = 0x02000000;
pub const TRANSACTION_NOTIFY_COMMIT_REQUEST: ULONG = 0x04000000;
pub const TRANSACTION_NOTIFY_PROMOTE: ULONG = 0x08000000;
pub const TRANSACTION_NOTIFY_PROMOTE_NEW: ULONG = 0x10000000;
pub const TRANSACTION_NOTIFY_REQUEST_OUTCOME: ULONG = 0x20000000;
pub const TRANSACTION_NOTIFY_COMMIT_FINALIZE: ULONG = 0x40000000;
pub const TRANSACTIONMANAGER_OBJECT_PATH: &'static str = "\\TransactionManager\\";
pub const TRANSACTION_OBJECT_PATH: &'static str = "\\Transaction\\";
pub const ENLISTMENT_OBJECT_PATH: &'static str = "\\Enlistment\\";
pub const RESOURCE_MANAGER_OBJECT_PATH: &'static str = "\\ResourceManager\\";
STRUCT!{struct TRANSACTION_NOTIFICATION {
TransactionKey: PVOID,
TransactionNotification: ULONG,
TmVirtualClock: LARGE_INTEGER,
ArgumentLength: ULONG,
}}
pub type PTRANSACTION_NOTIFICATION = *mut TRANSACTION_NOTIFICATION;
STRUCT!{struct TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT {
EnlistmentId: GUID,
UOW: UOW,
}}
pub type PTRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT
= *mut TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT;
pub const TRANSACTION_NOTIFICATION_TM_ONLINE_FLAG_IS_CLUSTERED: ULONG = 0x1;
STRUCT!{struct TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT {
TmIdentity: GUID,
Flags: ULONG,
}}
pub type PTRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT
= *mut TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT;
pub type SAVEPOINT_ID = ULONG;
pub type PSAVEPOINT_ID = *mut ULONG;
STRUCT!{struct TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT {
SavepointId: SAVEPOINT_ID,
}}
pub type PTRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT
= *mut TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT;
STRUCT!{struct TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT {
PropagationCookie: ULONG,
UOW: GUID,
TmIdentity: GUID,
BufferLength: ULONG,
}}
pub type PTRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT
= *mut TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT;
STRUCT!{struct TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT {
MarshalCookie: ULONG,
UOW: GUID,
}}
pub type PTRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT
= *mut TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT;
pub type TRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT = TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT;
pub type PTRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT
= *mut TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT;
pub const KTM_MARSHAL_BLOB_VERSION_MAJOR: ULONG = 1;
pub const KTM_MARSHAL_BLOB_VERSION_MINOR: ULONG = 1;
pub const MAX_TRANSACTION_DESCRIPTION_LENGTH: usize = 64;
pub const MAX_RESOURCEMANAGER_DESCRIPTION_LENGTH: usize = 64;
STRUCT!{struct KCRM_MARSHAL_HEADER {
VersionMajor: ULONG,
VersionMinor: ULONG,
NumProtocols: ULONG,
Unused: ULONG,
}}
pub type PKCRM_MARSHAL_HEADER = *mut KCRM_MARSHAL_HEADER;
pub type PRKCRM_MARSHAL_HEADER = *mut KCRM_MARSHAL_HEADER;
STRUCT!{struct KCRM_TRANSACTION_BLOB {
UOW: UOW,
TmIdentity: GUID,
IsolationLevel: ULONG,
IsolationFlags: ULONG,
Timeout: ULONG,
Description: [WCHAR; MAX_TRANSACTION_DESCRIPTION_LENGTH],
}}
pub type PKCRM_TRANSACTION_BLOB = *mut KCRM_TRANSACTION_BLOB;
pub type PRKCRM_TRANSACTION_BLOB = *mut KCRM_TRANSACTION_BLOB;
STRUCT!{struct KCRM_PROTOCOL_BLOB {
ProtocolId: CRM_PROTOCOL_ID,
StaticInfoLength: ULONG,
TransactionIdInfoLength: ULONG,
Unused1: ULONG,
Unused2: ULONG,
}}
pub type PKCRM_PROTOCOL_BLOB = *mut KCRM_PROTOCOL_BLOB;
pub type PRKCRM_PROTOCOL_BLOB = *mut KCRM_PROTOCOL_BLOB;