From 4141cdf62c2bbd5a081a16c8a9794062b94eed04 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 9 Dec 2004 07:52:00 +0000 Subject: r4113: modified EnumValue in winreg to take advantage of the new pidl handling of arrays. (This used to be commit b47e203a054e26d5d0c133a3c3b8d9502bd6ac69) --- source4/librpc/idl/winreg.idl | 50 ++++++++++++++++--------------------------- 1 file changed, 19 insertions(+), 31 deletions(-) (limited to 'source4/librpc') 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 ); /******************/ -- cgit