summaryrefslogtreecommitdiff
path: root/source4/librpc/idl/winreg.idl
diff options
context:
space:
mode:
Diffstat (limited to 'source4/librpc/idl/winreg.idl')
-rw-r--r--source4/librpc/idl/winreg.idl50
1 files changed, 19 insertions, 31 deletions
diff --git a/source4/librpc/idl/winreg.idl b/source4/librpc/idl/winreg.idl
index 2dbd4de944..d721172507 100644
--- a/source4/librpc/idl/winreg.idl
+++ b/source4/librpc/idl/winreg.idl
@@ -125,42 +125,30 @@
[in,out] winreg_Time *last_changed_time
);
- typedef struct {
- uint32 max_len;
- uint32 offset;
- uint32 len;
- } EnumValueIn;
-
- typedef struct {
- uint16 len;
- uint16 max_len;
- EnumValueIn *buffer;
- } EnumValueNameIn;
-
- typedef struct {
- uint32 max_len;
- uint32 offset;
- DATA_BLOB buffer;
- } EnumValueOut;
-
- typedef struct {
- uint16 len;
- uint16 max_len;
- unistr *name;
- } EnumValueNameOut;
-
/******************/
/* Function: 0x0a */
+
+ /*
+ this is equivalent IDL to a winreg_String, but we need to
+ have absolute control over the length/size fields as the
+ server looks at those to see what size buffer we have, so
+ we can't use the automatic unistr handing in pidl.
+ */
+ typedef struct {
+ uint16 length;
+ uint16 size;
+ [size_is(size/2),length_is(length/2)] uint16 *name;
+ } winreg_EnumValueString;
+
WERROR winreg_EnumValue(
[in,ref] policy_handle *handle,
- [in] uint32 enum_index,
- [in] EnumValueNameIn name_in,
- [out] EnumValueNameOut name_out,
+ [in] uint32 enum_index,
+ [in] winreg_EnumValueString name_in,
+ [out] winreg_String name_out,
[in,out] uint32 *type,
- [in] EnumValueIn *value_in,
- [out] EnumValueOut *value_out,
- [in,out] uint32 *value_len1,
- [in,out] uint32 *value_len2
+ [in,out,size_is(*size),length_is(*length)] uint8 *value,
+ [in,out] uint32 *size,
+ [in,out] uint32 *length
);
/******************/