7 #define TRANSACTIONMANAGER_QUERY_INFORMATION (0x0001)
8 #define TRANSACTIONMANAGER_SET_INFORMATION (0x0002)
9 #define TRANSACTIONMANAGER_RECOVER (0x0004)
10 #define TRANSACTIONMANAGER_RENAME (0x0008)
11 #define TRANSACTIONMANAGER_CREATE_RM (0x0010)
12 #define TRANSACTIONMANAGER_BIND_TRANSACTION (0x0020)
14 #define TRANSACTIONMANAGER_GENERIC_READ (STANDARD_RIGHTS_READ |\
15 TRANSACTIONMANAGER_QUERY_INFORMATION)
17 #define TRANSACTIONMANAGER_GENERIC_WRITE (STANDARD_RIGHTS_WRITE |\
18 TRANSACTIONMANAGER_SET_INFORMATION |\
19 TRANSACTIONMANAGER_RECOVER |\
20 TRANSACTIONMANAGER_RENAME |\
21 TRANSACTIONMANAGER_CREATE_RM)
23 #define TRANSACTIONMANAGER_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE)
25 #define TRANSACTIONMANAGER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
26 TRANSACTIONMANAGER_GENERIC_READ |\
27 TRANSACTIONMANAGER_GENERIC_WRITE |\
28 TRANSACTIONMANAGER_GENERIC_EXECUTE |\
29 TRANSACTIONMANAGER_BIND_TRANSACTION)
31 #define TRANSACTION_QUERY_INFORMATION (0x0001)
32 #define TRANSACTION_SET_INFORMATION (0x0002)
33 #define TRANSACTION_ENLIST (0x0004)
34 #define TRANSACTION_COMMIT (0x0008)
35 #define TRANSACTION_ROLLBACK (0x0010)
36 #define TRANSACTION_PROPAGATE (0x0020)
37 #define TRANSACTION_RIGHT_RESERVED1 (0x0040)
39 #define TRANSACTION_GENERIC_READ (STANDARD_RIGHTS_READ |\
40 TRANSACTION_QUERY_INFORMATION |\
43 #define TRANSACTION_GENERIC_WRITE (STANDARD_RIGHTS_WRITE |\
44 TRANSACTION_SET_INFORMATION |\
47 TRANSACTION_ROLLBACK |\
48 TRANSACTION_PROPAGATE |\
51 #define TRANSACTION_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
53 TRANSACTION_ROLLBACK |\
56 #define TRANSACTION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
57 TRANSACTION_GENERIC_READ |\
58 TRANSACTION_GENERIC_WRITE |\
59 TRANSACTION_GENERIC_EXECUTE)
61 #define TRANSACTION_RESOURCE_MANAGER_RIGHTS (TRANSACTION_GENERIC_READ |\
62 STANDARD_RIGHTS_WRITE |\
63 TRANSACTION_SET_INFORMATION |\
65 TRANSACTION_ROLLBACK |\
66 TRANSACTION_PROPAGATE |\
69 #define RESOURCEMANAGER_QUERY_INFORMATION (0x0001)
70 #define RESOURCEMANAGER_SET_INFORMATION (0x0002)
71 #define RESOURCEMANAGER_RECOVER (0x0004)
72 #define RESOURCEMANAGER_ENLIST (0x0008)
73 #define RESOURCEMANAGER_GET_NOTIFICATION (0x0010)
74 #define RESOURCEMANAGER_REGISTER_PROTOCOL (0x0020)
75 #define RESOURCEMANAGER_COMPLETE_PROPAGATION (0x0040)
77 #define RESOURCEMANAGER_GENERIC_READ (STANDARD_RIGHTS_READ |\
78 RESOURCEMANAGER_QUERY_INFORMATION |\
81 #define RESOURCEMANAGER_GENERIC_WRITE (STANDARD_RIGHTS_WRITE |\
82 RESOURCEMANAGER_SET_INFORMATION |\
83 RESOURCEMANAGER_RECOVER |\
84 RESOURCEMANAGER_ENLIST |\
85 RESOURCEMANAGER_GET_NOTIFICATION |\
86 RESOURCEMANAGER_REGISTER_PROTOCOL |\
87 RESOURCEMANAGER_COMPLETE_PROPAGATION |\
90 #define RESOURCEMANAGER_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
91 RESOURCEMANAGER_RECOVER |\
92 RESOURCEMANAGER_ENLIST |\
93 RESOURCEMANAGER_GET_NOTIFICATION |\
94 RESOURCEMANAGER_COMPLETE_PROPAGATION |\
97 #define RESOURCEMANAGER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
98 RESOURCEMANAGER_GENERIC_READ |\
99 RESOURCEMANAGER_GENERIC_WRITE |\
100 RESOURCEMANAGER_GENERIC_EXECUTE)
102 #define ENLISTMENT_QUERY_INFORMATION (0x0001)
103 #define ENLISTMENT_SET_INFORMATION (0x0002)
104 #define ENLISTMENT_RECOVER (0x0004)
105 #define ENLISTMENT_SUBORDINATE_RIGHTS (0x0008)
106 #define ENLISTMENT_SUPERIOR_RIGHTS (0x0010)
108 #define ENLISTMENT_GENERIC_READ (STANDARD_RIGHTS_READ |\
109 ENLISTMENT_QUERY_INFORMATION)
111 #define ENLISTMENT_GENERIC_WRITE (STANDARD_RIGHTS_WRITE |\
112 ENLISTMENT_SET_INFORMATION |\
113 ENLISTMENT_RECOVER |\
114 ENLISTMENT_SUBORDINATE_RIGHTS |\
115 ENLISTMENT_SUPERIOR_RIGHTS)
117 #define ENLISTMENT_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
118 ENLISTMENT_RECOVER |\
119 ENLISTMENT_SUBORDINATE_RIGHTS |\
120 ENLISTMENT_SUPERIOR_RIGHTS)
122 #define ENLISTMENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
123 ENLISTMENT_GENERIC_READ |\
124 ENLISTMENT_GENERIC_WRITE |\
125 ENLISTMENT_GENERIC_EXECUTE)
127 typedef enum _TRANSACTION_OUTCOME
{
128 TransactionOutcomeUndetermined
= 1,
129 TransactionOutcomeCommitted
,
130 TransactionOutcomeAborted
,
131 } TRANSACTION_OUTCOME
;
134 typedef enum _TRANSACTION_STATE
{
135 TransactionStateNormal
= 1,
136 TransactionStateIndoubt
,
137 TransactionStateCommittedNotify
,
141 typedef struct _TRANSACTION_BASIC_INFORMATION
{
145 } TRANSACTION_BASIC_INFORMATION
, *PTRANSACTION_BASIC_INFORMATION
;
147 typedef struct _TRANSACTIONMANAGER_BASIC_INFORMATION
{
149 LARGE_INTEGER VirtualClock
;
150 } TRANSACTIONMANAGER_BASIC_INFORMATION
, *PTRANSACTIONMANAGER_BASIC_INFORMATION
;
152 typedef struct _TRANSACTIONMANAGER_LOG_INFORMATION
{
154 } TRANSACTIONMANAGER_LOG_INFORMATION
, *PTRANSACTIONMANAGER_LOG_INFORMATION
;
156 typedef struct _TRANSACTIONMANAGER_LOGPATH_INFORMATION
{
159 } TRANSACTIONMANAGER_LOGPATH_INFORMATION
, *PTRANSACTIONMANAGER_LOGPATH_INFORMATION
;
161 typedef struct _TRANSACTIONMANAGER_RECOVERY_INFORMATION
{
162 ULONGLONG LastRecoveredLsn
;
163 } TRANSACTIONMANAGER_RECOVERY_INFORMATION
, *PTRANSACTIONMANAGER_RECOVERY_INFORMATION
;
165 typedef struct _TRANSACTION_PROPERTIES_INFORMATION
{
166 ULONG IsolationLevel
;
167 ULONG IsolationFlags
;
168 LARGE_INTEGER Timeout
;
170 ULONG DescriptionLength
;
171 WCHAR Description
[1];
172 } TRANSACTION_PROPERTIES_INFORMATION
, *PTRANSACTION_PROPERTIES_INFORMATION
;
174 typedef struct _TRANSACTION_BIND_INFORMATION
{
176 } TRANSACTION_BIND_INFORMATION
, *PTRANSACTION_BIND_INFORMATION
;
178 typedef struct _TRANSACTION_ENLISTMENT_PAIR
{
180 GUID ResourceManagerId
;
181 } TRANSACTION_ENLISTMENT_PAIR
, *PTRANSACTION_ENLISTMENT_PAIR
;
183 typedef struct _TRANSACTION_ENLISTMENTS_INFORMATION
{
184 ULONG NumberOfEnlistments
;
185 TRANSACTION_ENLISTMENT_PAIR EnlistmentPair
[1];
186 } TRANSACTION_ENLISTMENTS_INFORMATION
, *PTRANSACTION_ENLISTMENTS_INFORMATION
;
188 typedef struct _TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION
{
189 TRANSACTION_ENLISTMENT_PAIR SuperiorEnlistmentPair
;
190 } TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION
, *PTRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION
;
192 typedef struct _RESOURCEMANAGER_BASIC_INFORMATION
{
193 GUID ResourceManagerId
;
194 ULONG DescriptionLength
;
195 WCHAR Description
[1];
196 } RESOURCEMANAGER_BASIC_INFORMATION
, *PRESOURCEMANAGER_BASIC_INFORMATION
;
198 typedef struct _RESOURCEMANAGER_COMPLETION_INFORMATION
{
199 HANDLE IoCompletionPortHandle
;
200 ULONG_PTR CompletionKey
;
201 } RESOURCEMANAGER_COMPLETION_INFORMATION
, *PRESOURCEMANAGER_COMPLETION_INFORMATION
;
203 typedef enum _KTMOBJECT_TYPE
{
204 KTMOBJECT_TRANSACTION
,
205 KTMOBJECT_TRANSACTION_MANAGER
,
206 KTMOBJECT_RESOURCE_MANAGER
,
207 KTMOBJECT_ENLISTMENT
,
209 } KTMOBJECT_TYPE
, *PKTMOBJECT_TYPE
;
211 typedef struct _KTMOBJECT_CURSOR
{
215 } KTMOBJECT_CURSOR
, *PKTMOBJECT_CURSOR
;
217 typedef enum _TRANSACTION_INFORMATION_CLASS
{
218 TransactionBasicInformation
,
219 TransactionPropertiesInformation
,
220 TransactionEnlistmentInformation
,
221 TransactionSuperiorEnlistmentInformation
222 } TRANSACTION_INFORMATION_CLASS
;
224 typedef enum _TRANSACTIONMANAGER_INFORMATION_CLASS
{
225 TransactionManagerBasicInformation
,
226 TransactionManagerLogInformation
,
227 TransactionManagerLogPathInformation
,
228 TransactionManagerRecoveryInformation
= 4
229 } TRANSACTIONMANAGER_INFORMATION_CLASS
;
231 typedef enum _RESOURCEMANAGER_INFORMATION_CLASS
{
232 ResourceManagerBasicInformation
,
233 ResourceManagerCompletionInformation
,
234 } RESOURCEMANAGER_INFORMATION_CLASS
;
236 typedef struct _ENLISTMENT_BASIC_INFORMATION
{
239 GUID ResourceManagerId
;
240 } ENLISTMENT_BASIC_INFORMATION
, *PENLISTMENT_BASIC_INFORMATION
;
242 typedef struct _ENLISTMENT_CRM_INFORMATION
{
243 GUID CrmTransactionManagerId
;
244 GUID CrmResourceManagerId
;
245 GUID CrmEnlistmentId
;
246 } ENLISTMENT_CRM_INFORMATION
, *PENLISTMENT_CRM_INFORMATION
;
248 typedef enum _ENLISTMENT_INFORMATION_CLASS
{
249 EnlistmentBasicInformation
,
250 EnlistmentRecoveryInformation
,
251 EnlistmentCrmInformation
252 } ENLISTMENT_INFORMATION_CLASS
;
254 typedef struct _TRANSACTION_LIST_ENTRY
{
255 #if defined(__cplusplus)
260 } TRANSACTION_LIST_ENTRY
, *PTRANSACTION_LIST_ENTRY
;
262 typedef struct _TRANSACTION_LIST_INFORMATION
{
263 ULONG NumberOfTransactions
;
264 TRANSACTION_LIST_ENTRY TransactionInformation
[1];
265 } TRANSACTION_LIST_INFORMATION
, *PTRANSACTION_LIST_INFORMATION
;
268 (NTAPI
*PFN_NT_CREATE_TRANSACTION
)(
269 OUT PHANDLE TransactionHandle
,
270 IN ACCESS_MASK DesiredAccess
,
271 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
272 IN LPGUID Uow OPTIONAL
,
273 IN HANDLE TmHandle OPTIONAL
,
274 IN ULONG CreateOptions OPTIONAL
,
275 IN ULONG IsolationLevel OPTIONAL
,
276 IN ULONG IsolationFlags OPTIONAL
,
277 IN PLARGE_INTEGER Timeout OPTIONAL
,
278 IN PUNICODE_STRING Description OPTIONAL
);
281 (NTAPI
*PFN_NT_OPEN_TRANSACTION
)(
282 OUT PHANDLE TransactionHandle
,
283 IN ACCESS_MASK DesiredAccess
,
284 IN POBJECT_ATTRIBUTES ObjectAttributes
,
285 IN LPGUID Uow OPTIONAL
,
286 IN HANDLE TmHandle OPTIONAL
);
289 (NTAPI
*PFN_NT_QUERY_INFORMATION_TRANSACTION
)(
290 IN HANDLE TransactionHandle
,
291 IN TRANSACTION_INFORMATION_CLASS TransactionInformationClass
,
292 OUT PVOID TransactionInformation
,
293 IN ULONG TransactionInformationLength
,
294 OUT PULONG ReturnLength OPTIONAL
);
297 (NTAPI
*PFN_NT_SET_INFORMATION_TRANSACTION
)(
298 IN HANDLE TransactionHandle
,
299 IN TRANSACTION_INFORMATION_CLASS TransactionInformationClass
,
300 IN PVOID TransactionInformation
,
301 IN ULONG TransactionInformationLength
);
304 (NTAPI
*PFN_NT_COMMIT_TRANSACTION
)(
305 IN HANDLE TransactionHandle
,
309 (NTAPI
*PFN_NT_ROLLBACK_TRANSACTION
)(
310 IN HANDLE TransactionHandle
,
313 #if (NTDDI_VERSION >= NTDDI_VISTA)
318 NtCreateTransactionManager(
319 OUT PHANDLE TmHandle
,
320 IN ACCESS_MASK DesiredAccess
,
321 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
322 IN PUNICODE_STRING LogFileName OPTIONAL
,
323 IN ULONG CreateOptions OPTIONAL
,
324 IN ULONG CommitStrength OPTIONAL
);
329 NtOpenTransactionManager(
330 OUT PHANDLE TmHandle
,
331 IN ACCESS_MASK DesiredAccess
,
332 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
333 IN PUNICODE_STRING LogFileName OPTIONAL
,
334 IN LPGUID TmIdentity OPTIONAL
,
335 IN ULONG OpenOptions OPTIONAL
);
340 NtRenameTransactionManager(
341 IN PUNICODE_STRING LogFileName
,
342 IN LPGUID ExistingTransactionManagerGuid
);
347 NtRollforwardTransactionManager(
348 IN HANDLE TransactionManagerHandle
,
349 IN PLARGE_INTEGER TmVirtualClock OPTIONAL
);
354 NtRecoverTransactionManager(
355 IN HANDLE TransactionManagerHandle
);
360 NtQueryInformationTransactionManager(
361 IN HANDLE TransactionManagerHandle
,
362 IN TRANSACTIONMANAGER_INFORMATION_CLASS TransactionManagerInformationClass
,
363 OUT PVOID TransactionManagerInformation
,
364 IN ULONG TransactionManagerInformationLength
,
365 OUT PULONG ReturnLength
);
370 NtSetInformationTransactionManager(
371 IN HANDLE TmHandle OPTIONAL
,
372 IN TRANSACTIONMANAGER_INFORMATION_CLASS TransactionManagerInformationClass
,
373 IN PVOID TransactionManagerInformation
,
374 IN ULONG TransactionManagerInformationLength
);
379 NtEnumerateTransactionObject(
380 IN HANDLE RootObjectHandle OPTIONAL
,
381 IN KTMOBJECT_TYPE QueryType
,
382 IN OUT PKTMOBJECT_CURSOR ObjectCursor
,
383 IN ULONG ObjectCursorLength
,
384 OUT PULONG ReturnLength
);
390 OUT PHANDLE TransactionHandle
,
391 IN ACCESS_MASK DesiredAccess
,
392 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
393 IN LPGUID Uow OPTIONAL
,
394 IN HANDLE TmHandle OPTIONAL
,
395 IN ULONG CreateOptions OPTIONAL
,
396 IN ULONG IsolationLevel OPTIONAL
,
397 IN ULONG IsolationFlags OPTIONAL
,
398 IN PLARGE_INTEGER Timeout OPTIONAL
,
399 IN PUNICODE_STRING Description OPTIONAL
);
405 OUT PHANDLE TransactionHandle
,
406 IN ACCESS_MASK DesiredAccess
,
407 IN POBJECT_ATTRIBUTES ObjectAttributes
,
409 IN HANDLE TmHandle OPTIONAL
);
414 NtQueryInformationTransaction(
415 IN HANDLE TransactionHandle
,
416 IN TRANSACTION_INFORMATION_CLASS TransactionInformationClass
,
417 OUT PVOID TransactionInformation
,
418 IN ULONG TransactionInformationLength
,
419 OUT PULONG ReturnLength OPTIONAL
);
424 NtSetInformationTransaction(
425 IN HANDLE TransactionHandle
,
426 IN TRANSACTION_INFORMATION_CLASS TransactionInformationClass
,
427 IN PVOID TransactionInformation
,
428 IN ULONG TransactionInformationLength
);
434 IN HANDLE TransactionHandle
,
440 NtRollbackTransaction(
441 IN HANDLE TransactionHandle
,
448 OUT PHANDLE EnlistmentHandle
,
449 IN ACCESS_MASK DesiredAccess
,
450 IN HANDLE ResourceManagerHandle
,
451 IN HANDLE TransactionHandle
,
452 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
453 IN ULONG CreateOptions OPTIONAL
,
454 IN NOTIFICATION_MASK NotificationMask
,
455 IN PVOID EnlistmentKey OPTIONAL
);
461 OUT PHANDLE EnlistmentHandle
,
462 IN ACCESS_MASK DesiredAccess
,
463 IN HANDLE ResourceManagerHandle
,
464 IN LPGUID EnlistmentGuid
,
465 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
);
470 NtQueryInformationEnlistment(
471 IN HANDLE EnlistmentHandle
,
472 IN ENLISTMENT_INFORMATION_CLASS EnlistmentInformationClass
,
473 OUT PVOID EnlistmentInformation
,
474 IN ULONG EnlistmentInformationLength
,
475 OUT PULONG ReturnLength
);
480 NtSetInformationEnlistment(
481 IN HANDLE EnlistmentHandle OPTIONAL
,
482 IN ENLISTMENT_INFORMATION_CLASS EnlistmentInformationClass
,
483 IN PVOID EnlistmentInformation
,
484 IN ULONG EnlistmentInformationLength
);
490 IN HANDLE EnlistmentHandle
,
491 IN PVOID EnlistmentKey OPTIONAL
);
496 NtPrePrepareEnlistment(
497 IN HANDLE EnlistmentHandle
,
498 IN PLARGE_INTEGER TmVirtualClock OPTIONAL
);
504 IN HANDLE EnlistmentHandle
,
505 IN PLARGE_INTEGER TmVirtualClock OPTIONAL
);
511 IN HANDLE EnlistmentHandle
,
512 IN PLARGE_INTEGER TmVirtualClock OPTIONAL
);
517 NtRollbackEnlistment(
518 IN HANDLE EnlistmentHandle
,
519 IN PLARGE_INTEGER TmVirtualClock OPTIONAL
);
524 NtPrePrepareComplete(
525 IN HANDLE EnlistmentHandle
,
526 IN PLARGE_INTEGER TmVirtualClock OPTIONAL
);
532 IN HANDLE EnlistmentHandle
,
533 IN PLARGE_INTEGER TmVirtualClock OPTIONAL
);
539 IN HANDLE EnlistmentHandle
,
540 IN PLARGE_INTEGER TmVirtualClock OPTIONAL
);
545 NtReadOnlyEnlistment(
546 IN HANDLE EnlistmentHandle
,
547 IN PLARGE_INTEGER TmVirtualClock OPTIONAL
);
553 IN HANDLE EnlistmentHandle
,
554 IN PLARGE_INTEGER TmVirtualClock OPTIONAL
);
560 IN HANDLE EnlistmentHandle
,
561 IN PLARGE_INTEGER TmVirtualClock OPTIONAL
);
566 NtCreateResourceManager(
567 OUT PHANDLE ResourceManagerHandle
,
568 IN ACCESS_MASK DesiredAccess
,
571 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
572 IN ULONG CreateOptions OPTIONAL
,
573 IN PUNICODE_STRING Description OPTIONAL
);
578 NtOpenResourceManager(
579 OUT PHANDLE ResourceManagerHandle
,
580 IN ACCESS_MASK DesiredAccess
,
582 IN LPGUID ResourceManagerGuid OPTIONAL
,
583 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
);
588 NtRecoverResourceManager(
589 IN HANDLE ResourceManagerHandle
);
594 NtGetNotificationResourceManager(
595 IN HANDLE ResourceManagerHandle
,
596 OUT PTRANSACTION_NOTIFICATION TransactionNotification
,
597 IN ULONG NotificationLength
,
598 IN PLARGE_INTEGER Timeout OPTIONAL
,
599 OUT PULONG ReturnLength OPTIONAL
,
600 IN ULONG Asynchronous
,
601 IN ULONG_PTR AsynchronousContext OPTIONAL
);
606 NtQueryInformationResourceManager(
607 IN HANDLE ResourceManagerHandle
,
608 IN RESOURCEMANAGER_INFORMATION_CLASS ResourceManagerInformationClass
,
609 OUT PVOID ResourceManagerInformation
,
610 IN ULONG ResourceManagerInformationLength
,
611 OUT PULONG ReturnLength OPTIONAL
);
616 NtSetInformationResourceManager(
617 IN HANDLE ResourceManagerHandle
,
618 IN RESOURCEMANAGER_INFORMATION_CLASS ResourceManagerInformationClass
,
619 IN PVOID ResourceManagerInformation
,
620 IN ULONG ResourceManagerInformationLength
);
625 NtRegisterProtocolAddressInformation(
626 IN HANDLE ResourceManager
,
627 IN PCRM_PROTOCOL_ID ProtocolId
,
628 IN ULONG ProtocolInformationSize
,
629 IN PVOID ProtocolInformation
,
630 IN ULONG CreateOptions OPTIONAL
);
635 NtPropagationComplete(
636 IN HANDLE ResourceManagerHandle
,
637 IN ULONG RequestCookie
,
638 IN ULONG BufferLength
,
645 IN HANDLE ResourceManagerHandle
,
646 IN ULONG RequestCookie
,
647 IN NTSTATUS PropStatus
);
649 #endif /* NTDDI_VERSION >= NTDDI_VISTA */
651 #endif /* !_NTTMAPI_ */