s3-rap: add rap_NetRemoteTOD to IDL.
[samba.git] / librpc / idl / rap.idl
index 4ddb1a6f8d666f6bf9064c7a06b57492aa8afca6..780951c7503489ccfd5770d646aa3f63d3ef572c 100644 (file)
 ]
 interface rap
 {
+       typedef [public,noprint] enum {
+               NERR_Success = 0
+       } rap_status;
+
        const int RAP_WshareEnum                        = 0;
        const int RAP_WshareGetInfo                     = 1;
        const int RAP_WshareSetInfo                     = 2;
@@ -285,7 +289,7 @@ interface rap
        typedef struct {
                uint8 group_name[21];
                char reserved1;
-               [string,charset(DOS)] uint8 *comment;
+               astring *comment;
        } rap_group_info_1;
 
        typedef struct {
@@ -294,10 +298,10 @@ interface rap
                uint8 passwrd[16];
                uint32 pwage;
                uint16 priv;
-               [string,charset(DOS)] uint8 *home_dir;
-               [string,charset(DOS)] uint8 *comment;
+               astring *home_dir;
+               astring *comment;
                uint16 userflags;
-               [string,charset(DOS)] uint8 *logon_script;
+               astring *logon_script;
        } rap_user_info_1;
 
        typedef struct {
@@ -305,7 +309,7 @@ interface rap
                uint16 status;
                uint32 installcode;
                uint16 process_num;
-               [string,charset(DOS)] uint8 *comment;
+               astring *comment;
        } rap_service_info_2;
 
        typedef struct {
@@ -316,18 +320,18 @@ interface rap
                uint8 share_name[13];
                char reserved1;
                uint16 share_type;
-               [string,charset(DOS)] uint8 *comment;
+               astring *comment;
        } rap_share_info_1;
 
        typedef struct {
                uint8 share_name[13];
                char reserved1;
                uint16 share_type;
-               [string,charset(DOS)] uint8 *comment;
+               astring *comment;
                uint16 perms;
                uint16 maximum_users;
                uint16 active_users;
-               [string,charset(DOS)] uint8 *path;
+               astring *path;
                uint8 password[9];
                char reserved2;
        } rap_share_info_2;
@@ -341,13 +345,22 @@ interface rap
        [public] void rap_NetShareEnum(
                [in] uint16 level,
                [in] uint16 bufsize,
-               [out] uint16 status,
+               [out] rap_status status,
                [out] uint16 convert,
                [out] uint16 count,
                [out] uint16 available,
                [out,switch_is(level)] rap_share_info *info
        );
 
+       /* not documented in MS-RAP */
+       [public] void rap_NetShareAdd(
+               [in] uint16 level,
+               [in] uint16 bufsize,
+               [in,switch_is(level)] rap_share_info info,
+               [out] rap_status status,
+               [out] uint16 convert
+       );
+
        typedef struct {
                uint8 name[16];
        } rap_server_info_0;
@@ -357,7 +370,7 @@ interface rap
                uint8 version_major;
                uint8 version_minor;
                uint32 servertype;
-               [string,charset(DOS)] uint8 *comment;
+               astring *comment;
        } rap_server_info_1;
 
        typedef [nodiscriminant] union {
@@ -369,23 +382,110 @@ interface rap
                [in] uint16 level,
                [in] uint16 bufsize,
                [in] uint32 servertype,
-               [in] [string,charset(DOS)] uint8 *domain,
-               [out] uint16 status,
+               [in] astring *domain,
+               [out] rap_status status,
                [out] uint16 convert,
                [out] uint16 count,
                [out] uint16 available,
-               [out,switch_is(level)] rap_server_info *info
+               [out,switch_is(level)] rap_server_info info[count]
        );
 
        [public] void rap_WserverGetInfo(
                [in] uint16 level,
                [in] uint16 bufsize,
-               [out] uint16 status,
+               [out] rap_status status,
                [out] uint16 convert,
                [out] uint16 available,
                [out,switch_is(level)] rap_server_info info
        );
 
+       typedef [public] enum {
+               PRJ_QS_QUEUED   = 0x0000,
+               PRJ_QS_PAUSED   = 0x0001,
+               PRJ_QS_SPOOLING = 0x0002,
+               PRJ_QS_PRINTING = 0x0003,
+               PRJ_QS_ERROR    = 0x0010
+       } rap_PrintJStatusCode;
+
+       typedef struct {
+               uint16 JobID;
+       } rap_PrintJobInfo0;
+
+       typedef struct {
+               uint16 JobID;
+               [charset(DOS)] uint8 UserName[21];
+               uint8 Pad;
+               [charset(DOS)] uint8 NotifyName[16];
+               [charset(DOS)] uint8 DataType[10];
+               [relative_short] astring *PrintParameterString;
+               uint16 PrintParameterStringHigh;
+               uint16 JobPosition;
+               rap_PrintJStatusCode JobStatus;
+               [relative_short] astring *JobStatusString;
+               uint16 JobStatusStringHigh;
+               time_t TimeSubmitted;
+               uint32 JobSize;
+               [relative_short] astring *JobCommentString;
+               uint16 JobCommentStringHigh;
+       } rap_PrintJobInfo1;
+
+       typedef struct {
+               uint16 JobID;
+               uint16 Priority;
+               [relative_short] astring *UserName;
+               uint16 UserNameHigh;
+               uint16 JobPosition;
+               rap_PrintJStatusCode JobStatus;
+               time_t TimeSubmitted;
+               uint32 JobSize;
+               [relative_short] astring *JobCommentString;
+               uint16 JobCommentStringHigh;
+               [relative_short] astring *DocumentName;
+               uint16 DocumentNameHigh;
+       } rap_PrintJobInfo2;
+
+       typedef struct {
+               uint16 JobID;
+               uint16 Priority;
+               [relative_short] astring *UserName;
+               uint16 UserNameHigh;
+               uint16 JobPosition;
+               rap_PrintJStatusCode JobStatus;
+               time_t TimeSubmitted;
+               uint32 JobSize;
+               [relative_short] astring *JobCommentString;
+               uint16 JobCommentStringHigh;
+               [relative_short] astring *DocumentName;
+               uint16 DocumentNameHigh;
+               [relative_short] astring *NotifyName;
+               uint16 NotifyNameHigh;
+               [relative_short] astring *DataType;
+               uint16 DataTypeHigh;
+               [relative_short] astring *PrintParameterString;
+               uint16 PrintParameterStringHigh;
+               [relative_short] astring *StatusString;
+               uint16 StatusStringHigh;
+               [relative_short] astring *QueueName;
+               uint16 QueueNameHigh;
+               [relative_short] astring *PrintProcessorName;
+               uint16 PrintProcessorNameHigh;
+               [relative_short] astring *PrintProcessorParams;
+               uint16 PrintProcessorParamsHigh;
+               [relative_short] astring *DriverName;
+               uint16 DriverNameHigh;
+               [relative_short] astring *DriverDataOffset;
+               uint16 DriverDataOffsetHigh;
+               [relative_short] astring *PrinterNameOffset;
+               uint16 PrinterNameOffsetHigh;
+       } rap_PrintJobInfo3;
+
+       typedef [public,nodiscriminant] union {
+               [case(0)] rap_PrintJobInfo0 info0;
+               [case(1)] rap_PrintJobInfo1 info1;
+               [case(2)] rap_PrintJobInfo2 info2;
+               [case(3)] rap_PrintJobInfo3 info3;
+       } rap_printj_info;
+
        typedef [public] enum {
                PRQ_ACTIVE      = 0x0000,
                PRQ_PAUSE       = 0x0001,
@@ -394,66 +494,70 @@ interface rap
        } rap_PrintQStatusCode;
 
        typedef struct {
-               uint8 PrintQName[13];
+               [charset(DOS)] uint8 PrintQName[13];
        } rap_PrintQueue0;
 
        typedef struct {
-               uint8 PrintQName[13];
+               [charset(DOS)] uint8 PrintQName[13];
                uint8 Pad1;
                uint16 Priority;
                uint16 StartTime;
                uint16 UntilTime;
-               [relative_short] [string,charset(DOS)] uint8 *SeparatorPageFilename;
+               [relative_short] astring *SeparatorPageFilename;
                uint16 SeparatorPageFilenameHigh;
-               [relative_short] [string,charset(DOS)] uint8 *PrintProcessorDllName;
+               [relative_short] astring *PrintProcessorDllName;
                uint16 PrintProcessorDllNameHigh;
-               [relative_short] [string,charset(DOS)] uint8 *PrintDestinationsName;
+               [relative_short] astring *PrintDestinationsName;
                uint16 PrintDestinationsNameHigh;
-               [relative_short] [string,charset(DOS)] uint8 *PrintParameterString;
+               [relative_short] astring *PrintParameterString;
                uint16 PrintParameterStringHigh;
-               [relative_short] [string,charset(DOS)] uint8 *CommentString;
+               [relative_short] astring *CommentString;
                uint16 CommentStringHigh;
                rap_PrintQStatusCode PrintQStatus;
                uint16 PrintJobCount;
        } rap_PrintQueue1;
 
        typedef struct {
+               rap_PrintQueue1 queue;
+               rap_PrintJobInfo1 job[queue.PrintJobCount];
        } rap_PrintQueue2;
 
-       typedef struct {
-               [relative_short] [string,charset(DOS)] uint8 *PrintQueueName;
+       typedef [public] struct {
+               [relative_short] astring *PrintQueueName;
                uint16 PrintQueueNameHigh;
                uint16 Priority;
                uint16 StartTime;
                uint16 UntilTime;
                uint16 Pad;
-               [relative_short] [string,charset(DOS)] uint8 *SeparatorPageFilename;
+               [relative_short] astring *SeparatorPageFilename;
                uint16 SeparatorPageFilenameHigh;
-               [relative_short] [string,charset(DOS)] uint8 *PrintProcessorDllName;
+               [relative_short] astring *PrintProcessorDllName;
                uint16 PrintProcessorDllNameHigh;
-               [relative_short] [string,charset(DOS)] uint8 *PrintParameterString;
+               [relative_short] astring *PrintParameterString;
                uint16 PrintParameterStringHigh;
-               [relative_short] [string,charset(DOS)] uint8 *CommentString;
+               [relative_short] astring *CommentString;
                uint16 CommentStringHigh;
                rap_PrintQStatusCode PrintQStatus;
                uint16 PrintJobCount;
-               [relative_short] [string,charset(DOS)] uint8 *Printers;
+               [relative_short] astring *Printers;
                uint16 PrintersHigh;
-               [relative_short] [string,charset(DOS)] uint8 *DriverName;
+               [relative_short] astring *DriverName;
                uint16 DriverNameHigh;
-               [relative_short] [string,charset(DOS)] uint8 *PrintDriverData;
+               [relative_short] astring *PrintDriverData;
                uint16 PrintDriverDataHigh;
        } rap_PrintQueue3;
 
        typedef struct {
+               rap_PrintQueue3 queue;
+               rap_PrintJobInfo2 job[queue.PrintJobCount];
        } rap_PrintQueue4;
 
        typedef struct {
-               [relative_short] [string,charset(DOS)] uint8 *PrintQueueName;
+               [relative_short] astring *PrintQueueName;
                uint16 PrintQueueNameHigh;
        } rap_PrintQueue5;
 
-       typedef [nodiscriminant] union {
+       typedef [public,nodiscriminant] union {
                [case(0)] rap_PrintQueue0 info0;
                [case(1)] rap_PrintQueue1 info1;
                [case(2)] rap_PrintQueue2 info2;
@@ -462,94 +566,426 @@ interface rap
                [case(5)] rap_PrintQueue5 info5;
        } rap_printq_info;
 
+       [public] void rap_NetPrintQEnum(
+               [in] uint16 level,
+               [in] uint16 bufsize,
+               [out] rap_status status,
+               [out] uint16 convert,
+               [out] uint16 count,
+               [out] uint16 available,
+               [out,switch_is(level)] rap_printq_info info[count]
+       );
+
+       [public] void rap_NetPrintQGetInfo(
+               [in] astring PrintQueueName,
+               [in] uint16 level,
+               [in] uint16 bufsize,
+               [out] rap_status status,
+               [out] uint16 convert,
+               [out] uint16 available,
+               [out,switch_is(level)] rap_printq_info info
+       );
+
+       [public] void rap_NetPrintJobPause(
+               [in] uint16 JobID,
+               [out] rap_status status,
+               [out] uint16 convert
+       );
+
+       [public] void rap_NetPrintJobContinue(
+               [in] uint16 JobID,
+               [out] rap_status status,
+               [out] uint16 convert
+       );
+
+       [public] void rap_NetPrintJobDelete(
+               [in] uint16 JobID,
+               [out] rap_status status,
+               [out] uint16 convert
+       );
+
+       /* not documented in MS-RAP */
+       [public] void rap_NetPrintQueuePause(
+               [in] astring PrintQueueName,
+               [out] rap_status status,
+               [out] uint16 convert
+       );
+
+       /* not documented in MS-RAP */
+       [public] void rap_NetPrintQueueResume(
+               [in] astring PrintQueueName,
+               [out] rap_status status,
+               [out] uint16 convert
+       );
+
+       /* not documented in MS-RAP */
+       [public] void rap_NetPrintQueuePurge(
+               [in] astring PrintQueueName,
+               [out] rap_status status,
+               [out] uint16 convert
+       );
+
+       /* not documented in MS-RAP */
+       [public] void rap_NetPrintJobEnum(
+               [in] astring PrintQueueName,
+               [in] uint16 level,
+               [in] uint16 bufsize,
+               [out] rap_status status,
+               [out] uint16 convert,
+               [out] uint16 count,
+               [out] uint16 available,
+               [out,switch_is(level)] rap_printj_info info[count]
+       );
+
+       [public] void rap_NetPrintJobGetInfo(
+               [in] uint16 JobID,
+               [in] uint16 level,
+               [in] uint16 bufsize,
+               [out] rap_status status,
+               [out] uint16 convert,
+               [out] uint16 available,
+               [out,switch_is(level)] rap_printj_info info
+       );
+
+       typedef enum {
+               RAP_PARAM_JOBNUM                = 0x0001,
+               RAP_PARAM_USERNAME              = 0x0002,
+               RAP_PARAM_NOTIFYNAME            = 0x0003,
+               RAP_PARAM_DATATYPE              = 0x0004,
+               RAP_PARAM_PARAMETERS_STRING     = 0x0005,
+               RAP_PARAM_JOBPOSITION           = 0x0006,
+               RAP_PARAM_JOBSTATUS             = 0x0007,
+               RAP_PARAM_JOBSTATUSSTR          = 0x0008,
+               RAP_PARAM_TIMESUBMITTED         = 0x0009,
+               RAP_PARAM_JOBSIZE               = 0x000a,
+               RAP_PARAM_JOBCOMMENT            = 0x000b
+       } rap_JobInfoParamNum;
+
+       typedef [nodiscriminant] union {
+               [case (RAP_PARAM_JOBNUM)] uint16 value;
+               [case (RAP_PARAM_USERNAME)] astring string;
+               [case (RAP_PARAM_NOTIFYNAME)] astring string;
+               [case (RAP_PARAM_DATATYPE)] astring string;
+               [case (RAP_PARAM_PARAMETERS_STRING)] astring string;
+               [case (RAP_PARAM_JOBPOSITION)] uint16 value;
+               [case (RAP_PARAM_JOBSTATUS)] uint16 value;
+               [case (RAP_PARAM_JOBSTATUSSTR)] astring string;
+               [case (RAP_PARAM_TIMESUBMITTED)] uint32 value4;
+               [case (RAP_PARAM_JOBSIZE)] uint32 value4;
+               [case (RAP_PARAM_JOBCOMMENT)] astring string;
+       } rap_JobInfoParam;
+
+       [public] void rap_NetPrintJobSetInfo(
+               [in] uint16 JobID,
+               [in] uint16 level,
+               [in] uint16 bufsize,
+               [in] rap_JobInfoParamNum ParamNum,
+               [in,switch_is(ParamNum)] rap_JobInfoParam Param,
+               [out] rap_status status,
+               [out] uint16 convert
+       );
+
+       /* all not documented in MS-RAP */
+
+       typedef struct {
+               [charset(DOS)] uint8 PrintDestName[9];
+       } rap_PrintDest0;
+
+       typedef struct {
+               [charset(DOS)] uint8 PrintDestName[9];
+               [charset(DOS)] uint8 UserName[21];
+               uint16 JobId;
+               uint16 Status;
+               [relative_short] astring *StatusStringName;
+               uint16 PrintQueueNameHigh;
+               uint16 Time;
+       } rap_PrintDest1;
+
+       typedef struct {
+               [relative_short] astring *PrinterName;
+               uint16 PrinterNameHigh;
+       } rap_PrintDest2;
+
+       typedef struct {
+               [relative_short] astring *PrinterName;
+               uint16 PrinterNameHigh;
+               [relative_short] astring *UserName;
+               uint16 UserNameHigh;
+               [relative_short] astring *LogAddr;
+               uint16 LogAddrHigh;
+               uint16 JobId;
+               uint16 Status;
+               [relative_short] astring *StatusStringName;
+               uint16 PrintQueueNameHigh;
+               [relative_short] astring *Comment;
+               uint16 CommentHigh;
+               [relative_short] astring *Drivers;
+               uint16 DriversHigh;
+               uint16 Time;
+               uint16 Pad1;
+       } rap_PrintDest3;
+
+       typedef [public,nodiscriminant] union {
+               [case(0)] rap_PrintDest0 info0;
+               [case(1)] rap_PrintDest1 info1;
+               [case(2)] rap_PrintDest2 info2;
+               [case(3)] rap_PrintDest3 info3;
+       } rap_printdest_info;
+
+       /* not documented in MS-RAP */
+       [public] void rap_NetPrintDestEnum(
+               [in] uint16 level,
+               [in] uint16 bufsize,
+               [out] rap_status status,
+               [out] uint16 convert,
+               [out] uint16 count,
+               [out] uint16 available,
+               [out,switch_is(level)] rap_printdest_info info[count]
+       );
+
+       /* not documented in MS-RAP */
+       [public] void rap_NetPrintDestGetInfo(
+               [in] astring PrintDestName,
+               [in] uint16 level,
+               [in] uint16 bufsize,
+               [out] rap_status status,
+               [out] uint16 convert,
+               [out] uint16 available,
+               [out,switch_is(level)] rap_printdest_info info
+       );
+
+       [public] void rap_NetUserPasswordSet2(
+               [in] astring UserName,
+               [in] uint8 OldPassword[16],
+               [in] uint8 NewPassword[16],
+               [in] uint16 EncryptedPassword,
+               [in] uint16 RealPasswordLength,
+               [out] rap_status status,
+               [out] uint16 convert
+       );
+
+       /* not documented in MS-RAP */
+       [public] void rap_NetOEMChangePassword(
+               [in] astring UserName,
+               [in] uint8 crypt_password[516],
+               [in] uint8 password_hash[16],
+               [out] rap_status status,
+               [out] uint16 convert
+       );
+
+       typedef struct {
+               [charset(DOS)] uint8 Name[21];
+       } rap_NetUserInfo0;
+
        typedef [public] enum {
-               PRJ_QS_QUEUED   = 0x0000,
-               PRJ_QS_PAUSED   = 0x0001,
-               PRJ_QS_SPOOLING = 0x0002,
-               PRJ_QS_PRINTING = 0x0003,
-               PRJ_QS_ERROR    = 0x0010
-       } rap_PrintJStatusCode;
+               USER_PRIV_GUEST = 0,
+               USER_PRIV_USER  = 1,
+               USER_PRIV_ADMIN = 2
+       } rap_UserPriv;
 
        typedef struct {
-               uint16 JobID;
-       } rap_PrintJobInfo0;
+               [charset(DOS)] uint8 Name[21];
+               uint8 Pad;
+               uint8 Password[16];
+               time_t PasswordAge;
+               rap_UserPriv Priv;
+               [relative_short] astring *HomeDir;
+               uint16 HomeDirHigh;
+               [relative_short] astring *Comment;
+               uint16 CommentHigh;
+               uint16 Flags; /* FIXME */
+               [relative_short] astring *ScriptPath;
+               uint16 ScriptPathHigh;
+       } rap_NetUserInfo1;
+
+       typedef [public,v1_enum] enum {
+               AF_OP_PRINT     = 0,
+               AF_OP_COMM      = 1,
+               AF_OP_SERVER    = 2,
+               AF_OP_ACCOUNTS  = 3
+       } rap_AuthFlags;
+
+       typedef [public] struct {
+               uint8 LogonHours[21];
+       } rap_LogonHours;
 
        typedef struct {
-               uint16 JobID;
-               uint8 UserName[21];
+               [charset(DOS)] uint8 Name[21];
                uint8 Pad;
-               uint8 NotifyName[16];
-               uint8 DataType[10];
-               [relative_short] [string,charset(DOS)] uint8 *PrintParameterString;
-               uint16 PrintParameterStringHigh;
-               uint16 JobPosition;
-               rap_PrintJStatusCode JobStatus;
-               [relative_short] [string,charset(DOS)] uint8 *JobStatusString;
-               uint16 JobStatusStringHigh;
-               uint32 TimeSubmitted;
-               uint32 JobSize;
-               [relative_short] [string,charset(DOS)] uint8 *JobCommentString;
-               uint16 JobCommentStringHigh;
-       } rap_PrintJobInfo1;
+               uint8 Password[16];
+               time_t PasswordAge;
+               rap_UserPriv Priv;
+               [relative_short] astring *HomeDir;
+               uint16 HomeDirHigh;
+               [relative_short] astring *Comment;
+               uint16 CommentHigh;
+               uint16 Flags; /* FIXME */
+               [relative_short] astring *ScriptPath;
+               uint16 ScriptPathHigh;
+               rap_AuthFlags AuthFlags;
+               [relative_short] astring *FullName;
+               uint16 FullNameHigh;
+               [relative_short] astring *UsrComment;
+               uint16 UsrCommentHigh;
+               [relative_short] astring *pParms;
+               uint16 pParmsHigh;
+               [relative_short] astring *WorkStations;
+               uint16 WorkStationsHigh;
+               time_t LastLogon;
+               time_t LastLogOff;
+               time_t AcctExpires;
+               uint32 MaxStorage;
+               uint16 UnitsPerWeek;
+               [relative_short] rap_LogonHours *LogonHours;
+               uint16 LogonHoursHigh;
+               uint16 BadPwCount;
+               uint16 NumLogons;
+               [relative_short] astring *LogonServer;
+               uint16 LogonServerHigh;
+               uint16 CountryCode;
+               uint16 CodePage;
+       } rap_NetUserInfo2;
 
        typedef struct {
-               uint16 JobID;
-               uint16 Priority;
-               [relative_short] [string,charset(DOS)] uint8 *UserName;
-               uint16 UserNameHigh;
-               uint16 JobPosition;
-               rap_PrintJStatusCode JobStatus;
-               uint32 TimeSubmitted;
-               uint32 JobSize;
-               [relative_short] [string,charset(DOS)] uint8 *JobCommentString;
-               uint16 JobCommentStringHigh;
-               [relative_short] [string,charset(DOS)] uint8 *DocumentName;
-               uint16 DocumentNameHigh;
-       } rap_PrintJobInfo2;
+               [charset(DOS)] uint8 Name[21];
+               uint8 Pad;
+               [relative_short] astring *Comment;
+               uint16 CommentHigh;
+               [relative_short] astring *UsrComment;
+               uint16 UsrCommentHigh;
+               [relative_short] astring *FullName;
+               uint16 FullNameHigh;
+       } rap_NetUserInfo10;
 
        typedef struct {
-               uint16 JobID;
-               uint16 Priority;
-               [relative_short] [string,charset(DOS)] uint8 *UserName;
+               [charset(DOS)] uint8 Name[21];
+               uint8 Pad;
+               [relative_short] astring *Comment;
+               uint16 CommentHigh;
+               [relative_short] astring *UsrComment;
+               uint16 UsrCommentHigh;
+               [relative_short] astring *FullName;
+               uint16 FullNameHigh;
+               rap_UserPriv Priv;
+               rap_AuthFlags AuthFlags;
+               time_t PasswordAge;
+               [relative_short] astring *HomeDir;
+               uint16 HomeDirHigh;
+               [relative_short] astring *Parms;
+               uint16 ParmsHigh;
+               time_t LastLogon;
+               time_t LastLogOff;
+               uint16 BadPWCount;
+               uint16 NumLogons;
+               [relative_short] astring *LogonServer;
+               uint16 LogonServerHigh;
+               uint16 CountryCode;
+               [relative_short] astring *WorkStations;
+               uint16 WorkStationsHigh;
+               uint32 MaxStorage;
+               uint16 UnitsPerWeek;
+               [relative_short] rap_LogonHours *LogonHours;
+               uint16 LogonHoursHigh;
+               uint16 CodePage;
+       } rap_NetUserInfo11;
+
+       typedef [public,nodiscriminant] union {
+               [case(0)] rap_NetUserInfo0 info0;
+               [case(1)] rap_NetUserInfo1 info1;
+               [case(2)] rap_NetUserInfo2 info2;
+               [case(10)] rap_NetUserInfo10 info10;
+               [case(11)] rap_NetUserInfo11 info11;
+       } rap_netuser_info;
+
+       [public] void rap_NetUserGetInfo(
+               [in] astring UserName,
+               [in] uint16 level,
+               [in] uint16 bufsize,
+               [out] rap_status status,
+               [out] uint16 convert,
+               [out] uint16 available,
+               [out,switch_is(level)] rap_netuser_info info
+       );
+
+       typedef struct {
+               [relative_short] astring *ComputerName;
+               uint16 ComputerNameHigh;
+               [relative_short] astring *UserName;
                uint16 UserNameHigh;
-               uint16 JobPosition;
-               rap_PrintJStatusCode JobStatus;
-               uint32 TimeSubmitted;
-               uint32 JobSize;
-               [relative_short] [string,charset(DOS)] uint8 *JobCommentString;
-               uint16 JobCommentStringHigh;
-               [relative_short] [string,charset(DOS)] uint8 *DocumentName;
-               uint16 DocumentNameHigh;
-               [relative_short] [string,charset(DOS)] uint8 *NotifyName;
-               uint16 NotifyNameHigh;
-               [relative_short] [string,charset(DOS)] uint8 *DataType;
-               uint16 DataTypeHigh;
-               [relative_short] [string,charset(DOS)] uint8 *PrintParameterString;
-               uint16 PrintParameterStringHigh;
-               [relative_short] [string,charset(DOS)] uint8 *StatusString;
-               uint16 StatusStringHigh;
-               [relative_short] [string,charset(DOS)] uint8 *QueueName;
-               uint16 QueueNameHigh;
-               [relative_short] [string,charset(DOS)] uint8 *PrintProcessorName;
-               uint16 PrintProcessorNameHigh;
-               [relative_short] [string,charset(DOS)] uint8 *PrintProcessorParams;
-               uint16 PrintProcessorParamsHigh;
-               [relative_short] [string,charset(DOS)] uint8 *DriverName;
-               uint16 DriverNameHigh;
-               [relative_short] [string,charset(DOS)] uint8 *DriverDataOffset;
-               uint16 DriverDataOffsetHigh;
-               [relative_short] [string,charset(DOS)] uint8 *PrinterNameOffset;
-               uint16 PrinterNameOffsetHigh;
-       } rap_PrintJobInfo3;
+               uint16 num_conns;
+               uint16 num_opens;
+               uint16 num_users;
+               uint32 sess_time;
+               uint32 idle_time;
+               uint32 user_flags;
+               [relative_short] astring *CliTypeName;
+               uint16 CliTypeNameHigh;
+       } rap_session_info_2;
+
+       typedef [public,nodiscriminant] union {
+               [case(2)] rap_session_info_2 info2;
+       } rap_session_info;
 
-       [public,noprint] void rap_NetPrintQEnum(
+       /* not documented in MS-RAP */
+       [public] void rap_NetSessionEnum(
                [in] uint16 level,
                [in] uint16 bufsize,
-               [out] uint16 status,
+               [out] rap_status status,
                [out] uint16 convert,
                [out] uint16 count,
                [out] uint16 available,
-               [out,switch_is(level)] rap_printq_info *info
+               [out,switch_is(level)] rap_session_info info[count]
+       );
+
+       /* not documented in MS-RAP */
+       [public] void rap_NetSessionGetInfo(
+               [in] astring SessionName,
+               [in] uint16 level,
+               [in] uint16 bufsize,
+               [out] rap_status status,
+               [out] uint16 convert,
+               [out] uint16 available,
+               [out,switch_is(level)] rap_session_info info
+       );
+
+       /* not documented in MS-RAP */
+       [public] void rap_NetUserAdd(
+               [in] uint16 level,
+               [in] uint16 bufsize,
+               [in] uint16 pwdlength,
+               [in] uint16 unknown,
+               [in,switch_is(level)] rap_netuser_info info,
+               [out] rap_status status,
+               [out] uint16 convert
+       );
+
+       /* not documented in MS-RAP */
+       [public] void rap_NetUserDelete(
+               [in] astring UserName,
+               [out] rap_status status,
+               [out] uint16 convert
+       );
+
+       typedef [public] struct {
+               uint32 TimeSinceJan11970;
+               uint32 TimeSinceBoot;
+               uint8 Hours;
+               uint8 Minutes;
+               uint8 Seconds;
+               uint8 Hundreds;
+               uint16 TimeZone;
+               uint16 ClockFrequency;
+               uint8 Day;
+               uint8 Month;
+               uint16 Year;
+               uint8 Weekday;
+       } rap_TimeOfDayInfo;
+
+       [public] void rap_NetRemoteTOD(
+               [in] uint16 bufsize,
+               [out] rap_status status,
+               [out] uint16 convert,
+               [out] rap_TimeOfDayInfo tod
        );
 
        /* Parameter description strings for RAP calls   */