1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
#include "idl_types.h"
import "misc.idl";
import "security.idl";
import "fscc.idl";
/* bkup blobs interface definition */
[
pointer_default(unique),
helpstring("bkup blobs")
]
interface bkup
{
typedef [v1_enum] enum {
STREAM_ID_DATA = 1,
STREAM_ID_EX_DATA = 2,
STREAM_ID_SECURITY_DATA = 3,
STREAM_ID_ALTERNATE_DATA = 4,
STREAM_ID_LINK = 5,
STREAM_ID_OBJECTID = 7,
STREAM_ID_REPARSE_DATA = 8,
STREAM_ID_SPARSE_BLOCK = 9,
STREAM_ID_TXFS_DATA = 10
} bkup_StreamId;
typedef [v1_enum] enum {
STREAM_ATTRIBUTE_NORMAL = 0,
STREAM_ATTRIBUTE_SECURITY = 2,
STREAM_ATTRIBUTE_SPARSE = 8
} bkup_StreamAttribute;
typedef [nodiscriminant] union {
[default] DATA_BLOB blob;
[flag(NDR_ALIGN2),case(STREAM_ID_SECURITY_DATA)] security_descriptor sd;
[case(STREAM_ID_OBJECTID)] fscc_FileObjectIdBuffer_2 object;
} bkup_StreamData;
typedef [public] struct {
bkup_StreamId id;
bkup_StreamAttribute attribute;
hyper size;
uint32 stream_name_size;
[charset(UTF16),flag(STR_NOTERM)] uint16 stream_name[stream_name_size];
[subcontext(0), subcontext_size(size), switch_is(id)] [flag(NDR_REMAINING)] bkup_StreamData data;
} bkup_Win32StreamId;
typedef [nopush, nopull, flag(NDR_NOALIGN), public] struct {
uint32 num_stream;
bkup_Win32StreamId streams[num_stream];
} bkup_NTBackupFile;
}
|