| use winapi::shared::basetsd::ULONG_PTR; |
| use winapi::shared::guiddef::LPGUID; |
| use winapi::shared::ktmtypes::{NOTIFICATION_MASK, PCRM_PROTOCOL_ID, PTRANSACTION_NOTIFICATION}; |
| use winapi::shared::ntdef::{ |
| BOOLEAN, HANDLE, NTSTATUS, PHANDLE, PLARGE_INTEGER, POBJECT_ATTRIBUTES, PULONG, |
| PUNICODE_STRING, PVOID, ULONG, |
| }; |
| use winapi::um::winnt::{ |
| ACCESS_MASK, ENLISTMENT_INFORMATION_CLASS, KTMOBJECT_TYPE, PKTMOBJECT_CURSOR, |
| RESOURCEMANAGER_INFORMATION_CLASS, TRANSACTIONMANAGER_INFORMATION_CLASS, |
| TRANSACTION_INFORMATION_CLASS, |
| }; |
| EXTERN!{extern "system" { |
| fn NtCreateTransactionManager( |
| TmHandle: PHANDLE, |
| DesiredAccess: ACCESS_MASK, |
| ObjectAttributes: POBJECT_ATTRIBUTES, |
| LogFileName: PUNICODE_STRING, |
| CreateOptions: ULONG, |
| CommitStrength: ULONG, |
| ) -> NTSTATUS; |
| fn NtOpenTransactionManager( |
| TmHandle: PHANDLE, |
| DesiredAccess: ACCESS_MASK, |
| ObjectAttributes: POBJECT_ATTRIBUTES, |
| LogFileName: PUNICODE_STRING, |
| TmIdentity: LPGUID, |
| OpenOptions: ULONG, |
| ) -> NTSTATUS; |
| fn NtRenameTransactionManager( |
| LogFileName: PUNICODE_STRING, |
| ExistingTransactionManagerGuid: LPGUID, |
| ) -> NTSTATUS; |
| fn NtRollforwardTransactionManager( |
| TransactionManagerHandle: HANDLE, |
| TmVirtualClock: PLARGE_INTEGER, |
| ) -> NTSTATUS; |
| fn NtRecoverTransactionManager( |
| TransactionManagerHandle: HANDLE, |
| ) -> NTSTATUS; |
| fn NtQueryInformationTransactionManager( |
| TransactionManagerHandle: HANDLE, |
| TransactionManagerInformationClass: TRANSACTIONMANAGER_INFORMATION_CLASS, |
| TransactionManagerInformation: PVOID, |
| TransactionManagerInformationLength: ULONG, |
| ReturnLength: PULONG, |
| ) -> NTSTATUS; |
| fn NtSetInformationTransactionManager( |
| TmHandle: HANDLE, |
| TransactionManagerInformationClass: TRANSACTIONMANAGER_INFORMATION_CLASS, |
| TransactionManagerInformation: PVOID, |
| TransactionManagerInformationLength: ULONG, |
| ) -> NTSTATUS; |
| fn NtEnumerateTransactionObject( |
| RootObjectHandle: HANDLE, |
| QueryType: KTMOBJECT_TYPE, |
| ObjectCursor: PKTMOBJECT_CURSOR, |
| ObjectCursorLength: ULONG, |
| ReturnLength: PULONG, |
| ) -> NTSTATUS; |
| fn NtCreateTransaction( |
| TransactionHandle: PHANDLE, |
| DesiredAccess: ACCESS_MASK, |
| ObjectAttributes: POBJECT_ATTRIBUTES, |
| Uow: LPGUID, |
| TmHandle: HANDLE, |
| CreateOptions: ULONG, |
| IsolationLevel: ULONG, |
| IsolationFlags: ULONG, |
| Timeout: PLARGE_INTEGER, |
| Description: PUNICODE_STRING, |
| ) -> NTSTATUS; |
| fn NtOpenTransaction( |
| TransactionHandle: PHANDLE, |
| DesiredAccess: ACCESS_MASK, |
| ObjectAttributes: POBJECT_ATTRIBUTES, |
| Uow: LPGUID, |
| TmHandle: HANDLE, |
| ) -> NTSTATUS; |
| fn NtQueryInformationTransaction( |
| TransactionHandle: HANDLE, |
| TransactionInformationClass: TRANSACTION_INFORMATION_CLASS, |
| TransactionInformation: PVOID, |
| TransactionInformationLength: ULONG, |
| ReturnLength: PULONG, |
| ) -> NTSTATUS; |
| fn NtSetInformationTransaction( |
| TransactionHandle: HANDLE, |
| TransactionInformationClass: TRANSACTION_INFORMATION_CLASS, |
| TransactionInformation: PVOID, |
| TransactionInformationLength: ULONG, |
| ) -> NTSTATUS; |
| fn NtCommitTransaction( |
| TransactionHandle: HANDLE, |
| Wait: BOOLEAN, |
| ) -> NTSTATUS; |
| fn NtRollbackTransaction( |
| TransactionHandle: HANDLE, |
| Wait: BOOLEAN, |
| ) -> NTSTATUS; |
| fn NtCreateEnlistment( |
| EnlistmentHandle: PHANDLE, |
| DesiredAccess: ACCESS_MASK, |
| ResourceManagerHandle: HANDLE, |
| TransactionHandle: HANDLE, |
| ObjectAttributes: POBJECT_ATTRIBUTES, |
| CreateOptions: ULONG, |
| NotificationMask: NOTIFICATION_MASK, |
| EnlistmentKey: PVOID, |
| ) -> NTSTATUS; |
| fn NtOpenEnlistment( |
| EnlistmentHandle: PHANDLE, |
| DesiredAccess: ACCESS_MASK, |
| ResourceManagerHandle: HANDLE, |
| EnlistmentGuid: LPGUID, |
| ObjectAttributes: POBJECT_ATTRIBUTES, |
| ) -> NTSTATUS; |
| fn NtQueryInformationEnlistment( |
| EnlistmentHandle: HANDLE, |
| EnlistmentInformationClass: ENLISTMENT_INFORMATION_CLASS, |
| EnlistmentInformation: PVOID, |
| EnlistmentInformationLength: ULONG, |
| ReturnLength: PULONG, |
| ) -> NTSTATUS; |
| fn NtSetInformationEnlistment( |
| EnlistmentHandle: HANDLE, |
| EnlistmentInformationClass: ENLISTMENT_INFORMATION_CLASS, |
| EnlistmentInformation: PVOID, |
| EnlistmentInformationLength: ULONG, |
| ) -> NTSTATUS; |
| fn NtRecoverEnlistment( |
| EnlistmentHandle: HANDLE, |
| EnlistmentKey: PVOID, |
| ) -> NTSTATUS; |
| fn NtPrePrepareEnlistment( |
| EnlistmentHandle: HANDLE, |
| TmVirtualClock: PLARGE_INTEGER, |
| ) -> NTSTATUS; |
| fn NtPrepareEnlistment( |
| EnlistmentHandle: HANDLE, |
| TmVirtualClock: PLARGE_INTEGER, |
| ) -> NTSTATUS; |
| fn NtCommitEnlistment( |
| EnlistmentHandle: HANDLE, |
| TmVirtualClock: PLARGE_INTEGER, |
| ) -> NTSTATUS; |
| fn NtRollbackEnlistment( |
| EnlistmentHandle: HANDLE, |
| TmVirtualClock: PLARGE_INTEGER, |
| ) -> NTSTATUS; |
| fn NtPrePrepareComplete( |
| EnlistmentHandle: HANDLE, |
| TmVirtualClock: PLARGE_INTEGER, |
| ) -> NTSTATUS; |
| fn NtPrepareComplete( |
| EnlistmentHandle: HANDLE, |
| TmVirtualClock: PLARGE_INTEGER, |
| ) -> NTSTATUS; |
| fn NtCommitComplete( |
| EnlistmentHandle: HANDLE, |
| TmVirtualClock: PLARGE_INTEGER, |
| ) -> NTSTATUS; |
| fn NtReadOnlyEnlistment( |
| EnlistmentHandle: HANDLE, |
| TmVirtualClock: PLARGE_INTEGER, |
| ) -> NTSTATUS; |
| fn NtRollbackComplete( |
| EnlistmentHandle: HANDLE, |
| TmVirtualClock: PLARGE_INTEGER, |
| ) -> NTSTATUS; |
| fn NtSinglePhaseReject( |
| EnlistmentHandle: HANDLE, |
| TmVirtualClock: PLARGE_INTEGER, |
| ) -> NTSTATUS; |
| fn NtCreateResourceManager( |
| ResourceManagerHandle: PHANDLE, |
| DesiredAccess: ACCESS_MASK, |
| TmHandle: HANDLE, |
| RmGuid: LPGUID, |
| ObjectAttributes: POBJECT_ATTRIBUTES, |
| CreateOptions: ULONG, |
| Description: PUNICODE_STRING, |
| ) -> NTSTATUS; |
| fn NtOpenResourceManager( |
| ResourceManagerHandle: PHANDLE, |
| DesiredAccess: ACCESS_MASK, |
| TmHandle: HANDLE, |
| ResourceManagerGuid: LPGUID, |
| ObjectAttributes: POBJECT_ATTRIBUTES, |
| ) -> NTSTATUS; |
| fn NtRecoverResourceManager( |
| ResourceManagerHandle: HANDLE, |
| ) -> NTSTATUS; |
| fn NtGetNotificationResourceManager( |
| ResourceManagerHandle: HANDLE, |
| TransactionNotification: PTRANSACTION_NOTIFICATION, |
| NotificationLength: ULONG, |
| Timeout: PLARGE_INTEGER, |
| ReturnLength: PULONG, |
| Asynchronous: ULONG, |
| AsynchronousContext: ULONG_PTR, |
| ) -> NTSTATUS; |
| fn NtQueryInformationResourceManager( |
| ResourceManagerHandle: HANDLE, |
| ResourceManagerInformationClass: RESOURCEMANAGER_INFORMATION_CLASS, |
| ResourceManagerInformation: PVOID, |
| ResourceManagerInformationLength: ULONG, |
| ReturnLength: PULONG, |
| ) -> NTSTATUS; |
| fn NtSetInformationResourceManager( |
| ResourceManagerHandle: HANDLE, |
| ResourceManagerInformationClass: RESOURCEMANAGER_INFORMATION_CLASS, |
| ResourceManagerInformation: PVOID, |
| ResourceManagerInformationLength: ULONG, |
| ) -> NTSTATUS; |
| fn NtRegisterProtocolAddressInformation( |
| ResourceManager: HANDLE, |
| ProtocolId: PCRM_PROTOCOL_ID, |
| ProtocolInformationSize: ULONG, |
| ProtocolInformation: PVOID, |
| CreateOptions: ULONG, |
| ) -> NTSTATUS; |
| fn NtPropagationComplete( |
| ResourceManagerHandle: HANDLE, |
| RequestCookie: ULONG, |
| BufferLength: ULONG, |
| Buffer: PVOID, |
| ) -> NTSTATUS; |
| fn NtPropagationFailed( |
| ResourceManagerHandle: HANDLE, |
| RequestCookie: ULONG, |
| PropStatus: NTSTATUS, |
| ) -> NTSTATUS; |
| fn NtFreezeTransactions( |
| FreezeTimeout: PLARGE_INTEGER, |
| ThawTimeout: PLARGE_INTEGER, |
| ) -> NTSTATUS; |
| fn NtThawTransactions() -> NTSTATUS; |
| }} |