preg: Use gensize to allow modification of winreg data to be repacked
[samba.git] / librpc / idl / preg.idl
1 #include "idl_types.h"
2
3 import "misc.idl";
4
5 /*
6    IDL structures defining PReg files
7
8    more info can be found at:
9    http://msdn2.microsoft.com/en-us/library/aa374407.aspx
10 */
11
12 [
13         pointer_default(unique),
14         helper("../librpc/ndr/ndr_preg.h"),
15         helpstring("PReg structure"),
16         uuid("67655250-0000-0000-0000-00000000")
17 ]
18         interface preg
19 {
20         typedef [public,flag(NDR_PAHEX)] struct {
21                 [charset(DOS),value("["),noprint] uint8 _opening_bracket[2];
22                 nstring keyname;
23                 [charset(DOS),value(";"),noprint] uint8 _sep1[2];
24                 nstring valuename;
25                 [charset(DOS),value(";"),noprint] uint8 _sep2[2];
26                 winreg_Type type;
27                 [charset(DOS),value(";"),noprint] uint8 _sep3[2];
28                 [value(ndr_size_winreg_Data_GPO(&data,type,ndr->flags))] uint32 size;
29                 [charset(DOS),value(";"),noprint] uint8 _sep4[2];
30                 [subcontext(0),subcontext_size(size),flag(NDR_REMAINING), switch_is(type)] winreg_Data_GPO data;
31                 [charset(DOS),value("]"),noprint] uint8 _closing_bracket[2];
32         } preg_entry;
33
34         typedef [public] struct {
35                 [charset(DOS),value("PReg")] uint8 signature[4];
36                 [value(1)] uint32 version;
37         } preg_header;
38
39         typedef [public,flag(NDR_NOALIGN),nopush,nopull] struct {
40                 preg_header header;
41                 uint32 num_entries;
42                 preg_entry entries[num_entries];
43         } preg_file;
44
45         [nopython] void decode_preg_file([in] preg_file file);
46 }