spoolss: add idl for spoolss_RpcSendRecvBidiData.
authorGünther Deschner <gd@samba.org>
Fri, 18 Jan 2013 23:47:42 +0000 (00:47 +0100)
committerDavid Disseldorp <ddiss@samba.org>
Mon, 20 May 2013 16:50:00 +0000 (18:50 +0200)
Guenther

Signed-off-by: Günther Deschner <gd@samba.org>
Reviewed-by: David Disseldorp <ddiss@samba.org>
librpc/idl/spoolss.idl
source3/rpc_server/spoolss/srv_spoolss_nt.c
source4/rpc_server/spoolss/dcesrv_spoolss.c

index 2fa2997c4151ee21349c1281521f0c7ab4fd8b0e..c143733fcc653522d35ebe153da6dd2a9851615e 100644 (file)
@@ -3158,7 +3158,76 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor")
 
        /******************/
        /* Function: 0x61 */
-       [todo] WERROR spoolss_61(
+
+       const string BIDI_ACTION_ENUM_SCHEMA = "EnumSchema";
+       const string BIDI_ACTION_GET = "Get";
+       const string BIDI_ACTION_SET = "Set";
+       const string BIDI_ACTION_GET_ALL = "GetAll";
+
+       typedef enum {
+               BIDI_NULL       = 0x00000000,
+               BIDI_INT        = 0x00000001,
+               BIDI_FLOAT      = 0x00000002,
+               BIDI_BOOL       = 0x00000003,
+               BIDI_STRING     = 0x00000004,
+               BIDI_TEXT       = 0x00000005,
+               BIDI_ENUM       = 0x00000006,
+               BIDI_BLOB       = 0x00000007
+       } BIDI_TYPE;
+
+       typedef struct {
+               uint32 cbBuf;
+               [size_is(cbBuf), unique] uint8 *pszString;
+       } RPC_BINARY_CONTAINER;
+
+       typedef [ms_union,switch_type(uint32)] union {
+               [case(BIDI_NULL)]       uint32 bData;
+               [case(BIDI_BOOL)]       uint32 bData;
+               [case(BIDI_INT)]        uint32 iData;
+               [case(BIDI_STRING)]     [unique] [string,charset(UTF16)] uint16 *sData;
+               [case(BIDI_TEXT)]       [unique] [string,charset(UTF16)] uint16 *sData;
+               [case(BIDI_ENUM)]       [unique] [string,charset(UTF16)] uint16 *sData;
+               /*[case(BIDI_FLOAT)]    float fData;*/
+               [case(BIDI_BLOB)]       RPC_BINARY_CONTAINER biData;
+       } RPC_BIDI_DATA_u;
+
+       typedef struct {
+               uint32 dwBidiType;
+               [switch_is(dwBidiType)] RPC_BIDI_DATA_u u;
+       } RPC_BIDI_DATA;
+
+       typedef struct {
+               uint32 dwReqNumber;
+               [unique] [string,charset(UTF16)] uint16 *pSchema;
+               RPC_BIDI_DATA data;
+       } RPC_BIDI_REQUEST_DATA;
+
+       typedef [public] struct {
+               [value(1)] uint32 Version;
+               uint32 Flags;
+               uint32 Count;
+               [size_is(Count), unique] RPC_BIDI_REQUEST_DATA *aData[];
+       } RPC_BIDI_REQUEST_CONTAINER;
+
+       typedef struct {
+               uint32 dwResult;
+               uint32 dwReqNumber;
+               [unique] [string,charset(UTF16)] uint16 *pSchema;
+               RPC_BIDI_DATA data;
+       } RPC_BIDI_RESPONSE_DATA;
+
+       typedef [public] struct {
+               [value(1)] uint32 Version;
+               uint32 Flags;
+               uint32 Count;
+               [size_is(Count), unique] RPC_BIDI_RESPONSE_DATA *aData[];
+       } RPC_BIDI_RESPONSE_CONTAINER;
+
+       WERROR spoolss_RpcSendRecvBidiData(
+               [in] policy_handle hPrinter,
+               [in,unique] [string,charset(UTF16)] uint16 *pAction,
+               [in] RPC_BIDI_REQUEST_CONTAINER *pReqData,
+               [out] RPC_BIDI_RESPONSE_CONTAINER **ppRespData
        );
 
        /******************/
index 891f4296b93e2859686089e65fb3633b63774832..7482443c74ec59651ee672f9eeb5dd21b5b83d3a 100644 (file)
@@ -10852,11 +10852,11 @@ WERROR _spoolss_60(struct pipes_struct *p,
 }
 
 /****************************************************************
- _spoolss_61
+ _spoolss_RpcSendRecvBidiData
 ****************************************************************/
 
-WERROR _spoolss_61(struct pipes_struct *p,
-                  struct spoolss_61 *r)
+WERROR _spoolss_RpcSendRecvBidiData(struct pipes_struct *p,
+                                   struct spoolss_RpcSendRecvBidiData *r)
 {
        p->fault_state = DCERPC_FAULT_OP_RNG_ERROR;
        return WERR_NOT_SUPPORTED;
index e3df4e0ff5e1c5730700067af87ba19e9b39d6cb..cb892a6cb51c81a3e1fa02d55443e30e3ebed906 100644 (file)
@@ -1592,10 +1592,10 @@ static WERROR dcesrv_spoolss_60(struct dcesrv_call_state *dce_call, TALLOC_CTX *
 
 
 /*
-  spoolss_61
+  spoolss_RpcSendRecvBidiData
 */
-static WERROR dcesrv_spoolss_61(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
-                      struct spoolss_61 *r)
+static WERROR dcesrv_spoolss_RpcSendRecvBidiData(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
+                      struct spoolss_RpcSendRecvBidiData *r)
 {
        DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
 }