xref: /reactos/sdk/include/xdk/nttmapi.h (revision 8a978a17)
1 #ifndef _NTTMAPI_
2 #define _NTTMAPI_
3 
4 #include <ktmtypes.h>
5 
6 #define TRANSACTIONMANAGER_QUERY_INFORMATION     (0x0001)
7 #define TRANSACTIONMANAGER_SET_INFORMATION       (0x0002)
8 #define TRANSACTIONMANAGER_RECOVER               (0x0004)
9 #define TRANSACTIONMANAGER_RENAME                (0x0008)
10 #define TRANSACTIONMANAGER_CREATE_RM             (0x0010)
11 #define TRANSACTIONMANAGER_BIND_TRANSACTION      (0x0020)
12 
13 #define TRANSACTIONMANAGER_GENERIC_READ            (STANDARD_RIGHTS_READ            |\
14                                                     TRANSACTIONMANAGER_QUERY_INFORMATION)
15 
16 #define TRANSACTIONMANAGER_GENERIC_WRITE           (STANDARD_RIGHTS_WRITE           |\
17                                                     TRANSACTIONMANAGER_SET_INFORMATION     |\
18                                                     TRANSACTIONMANAGER_RECOVER             |\
19                                                     TRANSACTIONMANAGER_RENAME              |\
20                                                     TRANSACTIONMANAGER_CREATE_RM)
21 
22 #define TRANSACTIONMANAGER_GENERIC_EXECUTE         (STANDARD_RIGHTS_EXECUTE)
23 
24 #define TRANSACTIONMANAGER_ALL_ACCESS              (STANDARD_RIGHTS_REQUIRED        |\
25                                                     TRANSACTIONMANAGER_GENERIC_READ        |\
26                                                     TRANSACTIONMANAGER_GENERIC_WRITE       |\
27                                                     TRANSACTIONMANAGER_GENERIC_EXECUTE     |\
28                                                     TRANSACTIONMANAGER_BIND_TRANSACTION)
29 
30 #define TRANSACTION_QUERY_INFORMATION     (0x0001)
31 #define TRANSACTION_SET_INFORMATION       (0x0002)
32 #define TRANSACTION_ENLIST                (0x0004)
33 #define TRANSACTION_COMMIT                (0x0008)
34 #define TRANSACTION_ROLLBACK              (0x0010)
35 #define TRANSACTION_PROPAGATE             (0x0020)
36 #define TRANSACTION_RIGHT_RESERVED1       (0x0040)
37 
38 #define TRANSACTION_GENERIC_READ            (STANDARD_RIGHTS_READ            |\
39                                              TRANSACTION_QUERY_INFORMATION   |\
40                                              SYNCHRONIZE)
41 
42 #define TRANSACTION_GENERIC_WRITE           (STANDARD_RIGHTS_WRITE           |\
43                                              TRANSACTION_SET_INFORMATION     |\
44                                              TRANSACTION_COMMIT              |\
45                                              TRANSACTION_ENLIST              |\
46                                              TRANSACTION_ROLLBACK            |\
47                                              TRANSACTION_PROPAGATE           |\
48                                              SYNCHRONIZE)
49 
50 #define TRANSACTION_GENERIC_EXECUTE         (STANDARD_RIGHTS_EXECUTE         |\
51                                              TRANSACTION_COMMIT              |\
52                                              TRANSACTION_ROLLBACK            |\
53                                              SYNCHRONIZE)
54 
55 #define TRANSACTION_ALL_ACCESS              (STANDARD_RIGHTS_REQUIRED        |\
56                                              TRANSACTION_GENERIC_READ        |\
57                                              TRANSACTION_GENERIC_WRITE       |\
58                                              TRANSACTION_GENERIC_EXECUTE)
59 
60 #define TRANSACTION_RESOURCE_MANAGER_RIGHTS (TRANSACTION_GENERIC_READ        |\
61                                              STANDARD_RIGHTS_WRITE           |\
62                                              TRANSACTION_SET_INFORMATION     |\
63                                              TRANSACTION_ENLIST              |\
64                                              TRANSACTION_ROLLBACK            |\
65                                              TRANSACTION_PROPAGATE           |\
66                                              SYNCHRONIZE)
67 
68 #define RESOURCEMANAGER_QUERY_INFORMATION        (0x0001)
69 #define RESOURCEMANAGER_SET_INFORMATION          (0x0002)
70 #define RESOURCEMANAGER_RECOVER                  (0x0004)
71 #define RESOURCEMANAGER_ENLIST                   (0x0008)
72 #define RESOURCEMANAGER_GET_NOTIFICATION         (0x0010)
73 #define RESOURCEMANAGER_REGISTER_PROTOCOL        (0x0020)
74 #define RESOURCEMANAGER_COMPLETE_PROPAGATION     (0x0040)
75 
76 #define RESOURCEMANAGER_GENERIC_READ        (STANDARD_RIGHTS_READ                 |\
77                                              RESOURCEMANAGER_QUERY_INFORMATION    |\
78                                              SYNCHRONIZE)
79 
80 #define RESOURCEMANAGER_GENERIC_WRITE       (STANDARD_RIGHTS_WRITE                |\
81                                              RESOURCEMANAGER_SET_INFORMATION      |\
82                                              RESOURCEMANAGER_RECOVER              |\
83                                              RESOURCEMANAGER_ENLIST               |\
84                                              RESOURCEMANAGER_GET_NOTIFICATION     |\
85                                              RESOURCEMANAGER_REGISTER_PROTOCOL    |\
86                                              RESOURCEMANAGER_COMPLETE_PROPAGATION |\
87                                              SYNCHRONIZE)
88 
89 #define RESOURCEMANAGER_GENERIC_EXECUTE     (STANDARD_RIGHTS_EXECUTE              |\
90                                              RESOURCEMANAGER_RECOVER              |\
91                                              RESOURCEMANAGER_ENLIST               |\
92                                              RESOURCEMANAGER_GET_NOTIFICATION     |\
93                                              RESOURCEMANAGER_COMPLETE_PROPAGATION |\
94                                              SYNCHRONIZE)
95 
96 #define RESOURCEMANAGER_ALL_ACCESS          (STANDARD_RIGHTS_REQUIRED             |\
97                                              RESOURCEMANAGER_GENERIC_READ         |\
98                                              RESOURCEMANAGER_GENERIC_WRITE        |\
99                                              RESOURCEMANAGER_GENERIC_EXECUTE)
100 
101 #define ENLISTMENT_QUERY_INFORMATION             (0x0001)
102 #define ENLISTMENT_SET_INFORMATION               (0x0002)
103 #define ENLISTMENT_RECOVER                       (0x0004)
104 #define ENLISTMENT_SUBORDINATE_RIGHTS            (0x0008)
105 #define ENLISTMENT_SUPERIOR_RIGHTS               (0x0010)
106 
107 #define ENLISTMENT_GENERIC_READ        (STANDARD_RIGHTS_READ           |\
108                                         ENLISTMENT_QUERY_INFORMATION)
109 
110 #define ENLISTMENT_GENERIC_WRITE       (STANDARD_RIGHTS_WRITE          |\
111                                         ENLISTMENT_SET_INFORMATION     |\
112                                         ENLISTMENT_RECOVER             |\
113                                         ENLISTMENT_SUBORDINATE_RIGHTS  |\
114                                         ENLISTMENT_SUPERIOR_RIGHTS)
115 
116 #define ENLISTMENT_GENERIC_EXECUTE     (STANDARD_RIGHTS_EXECUTE        |\
117                                         ENLISTMENT_RECOVER             |\
118                                         ENLISTMENT_SUBORDINATE_RIGHTS  |\
119                                         ENLISTMENT_SUPERIOR_RIGHTS)
120 
121 #define ENLISTMENT_ALL_ACCESS          (STANDARD_RIGHTS_REQUIRED       |\
122                                         ENLISTMENT_GENERIC_READ        |\
123                                         ENLISTMENT_GENERIC_WRITE       |\
124                                         ENLISTMENT_GENERIC_EXECUTE)
125 
126 typedef enum _TRANSACTION_OUTCOME {
127   TransactionOutcomeUndetermined = 1,
128   TransactionOutcomeCommitted,
129   TransactionOutcomeAborted,
130 } TRANSACTION_OUTCOME;
131 
132 
133 typedef enum _TRANSACTION_STATE {
134   TransactionStateNormal = 1,
135   TransactionStateIndoubt,
136   TransactionStateCommittedNotify,
137 } TRANSACTION_STATE;
138 
139 
140 typedef struct _TRANSACTION_BASIC_INFORMATION {
141   GUID TransactionId;
142   ULONG State;
143   ULONG Outcome;
144 } TRANSACTION_BASIC_INFORMATION, *PTRANSACTION_BASIC_INFORMATION;
145 
146 typedef struct _TRANSACTIONMANAGER_BASIC_INFORMATION {
147   GUID TmIdentity;
148   LARGE_INTEGER VirtualClock;
149 } TRANSACTIONMANAGER_BASIC_INFORMATION, *PTRANSACTIONMANAGER_BASIC_INFORMATION;
150 
151 typedef struct _TRANSACTIONMANAGER_LOG_INFORMATION {
152   GUID LogIdentity;
153 } TRANSACTIONMANAGER_LOG_INFORMATION, *PTRANSACTIONMANAGER_LOG_INFORMATION;
154 
155 typedef struct _TRANSACTIONMANAGER_LOGPATH_INFORMATION {
156   ULONG LogPathLength;
157   _Field_size_(LogPathLength) WCHAR LogPath[1];
158 } TRANSACTIONMANAGER_LOGPATH_INFORMATION, *PTRANSACTIONMANAGER_LOGPATH_INFORMATION;
159 
160 typedef struct _TRANSACTIONMANAGER_RECOVERY_INFORMATION {
161   ULONGLONG LastRecoveredLsn;
162 } TRANSACTIONMANAGER_RECOVERY_INFORMATION, *PTRANSACTIONMANAGER_RECOVERY_INFORMATION;
163 
164 typedef struct _TRANSACTION_PROPERTIES_INFORMATION {
165   ULONG IsolationLevel;
166   ULONG IsolationFlags;
167   LARGE_INTEGER Timeout;
168   ULONG Outcome;
169   ULONG DescriptionLength;
170   WCHAR Description[1];
171 } TRANSACTION_PROPERTIES_INFORMATION, *PTRANSACTION_PROPERTIES_INFORMATION;
172 
173 typedef struct _TRANSACTION_BIND_INFORMATION {
174   HANDLE TmHandle;
175 } TRANSACTION_BIND_INFORMATION, *PTRANSACTION_BIND_INFORMATION;
176 
177 typedef struct _TRANSACTION_ENLISTMENT_PAIR {
178   GUID EnlistmentId;
179   GUID ResourceManagerId;
180 } TRANSACTION_ENLISTMENT_PAIR, *PTRANSACTION_ENLISTMENT_PAIR;
181 
182 typedef struct _TRANSACTION_ENLISTMENTS_INFORMATION {
183   ULONG NumberOfEnlistments;
184   TRANSACTION_ENLISTMENT_PAIR EnlistmentPair[1];
185 } TRANSACTION_ENLISTMENTS_INFORMATION, *PTRANSACTION_ENLISTMENTS_INFORMATION;
186 
187 typedef struct _TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION {
188   TRANSACTION_ENLISTMENT_PAIR SuperiorEnlistmentPair;
189 } TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION, *PTRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION;
190 
191 typedef struct _RESOURCEMANAGER_BASIC_INFORMATION {
192   GUID ResourceManagerId;
193   ULONG DescriptionLength;
194   WCHAR Description[1];
195 } RESOURCEMANAGER_BASIC_INFORMATION, *PRESOURCEMANAGER_BASIC_INFORMATION;
196 
197 typedef struct _RESOURCEMANAGER_COMPLETION_INFORMATION {
198   HANDLE IoCompletionPortHandle;
199   ULONG_PTR CompletionKey;
200 } RESOURCEMANAGER_COMPLETION_INFORMATION, *PRESOURCEMANAGER_COMPLETION_INFORMATION;
201 
202 typedef enum _KTMOBJECT_TYPE {
203   KTMOBJECT_TRANSACTION,
204   KTMOBJECT_TRANSACTION_MANAGER,
205   KTMOBJECT_RESOURCE_MANAGER,
206   KTMOBJECT_ENLISTMENT,
207   KTMOBJECT_INVALID
208 } KTMOBJECT_TYPE, *PKTMOBJECT_TYPE;
209 
210 typedef struct _KTMOBJECT_CURSOR {
211   GUID LastQuery;
212   ULONG ObjectIdCount;
213   GUID ObjectIds[1];
214 } KTMOBJECT_CURSOR, *PKTMOBJECT_CURSOR;
215 
216 typedef enum _TRANSACTION_INFORMATION_CLASS {
217   TransactionBasicInformation,
218   TransactionPropertiesInformation,
219   TransactionEnlistmentInformation,
220   TransactionSuperiorEnlistmentInformation
221 } TRANSACTION_INFORMATION_CLASS;
222 
223 typedef enum _TRANSACTIONMANAGER_INFORMATION_CLASS {
224   TransactionManagerBasicInformation,
225   TransactionManagerLogInformation,
226   TransactionManagerLogPathInformation,
227   TransactionManagerRecoveryInformation = 4
228 } TRANSACTIONMANAGER_INFORMATION_CLASS;
229 
230 typedef enum _RESOURCEMANAGER_INFORMATION_CLASS {
231   ResourceManagerBasicInformation,
232   ResourceManagerCompletionInformation,
233 } RESOURCEMANAGER_INFORMATION_CLASS;
234 
235 typedef struct _ENLISTMENT_BASIC_INFORMATION {
236   GUID EnlistmentId;
237   GUID TransactionId;
238   GUID ResourceManagerId;
239 } ENLISTMENT_BASIC_INFORMATION, *PENLISTMENT_BASIC_INFORMATION;
240 
241 typedef struct _ENLISTMENT_CRM_INFORMATION {
242   GUID CrmTransactionManagerId;
243   GUID CrmResourceManagerId;
244   GUID CrmEnlistmentId;
245 } ENLISTMENT_CRM_INFORMATION, *PENLISTMENT_CRM_INFORMATION;
246 
247 typedef enum _ENLISTMENT_INFORMATION_CLASS {
248   EnlistmentBasicInformation,
249   EnlistmentRecoveryInformation,
250   EnlistmentCrmInformation
251 } ENLISTMENT_INFORMATION_CLASS;
252 
253 typedef struct _TRANSACTION_LIST_ENTRY {
254 #if defined(__cplusplus)
255   ::UOW UOW;
256 #else
257   UOW UOW;
258 #endif
259 } TRANSACTION_LIST_ENTRY, *PTRANSACTION_LIST_ENTRY;
260 
261 typedef struct _TRANSACTION_LIST_INFORMATION {
262   ULONG NumberOfTransactions;
263   TRANSACTION_LIST_ENTRY TransactionInformation[1];
264 } TRANSACTION_LIST_INFORMATION, *PTRANSACTION_LIST_INFORMATION;
265 
266 typedef NTSTATUS
267 (NTAPI *PFN_NT_CREATE_TRANSACTION)(
268   _Out_ PHANDLE TransactionHandle,
269   _In_ ACCESS_MASK DesiredAccess,
270   _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes,
271   _In_opt_ LPGUID Uow,
272   _In_opt_ HANDLE TmHandle,
273   _In_opt_ ULONG CreateOptions,
274   _In_opt_ ULONG IsolationLevel,
275   _In_opt_ ULONG IsolationFlags,
276   _In_opt_ PLARGE_INTEGER Timeout,
277   _In_opt_ PUNICODE_STRING Description);
278 
279 typedef NTSTATUS
280 (NTAPI *PFN_NT_OPEN_TRANSACTION)(
281   _Out_ PHANDLE TransactionHandle,
282   _In_ ACCESS_MASK DesiredAccess,
283   _In_ POBJECT_ATTRIBUTES ObjectAttributes,
284   _In_opt_ LPGUID Uow,
285   _In_opt_ HANDLE TmHandle);
286 
287 typedef NTSTATUS
288 (NTAPI *PFN_NT_QUERY_INFORMATION_TRANSACTION)(
289   _In_ HANDLE TransactionHandle,
290   _In_ TRANSACTION_INFORMATION_CLASS TransactionInformationClass,
291   _Out_writes_bytes_(TransactionInformationLength) PVOID TransactionInformation,
292   _In_ ULONG TransactionInformationLength,
293   _Out_opt_ PULONG ReturnLength);
294 
295 typedef NTSTATUS
296 (NTAPI *PFN_NT_SET_INFORMATION_TRANSACTION)(
297   _In_ HANDLE TransactionHandle,
298   _In_ TRANSACTION_INFORMATION_CLASS TransactionInformationClass,
299   _In_ PVOID TransactionInformation,
300   _In_ ULONG TransactionInformationLength);
301 
302 typedef NTSTATUS
303 (NTAPI *PFN_NT_COMMIT_TRANSACTION)(
304   _In_ HANDLE TransactionHandle,
305   _In_ BOOLEAN Wait);
306 
307 typedef NTSTATUS
308 (NTAPI *PFN_NT_ROLLBACK_TRANSACTION)(
309   _In_ HANDLE TransactionHandle,
310   _In_ BOOLEAN Wait);
311 
312 #if (NTDDI_VERSION >= NTDDI_VISTA)
313 
314 _Must_inspect_result_
315 _IRQL_requires_max_ (APC_LEVEL)
316 __kernel_entry
317 NTSYSCALLAPI
318 NTSTATUS
319 NTAPI
320 NtCreateTransactionManager(
321   _Out_ PHANDLE TmHandle,
322   _In_ ACCESS_MASK DesiredAccess,
323   _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes,
324   _In_opt_ PUNICODE_STRING LogFileName,
325   _In_opt_ ULONG CreateOptions,
326   _In_opt_ ULONG CommitStrength);
327 
328 _Must_inspect_result_
329 _IRQL_requires_max_ (APC_LEVEL)
330 __kernel_entry
331 NTSYSCALLAPI
332 NTSTATUS
333 NTAPI
334 NtOpenTransactionManager(
335   _Out_ PHANDLE TmHandle,
336   _In_ ACCESS_MASK DesiredAccess,
337   _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes,
338   _In_opt_ PUNICODE_STRING LogFileName,
339   _In_opt_ LPGUID TmIdentity,
340   _In_opt_ ULONG OpenOptions);
341 
342 _Must_inspect_result_
343 _IRQL_requires_max_ (APC_LEVEL)
344 __kernel_entry
345 NTSYSCALLAPI
346 NTSTATUS
347 NTAPI
348 NtRenameTransactionManager(
349   _In_ PUNICODE_STRING LogFileName,
350   _In_ LPGUID ExistingTransactionManagerGuid);
351 
352 _Must_inspect_result_
353 _IRQL_requires_max_ (APC_LEVEL)
354 __kernel_entry
355 NTSYSCALLAPI
356 NTSTATUS
357 NTAPI
358 NtRollforwardTransactionManager(
359   _In_ HANDLE TransactionManagerHandle,
360   _In_opt_ PLARGE_INTEGER TmVirtualClock);
361 
362 _Must_inspect_result_
363 _IRQL_requires_max_ (APC_LEVEL)
364 __kernel_entry
365 NTSYSCALLAPI
366 NTSTATUS
367 NTAPI
368 NtRecoverTransactionManager(
369   _In_ HANDLE TransactionManagerHandle);
370 
371 _Must_inspect_result_
372 _IRQL_requires_max_ (APC_LEVEL)
373 __kernel_entry
374 NTSYSCALLAPI
375 NTSTATUS
376 NTAPI
377 NtQueryInformationTransactionManager(
378   _In_ HANDLE TransactionManagerHandle,
379   _In_ TRANSACTIONMANAGER_INFORMATION_CLASS TransactionManagerInformationClass,
380   _Out_writes_bytes_(TransactionManagerInformationLength) PVOID TransactionManagerInformation,
381   _In_ ULONG TransactionManagerInformationLength,
382   _Out_ PULONG ReturnLength);
383 
384 _Must_inspect_result_
385 _IRQL_requires_max_ (APC_LEVEL)
386 __kernel_entry
387 NTSYSCALLAPI
388 NTSTATUS
389 NTAPI
390 NtSetInformationTransactionManager(
391   _In_opt_ HANDLE TmHandle,
392   _In_ TRANSACTIONMANAGER_INFORMATION_CLASS TransactionManagerInformationClass,
393   _In_reads_bytes_(TransactionManagerInformationLength) PVOID TransactionManagerInformation,
394   _In_ ULONG TransactionManagerInformationLength);
395 
396 _Must_inspect_result_
397 _IRQL_requires_max_ (APC_LEVEL)
398 __kernel_entry
399 NTSYSCALLAPI
400 NTSTATUS
401 NTAPI
402 NtEnumerateTransactionObject(
403   _In_opt_ HANDLE RootObjectHandle,
404   _In_ KTMOBJECT_TYPE QueryType,
405   _Inout_updates_bytes_(ObjectCursorLength) PKTMOBJECT_CURSOR ObjectCursor,
406   _In_ ULONG ObjectCursorLength,
407   _Out_ PULONG ReturnLength);
408 
409 _Must_inspect_result_
410 _IRQL_requires_max_ (APC_LEVEL)
411 __kernel_entry
412 NTSYSCALLAPI
413 NTSTATUS
414 NTAPI
415 NtCreateTransaction(
416   _Out_ PHANDLE TransactionHandle,
417   _In_ ACCESS_MASK DesiredAccess,
418   _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes,
419   _In_opt_ LPGUID Uow,
420   _In_opt_ HANDLE TmHandle,
421   _In_opt_ ULONG CreateOptions,
422   _In_opt_ ULONG IsolationLevel,
423   _In_opt_ ULONG IsolationFlags,
424   _In_opt_ PLARGE_INTEGER Timeout,
425   _In_opt_ PUNICODE_STRING Description);
426 
427 _Must_inspect_result_
428 _IRQL_requires_max_ (APC_LEVEL)
429 __kernel_entry
430 NTSYSCALLAPI
431 NTSTATUS
432 NTAPI
433 NtOpenTransaction(
434   _Out_ PHANDLE TransactionHandle,
435   _In_ ACCESS_MASK DesiredAccess,
436   _In_ POBJECT_ATTRIBUTES ObjectAttributes,
437   _In_ LPGUID Uow,
438   _In_opt_ HANDLE TmHandle);
439 
440 _Must_inspect_result_
441 _IRQL_requires_max_ (APC_LEVEL)
442 __kernel_entry
443 NTSYSCALLAPI
444 NTSTATUS
445 NTAPI
446 NtQueryInformationTransaction(
447   _In_ HANDLE TransactionHandle,
448   _In_ TRANSACTION_INFORMATION_CLASS TransactionInformationClass,
449   _Out_writes_bytes_(TransactionInformationLength) PVOID TransactionInformation,
450   _In_ ULONG TransactionInformationLength,
451   _Out_opt_ PULONG ReturnLength);
452 
453 _Must_inspect_result_
454 _IRQL_requires_max_ (APC_LEVEL)
455 __kernel_entry
456 NTSYSCALLAPI
457 NTSTATUS
458 NTAPI
459 NtSetInformationTransaction(
460   _In_ HANDLE TransactionHandle,
461   _In_ TRANSACTION_INFORMATION_CLASS TransactionInformationClass,
462   _In_reads_bytes_(TransactionInformationLength) PVOID TransactionInformation,
463   _In_ ULONG TransactionInformationLength);
464 
465 _IRQL_requires_max_ (APC_LEVEL)
466 __kernel_entry
467 NTSYSCALLAPI
468 NTSTATUS
469 NTAPI
470 NtCommitTransaction(
471   _In_ HANDLE TransactionHandle,
472   _In_ BOOLEAN Wait);
473 
474 _IRQL_requires_max_ (APC_LEVEL)
475 __kernel_entry
476 NTSYSCALLAPI
477 NTSTATUS
478 NTAPI
479 NtRollbackTransaction(
480   _In_ HANDLE TransactionHandle,
481   _In_ BOOLEAN Wait);
482 
483 _Must_inspect_result_
484 _IRQL_requires_max_ (APC_LEVEL)
485 __kernel_entry
486 NTSYSCALLAPI
487 NTSTATUS
488 NTAPI
489 NtCreateEnlistment(
490   _Out_ PHANDLE EnlistmentHandle,
491   _In_ ACCESS_MASK DesiredAccess,
492   _In_ HANDLE ResourceManagerHandle,
493   _In_ HANDLE TransactionHandle,
494   _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes,
495   _In_opt_ ULONG CreateOptions,
496   _In_ NOTIFICATION_MASK NotificationMask,
497   _In_opt_ PVOID EnlistmentKey);
498 
499 _Must_inspect_result_
500 _IRQL_requires_max_ (APC_LEVEL)
501 __kernel_entry
502 NTSYSCALLAPI
503 NTSTATUS
504 NTAPI
505 NtOpenEnlistment(
506   _Out_ PHANDLE EnlistmentHandle,
507   _In_ ACCESS_MASK DesiredAccess,
508   _In_ HANDLE ResourceManagerHandle,
509   _In_ LPGUID EnlistmentGuid,
510   _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes);
511 
512 _Must_inspect_result_
513 _IRQL_requires_max_ (APC_LEVEL)
514 __kernel_entry
515 NTSYSCALLAPI
516 NTSTATUS
517 NTAPI
518 NtQueryInformationEnlistment(
519   _In_ HANDLE EnlistmentHandle,
520   _In_ ENLISTMENT_INFORMATION_CLASS EnlistmentInformationClass,
521   _Out_writes_bytes_(EnlistmentInformationLength) PVOID EnlistmentInformation,
522   _In_ ULONG EnlistmentInformationLength,
523   _Out_ PULONG ReturnLength);
524 
525 _Must_inspect_result_
526 _IRQL_requires_max_ (APC_LEVEL)
527 __kernel_entry
528 NTSYSCALLAPI
529 NTSTATUS
530 NTAPI
531 NtSetInformationEnlistment(
532   _In_opt_ HANDLE EnlistmentHandle,
533   _In_ ENLISTMENT_INFORMATION_CLASS EnlistmentInformationClass,
534   _In_reads_bytes_(EnlistmentInformationLength) PVOID EnlistmentInformation,
535   _In_ ULONG EnlistmentInformationLength);
536 
537 _Must_inspect_result_
538 _IRQL_requires_max_ (APC_LEVEL)
539 __kernel_entry
540 NTSYSCALLAPI
541 NTSTATUS
542 NTAPI
543 NtRecoverEnlistment(
544   _In_ HANDLE EnlistmentHandle,
545   _In_opt_ PVOID EnlistmentKey);
546 
547 _Must_inspect_result_
548 _IRQL_requires_max_ (APC_LEVEL)
549 __kernel_entry
550 NTSYSCALLAPI
551 NTSTATUS
552 NTAPI
553 NtPrePrepareEnlistment(
554   _In_ HANDLE EnlistmentHandle,
555   _In_opt_ PLARGE_INTEGER TmVirtualClock);
556 
557 _Must_inspect_result_
558 _IRQL_requires_max_ (APC_LEVEL)
559 __kernel_entry
560 NTSYSCALLAPI
561 NTSTATUS
562 NTAPI
563 NtPrepareEnlistment(
564   _In_ HANDLE EnlistmentHandle,
565   _In_opt_ PLARGE_INTEGER TmVirtualClock);
566 
567 _Must_inspect_result_
568 _IRQL_requires_max_ (APC_LEVEL)
569 __kernel_entry
570 NTSYSCALLAPI
571 NTSTATUS
572 NTAPI
573 NtCommitEnlistment(
574   _In_ HANDLE EnlistmentHandle,
575   _In_opt_ PLARGE_INTEGER TmVirtualClock);
576 
577 _IRQL_requires_max_ (APC_LEVEL)
578 __kernel_entry
579 NTSYSCALLAPI
580 NTSTATUS
581 NTAPI
582 NtRollbackEnlistment(
583   _In_ HANDLE EnlistmentHandle,
584   _In_opt_ PLARGE_INTEGER TmVirtualClock);
585 
586 _IRQL_requires_max_ (APC_LEVEL)
587 __kernel_entry
588 NTSYSCALLAPI
589 NTSTATUS
590 NTAPI
591 NtPrePrepareComplete(
592   _In_ HANDLE EnlistmentHandle,
593   _In_opt_ PLARGE_INTEGER TmVirtualClock);
594 
595 _IRQL_requires_max_ (APC_LEVEL)
596 __kernel_entry
597 NTSYSCALLAPI
598 NTSTATUS
599 NTAPI
600 NtPrepareComplete(
601   _In_ HANDLE EnlistmentHandle,
602   _In_opt_ PLARGE_INTEGER TmVirtualClock);
603 
604 _IRQL_requires_max_ (APC_LEVEL)
605 __kernel_entry
606 NTSYSCALLAPI
607 NTSTATUS
608 NTAPI
609 NtCommitComplete(
610   _In_ HANDLE EnlistmentHandle,
611   _In_opt_ PLARGE_INTEGER TmVirtualClock);
612 
613 _IRQL_requires_max_ (APC_LEVEL)
614 __kernel_entry
615 NTSYSCALLAPI
616 NTSTATUS
617 NTAPI
618 NtReadOnlyEnlistment(
619   _In_ HANDLE EnlistmentHandle,
620   _In_opt_ PLARGE_INTEGER TmVirtualClock);
621 
622 _IRQL_requires_max_ (APC_LEVEL)
623 __kernel_entry
624 NTSYSCALLAPI
625 NTSTATUS
626 NTAPI
627 NtRollbackComplete(
628   _In_ HANDLE EnlistmentHandle,
629   _In_opt_ PLARGE_INTEGER TmVirtualClock);
630 
631 _IRQL_requires_max_ (APC_LEVEL)
632 __kernel_entry
633 NTSYSCALLAPI
634 NTSTATUS
635 NTAPI
636 NtSinglePhaseReject(
637   _In_ HANDLE EnlistmentHandle,
638   _In_opt_ PLARGE_INTEGER TmVirtualClock);
639 
640 _Must_inspect_result_
641 _IRQL_requires_max_ (APC_LEVEL)
642 __kernel_entry
643 NTSYSCALLAPI
644 NTSTATUS
645 NTAPI
646 NtCreateResourceManager(
647   _Out_ PHANDLE ResourceManagerHandle,
648   _In_ ACCESS_MASK DesiredAccess,
649   _In_ HANDLE TmHandle,
650   _In_ LPGUID RmGuid,
651   _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes,
652   _In_opt_ ULONG CreateOptions,
653   _In_opt_ PUNICODE_STRING Description);
654 
655 _Must_inspect_result_
656 _IRQL_requires_max_ (APC_LEVEL)
657 __kernel_entry
658 NTSYSCALLAPI
659 NTSTATUS
660 NTAPI
661 NtOpenResourceManager(
662   _Out_ PHANDLE ResourceManagerHandle,
663   _In_ ACCESS_MASK DesiredAccess,
664   _In_ HANDLE TmHandle,
665   _In_opt_ LPGUID ResourceManagerGuid,
666   _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes);
667 
668 _Must_inspect_result_
669 _IRQL_requires_max_ (APC_LEVEL)
670 __kernel_entry
671 NTSYSCALLAPI
672 NTSTATUS
673 NTAPI
674 NtRecoverResourceManager(
675   _In_ HANDLE ResourceManagerHandle);
676 
677 _Must_inspect_result_
678 _IRQL_requires_max_ (APC_LEVEL)
679 __kernel_entry
680 NTSYSCALLAPI
681 NTSTATUS
682 NTAPI
683 NtGetNotificationResourceManager(
684   _In_ HANDLE ResourceManagerHandle,
685   _Out_ PTRANSACTION_NOTIFICATION TransactionNotification,
686   _In_ ULONG NotificationLength,
687   _In_opt_ PLARGE_INTEGER Timeout,
688   _Out_opt_ PULONG ReturnLength,
689   _In_ ULONG Asynchronous,
690   _In_opt_ ULONG_PTR AsynchronousContext);
691 
692 _Must_inspect_result_
693 _IRQL_requires_max_ (APC_LEVEL)
694 __kernel_entry
695 NTSYSCALLAPI
696 NTSTATUS
697 NTAPI
698 NtQueryInformationResourceManager(
699   _In_ HANDLE ResourceManagerHandle,
700   _In_ RESOURCEMANAGER_INFORMATION_CLASS ResourceManagerInformationClass,
701   _Out_writes_bytes_(ResourceManagerInformationLength) PVOID ResourceManagerInformation,
702   _In_ ULONG ResourceManagerInformationLength,
703   _Out_opt_ PULONG ReturnLength);
704 
705 _Must_inspect_result_
706 _IRQL_requires_max_ (APC_LEVEL)
707 __kernel_entry
708 NTSYSCALLAPI
709 NTSTATUS
710 NTAPI
711 NtSetInformationResourceManager(
712   _In_ HANDLE ResourceManagerHandle,
713   _In_ RESOURCEMANAGER_INFORMATION_CLASS ResourceManagerInformationClass,
714   _In_reads_bytes_(ResourceManagerInformationLength) PVOID ResourceManagerInformation,
715   _In_ ULONG ResourceManagerInformationLength);
716 
717 _Must_inspect_result_
718 _IRQL_requires_max_ (APC_LEVEL)
719 __kernel_entry
720 NTSYSCALLAPI
721 NTSTATUS
722 NTAPI
723 NtRegisterProtocolAddressInformation(
724   _In_ HANDLE ResourceManager,
725   _In_ PCRM_PROTOCOL_ID ProtocolId,
726   _In_ ULONG ProtocolInformationSize,
727   _In_ PVOID ProtocolInformation,
728   _In_opt_ ULONG CreateOptions);
729 
730 _IRQL_requires_max_ (APC_LEVEL)
731 __kernel_entry
732 NTSYSCALLAPI
733 NTSTATUS
734 NTAPI
735 NtPropagationComplete(
736   _In_ HANDLE ResourceManagerHandle,
737   _In_ ULONG RequestCookie,
738   _In_ ULONG BufferLength,
739   _In_ PVOID Buffer);
740 
741 _IRQL_requires_max_ (APC_LEVEL)
742 __kernel_entry
743 NTSYSCALLAPI
744 NTSTATUS
745 NTAPI
746 NtPropagationFailed(
747   _In_ HANDLE ResourceManagerHandle,
748   _In_ ULONG RequestCookie,
749   _In_ NTSTATUS PropStatus);
750 
751 #endif /* NTDDI_VERSION >= NTDDI_VISTA */
752 
753 #endif /* !_NTTMAPI_ */
754