1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the mingw-w64 runtime package.
4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5  */
6 #ifndef _INC_TXFW32
7 #define _INC_TXFW32
8 #include <clfs.h>
9 #if (_WIN32_WINNT >= 0x0600)
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 typedef struct _TXF_ID {
16   __C89_NAMELESS struct {
17     LONGLONG LowPart;
18     LONGLONG HighPart;
19   } DUMMYSTRUCTNAME;
20 } TXF_ID, *PTXF_ID;
21 
22 typedef struct _TXF_LOG_RECORD_AFFECTED_FILE {
23   USHORT Version;
24   ULONG  RecordLength;
25   ULONG  Flags;
26   TXF_ID TxfFileId;
27   UUID   KtmGuid;
28   ULONG  FileNameLength;
29   ULONG  FileNameByteOffsetInStructure;
30 } TXF_LOG_RECORD_AFFECTED_FILE, *PTXF_LOG_RECORD_AFFECTED_FILE;
31 
32 typedef struct _TXF_LOG_RECORD_TRUNCATE {
33   USHORT   Version;
34   USHORT   RecordType;
35   ULONG    RecordLength;
36   ULONG    Flags;
37   TXF_ID   TxfFileId;
38   UUID     KtmGuid;
39   LONGLONG NewFileSize;
40   ULONG    FileNameLength;
41   ULONG    FileNameByteOffsetInStructure;
42 } TXF_LOG_RECORD_TRUNCATE, *PTXF_LOG_RECORD_TRUNCATE;
43 
44 typedef struct _TXF_LOG_RECORD_WRITE {
45   USHORT   Version;
46   USHORT   RecordType;
47   ULONG    RecordLength;
48   ULONG    Flags;
49   TXF_ID   TxfFileId;
50   UUID     KtmGuid;
51   LONGLONG ByteOffsetInFile;
52   ULONG    NumBytesWritten;
53   ULONG    ByteOffsetInStructure;
54   ULONG    FileNameLength;
55   ULONG    FileNameByteOffsetInStructure;
56 } TXF_LOG_RECORD_WRITE, *PTXF_LOG_RECORD_WRITE;
57 
58 #define TXF_LOG_RECORD_TYPE_WRITE 1
59 #define TXF_LOG_RECORD_TYPE_TRUNCATE 2
60 #define TXF_LOG_RECORD_TYPE_AFFECTED_FILE 4
61 
62 typedef struct _TXF_LOG_RECORD_BASE {
63   USHORT Version;
64   USHORT RecordType;
65   ULONG  RecordLength;
66 } TXF_LOG_RECORD_BASE, *PTXF_LOG_RECORD_BASE;
67 
68 WINBOOL WINAPI TxfLogCreateFileReadContext(
69   LPCWSTR LogPath,
70   CLFS_LSN BeginningLsn,
71   CLFS_LSN EndingLSN,
72   PTXF_ID TxfFileId,
73   PVOID *TxfLogContext
74 );
75 
76 WINBOOL WINAPI TxfLogDestroyReadContext(
77   PVOID TxfLogContext
78 );
79 
80 WINBOOL WINAPI TxfLogReadRecords(
81   PVOID TxfLogContext,
82   ULONG BufferLength,
83   PVOID Buffer,
84   PULONG BytesUsed,
85   PULONG RecordCount
86 );
87 
88 #ifdef __cplusplus
89 }
90 #endif
91 #endif /* (_WIN32_WINNT >= 0x0600) */
92 #endif /*_INC_TXFW32*/
93