include/rpc_srvsvc.h

説明を見る。
00001 /*
00002    Unix SMB/CIFS implementation.
00003    SMB parameters and setup
00004    Copyright (C) Andrew Tridgell 1992-1997
00005    Copyright (C) Luke Kenneth Casson Leighton 1996-1997
00006    Copyright (C) Paul Ashton 1997
00007    Copyright (C) Nigel Williams 2001
00008    Copyright (C) Gerald (Jerry) Carter 2006.
00009 
00010    
00011    This program is free software; you can redistribute it and/or modify
00012    it under the terms of the GNU General Public License as published by
00013    the Free Software Foundation; either version 2 of the License, or
00014    (at your option) any later version.
00015    
00016    This program is distributed in the hope that it will be useful,
00017    but WITHOUT ANY WARRANTY; without even the implied warranty of
00018    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00019    GNU General Public License for more details.
00020    
00021    You should have received a copy of the GNU General Public License
00022    along with this program; if not, write to the Free Software
00023    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00024 */
00025 
00026 #ifndef _RPC_SRVSVC_H /* _RPC_SRVSVC_H */
00027 #define _RPC_SRVSVC_H 
00028 
00029 /* srvsvc pipe */
00030 #define SRV_NET_CONN_ENUM          0x08
00031 #define SRV_NET_FILE_ENUM          0x09
00032 #define SRV_NET_FILE_CLOSE         0x0b
00033 #define SRV_NET_SESS_ENUM          0x0c
00034 #define SRV_NET_SESS_DEL           0x0d
00035 #define SRV_NET_SHARE_ADD          0x0e
00036 #define SRV_NET_SHARE_ENUM_ALL     0x0f
00037 #define SRV_NET_SHARE_GET_INFO     0x10
00038 #define SRV_NET_SHARE_SET_INFO     0x11
00039 #define SRV_NET_SHARE_DEL          0x12
00040 #define SRV_NET_SHARE_DEL_STICKY   0x13
00041 #define SRV_NET_SRV_GET_INFO       0x15
00042 #define SRV_NET_SRV_SET_INFO       0x16
00043 #define SRV_NET_DISK_ENUM          0x17
00044 #define SRV_NET_REMOTE_TOD         0x1c
00045 #define SRV_NET_NAME_VALIDATE      0x21
00046 #define SRV_NET_SHARE_ENUM         0x24
00047 #define SRV_NET_FILE_QUERY_SECDESC 0x27
00048 #define SRV_NET_FILE_SET_SECDESC   0x28
00049 
00050 #define MAX_SERVER_DISK_ENTRIES 15
00051 
00052 typedef struct disk_info {
00053         uint32  unknown;
00054         UNISTR3 disk_name;
00055 } DISK_INFO;
00056 
00057 typedef struct disk_enum_container {
00058         uint32 level;
00059         uint32 entries_read;
00060         uint32 unknown;
00061         uint32 disk_info_ptr;
00062         DISK_INFO *disk_info;
00063 } DISK_ENUM_CONTAINER;
00064 
00065 typedef struct net_srv_disk_enum {
00066         uint32 ptr_srv_name;         /* pointer (to server name?) */
00067         UNISTR2 uni_srv_name;        /* server name */
00068 
00069         DISK_ENUM_CONTAINER disk_enum_ctr;
00070 
00071         uint32 preferred_len;        /* preferred maximum length (0xffff ffff) */
00072         uint32 total_entries;        /* total number of entries */
00073         ENUM_HND enum_hnd;
00074         WERROR status;               /* return status */
00075 } SRV_Q_NET_DISK_ENUM, SRV_R_NET_DISK_ENUM;
00076 
00077 /***************************/
00078 
00079 typedef struct  {
00080         UNISTR2 *servername;
00081         UNISTR2 sharename;
00082         uint32 type;
00083         uint32 flags;
00084         WERROR status;
00085 } SRV_Q_NET_NAME_VALIDATE;
00086 
00087 typedef struct  {
00088         WERROR status;
00089 } SRV_R_NET_NAME_VALIDATE;
00090 
00091 /***************************/
00092 
00093 /* oops - this is going to take up a *massive* amount of stack. */
00094 /* the UNISTR2s already have 1024 uint16 chars in them... */
00095 
00096 #define MAX_SESS_ENTRIES 32
00097 
00098 typedef struct {
00099         UNISTR2 *sharename;
00100 } SESS_INFO_0;
00101 
00102 typedef struct {
00103         uint32 num_entries_read;
00104         uint32 ptr_sess_info;
00105         uint32 num_entries_read2;
00106         SESS_INFO_0 info_0[MAX_SESS_ENTRIES];
00107 } SRV_SESS_INFO_0;
00108 
00109 typedef struct {
00110         UNISTR2 *sharename;
00111         UNISTR2 *username;
00112         uint32 num_opens;
00113         uint32 open_time;
00114         uint32 idle_time;
00115         uint32 user_flags;
00116 } SESS_INFO_1;
00117 
00118 typedef struct {
00119         uint32 num_entries_read;
00120         uint32 ptr_sess_info;
00121         uint32 num_entries_read2;
00122         SESS_INFO_1 info_1[MAX_SESS_ENTRIES];
00123 } SRV_SESS_INFO_1;
00124 
00125 typedef struct {
00126         uint32 switch_value;
00127         uint32 ptr_sess_ctr;
00128         union {
00129                 SRV_SESS_INFO_0 info0; 
00130                 SRV_SESS_INFO_1 info1; 
00131         } sess;
00132 
00133 } SRV_SESS_INFO_CTR;
00134 
00135 typedef struct {
00136         UNISTR2 *servername;
00137         UNISTR2 *qualifier;
00138         UNISTR2 *username;
00139         uint32 sess_level;
00140         SRV_SESS_INFO_CTR *ctr;
00141         uint32 preferred_len;
00142         ENUM_HND enum_hnd;
00143 } SRV_Q_NET_SESS_ENUM;
00144 
00145 typedef struct {
00146         uint32 sess_level; 
00147         SRV_SESS_INFO_CTR *ctr;
00148         uint32 total_entries;
00149         ENUM_HND enum_hnd;
00150         WERROR status;
00151 } SRV_R_NET_SESS_ENUM;
00152 
00153 /***************************/
00154 
00155 /* SRV_Q_NET_SESS_DEL */
00156 typedef struct q_net_sess_del
00157 {
00158         uint32 ptr_srv_name;         /* pointer (to server name?) */
00159         UNISTR2 uni_srv_name;        /* server name */
00160 
00161         uint32 ptr_cli_name;         /* pointer (to qualifier name) */
00162         UNISTR2 uni_cli_name;        /* qualifier name "\\qualifier" */
00163 
00164         uint32 ptr_user_name;         /* pointer (to user name */
00165         UNISTR2 uni_user_name;        /* user name */
00166 
00167 } SRV_Q_NET_SESS_DEL;
00168 
00169 /* SRV_R_NET_SESS_DEL */
00170 typedef struct r_net_sess_del
00171 {
00172         WERROR status;               /* return status */
00173 
00174 } SRV_R_NET_SESS_DEL;
00175 
00176 /* CONN_INFO_0 (pointers to level 0 connection info strings) */
00177 typedef struct ptr_conn_info0
00178 {
00179         uint32 id; /* connection id. */
00180 
00181 } CONN_INFO_0;
00182 
00183 /* oops - this is going to take up a *massive* amount of stack. */
00184 /* the UNISTR2s already have 1024 uint16 chars in them... */
00185 #define MAX_CONN_ENTRIES 32
00186 
00187 /* SRV_CONN_INFO_0 */
00188 typedef struct srv_conn_info_0_info
00189 {
00190         uint32 num_entries_read;                     /* EntriesRead */
00191         uint32 ptr_conn_info;                       /* Buffer */
00192         uint32 num_entries_read2;                    /* EntriesRead */
00193 
00194         CONN_INFO_0     info_0    [MAX_CONN_ENTRIES]; /* connection entry pointers */
00195 
00196 } SRV_CONN_INFO_0;
00197 
00198 /* CONN_INFO_1 (pointers to level 1 connection info strings) */
00199 typedef struct ptr_conn_info1
00200 {
00201         uint32 id;   /* connection id */
00202         uint32 type; /* 0x3 */
00203         uint32 num_opens;
00204         uint32 num_users;
00205         uint32 open_time;
00206 
00207         uint32 ptr_usr_name; /* pointer to user name. */
00208         uint32 ptr_net_name; /* pointer to network name (e.g IPC$). */
00209 
00210 } CONN_INFO_1;
00211 
00212 /* CONN_INFO_1_STR (level 1 connection info strings) */
00213 typedef struct str_conn_info1
00214 {
00215         UNISTR2 uni_usr_name; /* unicode string of user */
00216         UNISTR2 uni_net_name; /* unicode string of name */
00217 
00218 } CONN_INFO_1_STR;
00219 
00220 /* SRV_CONN_INFO_1 */
00221 typedef struct srv_conn_info_1_info
00222 {
00223         uint32 num_entries_read;                     /* EntriesRead */
00224         uint32 ptr_conn_info;                       /* Buffer */
00225         uint32 num_entries_read2;                    /* EntriesRead */
00226 
00227         CONN_INFO_1     info_1    [MAX_CONN_ENTRIES]; /* connection entry pointers */
00228         CONN_INFO_1_STR info_1_str[MAX_CONN_ENTRIES]; /* connection entry strings */
00229 
00230 } SRV_CONN_INFO_1;
00231 
00232 /* SRV_CONN_INFO_CTR */
00233 typedef struct srv_conn_info_ctr_info
00234 {
00235         uint32 switch_value;         /* switch value */
00236         uint32 ptr_conn_ctr;       /* pointer to conn info union */
00237         union
00238     {
00239                 SRV_CONN_INFO_0 info0; /* connection info level 0 */
00240                 SRV_CONN_INFO_1 info1; /* connection info level 1 */
00241 
00242     } conn;
00243 
00244 } SRV_CONN_INFO_CTR;
00245 
00246 
00247 /* SRV_Q_NET_CONN_ENUM */
00248 typedef struct q_net_conn_enum_info
00249 {
00250         uint32 ptr_srv_name;         /* pointer (to server name) */
00251         UNISTR2 uni_srv_name;        /* server name "\\server" */
00252 
00253         uint32 ptr_qual_name;         /* pointer (to qualifier name) */
00254         UNISTR2 uni_qual_name;        /* qualifier name "\\qualifier" */
00255 
00256         uint32 conn_level;          /* connection level */
00257 
00258         SRV_CONN_INFO_CTR *ctr;
00259 
00260         uint32 preferred_len;        /* preferred maximum length (0xffff ffff) */
00261         ENUM_HND enum_hnd;
00262 
00263 } SRV_Q_NET_CONN_ENUM;
00264 
00265 /* SRV_R_NET_CONN_ENUM */
00266 typedef struct r_net_conn_enum_info
00267 {
00268         uint32 conn_level;          /* share level */
00269 
00270         SRV_CONN_INFO_CTR *ctr;
00271 
00272         uint32 total_entries;                    /* total number of entries */
00273         ENUM_HND enum_hnd;
00274 
00275         WERROR status;               /* return status */
00276 
00277 } SRV_R_NET_CONN_ENUM;
00278 
00279 /* SH_INFO_0 */
00280 typedef struct ptr_share_info0
00281 {
00282         uint32 ptr_netname; /* pointer to net name. */
00283 } SH_INFO_0;
00284 
00285 /* SH_INFO_0_STR (level 0 share info strings) */
00286 typedef struct str_share_info0
00287 {
00288         SH_INFO_0 *ptrs;
00289 
00290         UNISTR2 uni_netname; /* unicode string of net name */
00291 
00292 } SH_INFO_0_STR;
00293 
00294 /* SRV_SHARE_INFO_0 */
00295 typedef struct share_info_0_info
00296 {
00297         SH_INFO_0 info_0;
00298         SH_INFO_0_STR info_0_str;
00299 
00300 } SRV_SHARE_INFO_0;
00301 
00302 /* SH_INFO_1 (pointers to level 1 share info strings) */
00303 typedef struct ptr_share_info1
00304 {
00305         uint32 ptr_netname; /* pointer to net name. */
00306         uint32 type; /* ipc, print, disk ... */
00307         uint32 ptr_remark; /* pointer to comment. */
00308 
00309 } SH_INFO_1;
00310 
00311 /* SH_INFO_1_STR (level 1 share info strings) */
00312 typedef struct str_share_info1
00313 {
00314         SH_INFO_1 *ptrs;
00315 
00316         UNISTR2 uni_netname; /* unicode string of net name */
00317         UNISTR2 uni_remark; /* unicode string of comment */
00318 
00319 } SH_INFO_1_STR;
00320 
00321 /* SRV_SHARE_INFO_1 */
00322 typedef struct share_info_1_info
00323 {
00324         SH_INFO_1 info_1;
00325         SH_INFO_1_STR info_1_str;
00326 
00327 } SRV_SHARE_INFO_1;
00328 
00329 /* SH_INFO_2 (pointers to level 2 share info strings) */
00330 typedef struct ptr_share_info2
00331 {
00332         uint32 ptr_netname; /* pointer to net name. */
00333         uint32 type; /* ipc, print, disk ... */
00334         uint32 ptr_remark; /* pointer to comment. */
00335         uint32 perms;      /* permissions */
00336         uint32 max_uses;   /* maximum uses */
00337         uint32 num_uses;   /* current uses */
00338         uint32 ptr_path;   /* pointer to path name */
00339         uint32 ptr_passwd; /* pointer to password */
00340 
00341 } SH_INFO_2;
00342 
00343 /* SH_INFO_2_STR (level 2 share info strings) */
00344 typedef struct str_share_info2
00345 {
00346         SH_INFO_2 *ptrs;
00347 
00348         UNISTR2 uni_netname; /* unicode string of net name (e.g NETLOGON) */
00349         UNISTR2 uni_remark;  /* unicode string of comment (e.g "Logon server share") */
00350         UNISTR2 uni_path;    /* unicode string of local path (e.g c:\winnt\system32\repl\import\scripts) */
00351         UNISTR2 uni_passwd;  /* unicode string of password - presumably for share level security (e.g NULL) */
00352 
00353 } SH_INFO_2_STR;
00354 
00355 /* SRV_SHARE_INFO_2 */
00356 typedef struct share_info_2_info
00357 {
00358         SH_INFO_2 info_2;
00359         SH_INFO_2_STR info_2_str;
00360 
00361 } SRV_SHARE_INFO_2;
00362 
00363 typedef struct ptr_share_info501
00364 {
00365         uint32 ptr_netname; /* pointer to net name */
00366         uint32 type;     /* ipc, print, disk */
00367         uint32 ptr_remark;  /* pointer to comment */
00368         uint32 csc_policy;  /* client-side offline caching policy << 4 */
00369 } SH_INFO_501;
00370 
00371 typedef struct str_share_info501
00372 {
00373         UNISTR2 uni_netname; /* unicode string of net name */
00374         UNISTR2 uni_remark;  /* unicode string of comment */
00375 } SH_INFO_501_STR;
00376 
00377 /* SRV_SHARE_INFO_501 */
00378 typedef struct share_info_501_info
00379 {
00380         SH_INFO_501 info_501;
00381         SH_INFO_501_STR info_501_str;
00382 } SRV_SHARE_INFO_501;
00383 
00384 /* SH_INFO_502 (pointers to level 502 share info strings) */
00385 typedef struct ptr_share_info502
00386 {
00387         uint32 ptr_netname; /* pointer to net name. */
00388         uint32 type; /* ipc, print, disk ... */
00389         uint32 ptr_remark; /* pointer to comment. */
00390         uint32 perms;      /* permissions */
00391         uint32 max_uses;   /* maximum uses */
00392         uint32 num_uses;   /* current uses */
00393         uint32 ptr_path;   /* pointer to path name */
00394         uint32 ptr_passwd; /* pointer to password */
00395         uint32 reserved;    /* this holds the space taken by the sd in the rpc packet */
00396         uint32 reserved_offset;   /* required for _post operation when marshalling */
00397         uint32 sd_size;    /* size of security descriptor */
00398         uint32 ptr_sd;     /* pointer to security descriptor */
00399 
00400 } SH_INFO_502;
00401 
00402 /* SH_INFO_502_STR (level 502 share info strings) */
00403 typedef struct str_share_info502
00404 {
00405         SH_INFO_502 *ptrs;
00406 
00407         UNISTR2 uni_netname; /* unicode string of net name (e.g NETLOGON) */
00408         UNISTR2 uni_remark;  /* unicode string of comment (e.g "Logon server share") */
00409         UNISTR2 uni_path;    /* unicode string of local path (e.g c:\winnt\system32\repl\import\scripts) */
00410         UNISTR2 uni_passwd;  /* unicode string of password - presumably for share level security (e.g NULL) */
00411 
00412         uint32 reserved;
00413         uint32 sd_size;
00414         SEC_DESC *sd;
00415 
00416 } SH_INFO_502_STR;
00417 
00418 /* SRV_SHARE_INFO_502 */
00419 typedef struct share_info_502_info
00420 {
00421         SH_INFO_502 info_502;
00422         SH_INFO_502_STR info_502_str;
00423 
00424 } SRV_SHARE_INFO_502;
00425 
00426 typedef struct ptr_share_info1004
00427 {
00428         uint32 ptr_remark;
00429 
00430 } SH_INFO_1004;
00431 
00432 typedef struct str_share_info1004
00433 {
00434         SH_INFO_1004 *ptrs;
00435 
00436         UNISTR2 uni_remark;
00437 
00438 } SH_INFO_1004_STR;
00439 
00440 typedef struct ptr_info_1004_info
00441 {
00442         SH_INFO_1004     info_1004; 
00443         SH_INFO_1004_STR info_1004_str; 
00444 } SRV_SHARE_INFO_1004;
00445 
00446 typedef struct share_info_1005_info
00447 {
00448   uint32 share_info_flags; 
00449 } SRV_SHARE_INFO_1005;
00450 
00451 typedef struct share_info_1006_info
00452 {
00453         uint32 max_uses; 
00454 } SRV_SHARE_INFO_1006;
00455 
00456 typedef struct ptr_share_info1007
00457 {
00458         uint32 flags;
00459         uint32 ptr_AlternateDirectoryName;
00460 
00461 } SH_INFO_1007;
00462 
00463 typedef struct str_share_info1007
00464 {
00465         SH_INFO_1007 *ptrs;
00466 
00467         UNISTR2 uni_AlternateDirectoryName;
00468 
00469 } SH_INFO_1007_STR;
00470 
00471 typedef struct ptr_info_1007_info
00472 {
00473         SH_INFO_1007     info_1007; 
00474         SH_INFO_1007_STR info_1007_str; 
00475 } SRV_SHARE_INFO_1007;
00476 
00477 /* SRV_SHARE_INFO_1501 */
00478 typedef struct share_info_1501_info
00479 {
00480         SEC_DESC_BUF *sdb;
00481 } SRV_SHARE_INFO_1501;
00482 
00483 /* SRV_SHARE_INFO_CTR */
00484 typedef struct srv_share_info_ctr_info
00485 {
00486         uint32 info_level;
00487         uint32 switch_value;
00488         uint32 ptr_share_info;
00489 
00490         uint32 num_entries;
00491         uint32 ptr_entries;
00492         uint32 num_entries2;
00493 
00494         union {
00495                 SRV_SHARE_INFO_0    *info0;
00496                 SRV_SHARE_INFO_1    *info1;    /* share info level 1 */
00497                 SRV_SHARE_INFO_2    *info2;    /* share info level 2 */
00498                 SRV_SHARE_INFO_501  *info501;  /* share info level 501 */
00499                 SRV_SHARE_INFO_502  *info502;  /* share info level 502 */
00500                 SRV_SHARE_INFO_1004 *info1004;
00501                 SRV_SHARE_INFO_1005 *info1005;
00502                 SRV_SHARE_INFO_1006 *info1006;
00503                 SRV_SHARE_INFO_1007 *info1007;
00504                 SRV_SHARE_INFO_1501 *info1501;
00505                 void *info;
00506 
00507         } share;
00508 
00509 } SRV_SHARE_INFO_CTR;
00510 
00511 /* SRV_Q_NET_SHARE_ENUM */
00512 typedef struct q_net_share_enum_info
00513 {
00514         uint32 ptr_srv_name;         /* pointer (to server name?) */
00515         UNISTR2 uni_srv_name;        /* server name */
00516 
00517         SRV_SHARE_INFO_CTR ctr;     /* share info container */
00518 
00519         uint32 preferred_len;        /* preferred maximum length (0xffff ffff) */
00520 
00521         ENUM_HND enum_hnd;
00522 
00523 } SRV_Q_NET_SHARE_ENUM;
00524 
00525 
00526 /* SRV_R_NET_SHARE_ENUM */
00527 typedef struct r_net_share_enum_info
00528 {
00529         SRV_SHARE_INFO_CTR ctr;     /* share info container */
00530 
00531         uint32 total_entries;                    /* total number of entries */
00532         ENUM_HND enum_hnd;
00533 
00534         WERROR status;               /* return status */
00535 
00536 } SRV_R_NET_SHARE_ENUM;
00537 
00538 
00539 /* SRV_Q_NET_SHARE_GET_INFO */
00540 typedef struct q_net_share_get_info_info
00541 {
00542         uint32 ptr_srv_name;
00543         UNISTR2 uni_srv_name;
00544 
00545         UNISTR2 uni_share_name;
00546         uint32 info_level;
00547 
00548 } SRV_Q_NET_SHARE_GET_INFO;
00549 
00550 /* SRV_SHARE_INFO */
00551 typedef struct srv_share_info {
00552         uint32 switch_value;
00553         uint32 ptr_share_ctr;
00554 
00555         union {
00556                 SRV_SHARE_INFO_0    info0;
00557                 SRV_SHARE_INFO_1 info1;
00558                 SRV_SHARE_INFO_2 info2;
00559                 SRV_SHARE_INFO_501 info501;
00560                 SRV_SHARE_INFO_502 info502;
00561                 SRV_SHARE_INFO_1004 info1004;
00562                 SRV_SHARE_INFO_1005 info1005;
00563                 SRV_SHARE_INFO_1006 info1006;
00564                 SRV_SHARE_INFO_1007 info1007;
00565                 SRV_SHARE_INFO_1501 info1501;
00566         } share;
00567 } SRV_SHARE_INFO;
00568 
00569 /* SRV_R_NET_SHARE_GET_INFO */
00570 typedef struct r_net_share_get_info_info
00571 {
00572         SRV_SHARE_INFO info;
00573         WERROR status;
00574 
00575 } SRV_R_NET_SHARE_GET_INFO;
00576 
00577 /* SRV_Q_NET_SHARE_SET_INFO */
00578 typedef struct q_net_share_set_info_info
00579 {
00580         uint32 ptr_srv_name;
00581         UNISTR2 uni_srv_name;
00582 
00583         UNISTR2 uni_share_name;
00584         uint32 info_level;
00585 
00586         SRV_SHARE_INFO info;
00587 
00588         uint32 ptr_parm_error;
00589         uint32 parm_error;
00590 
00591 } SRV_Q_NET_SHARE_SET_INFO;
00592 
00593 /* SRV_R_NET_SHARE_SET_INFO */
00594 typedef struct r_net_share_set_info
00595 {
00596         uint32 ptr_parm_error;
00597         uint32 parm_error;
00598 
00599         WERROR status;               /* return status */
00600 
00601 } SRV_R_NET_SHARE_SET_INFO;
00602 
00603 /* SRV_Q_NET_SHARE_ADD */
00604 typedef struct q_net_share_add
00605 {
00606         uint32 ptr_srv_name;
00607         UNISTR2 uni_srv_name;
00608 
00609         uint32 info_level;
00610 
00611         SRV_SHARE_INFO info;
00612 
00613         uint32 ptr_err_index; /* pointer to error index */
00614         uint32 err_index;     /* index in info to field in error */
00615 
00616 } SRV_Q_NET_SHARE_ADD;
00617 
00618 /* SRV_R_NET_SHARE_ADD */
00619 typedef struct r_net_share_add
00620 {
00621 
00622         uint32 ptr_parm_error;
00623         uint32 parm_error;
00624 
00625         WERROR status;               /* return status */
00626 
00627 } SRV_R_NET_SHARE_ADD;
00628 
00629 /* SRV_Q_NET_SHARE_DEL */
00630 typedef struct q_net_share_del
00631 {
00632         uint32 ptr_srv_name;
00633         UNISTR2 uni_srv_name;
00634         UNISTR2 uni_share_name;
00635         uint32 reserved;
00636 
00637 } SRV_Q_NET_SHARE_DEL;
00638 
00639 /* SRV_R_NET_SHARE_DEL */
00640 typedef struct r_net_share_del
00641 {
00642         WERROR status;               /* return status */
00643 
00644 } SRV_R_NET_SHARE_DEL;
00645 
00646 /***************************/
00647 
00648 typedef struct {
00649         uint32 id;            /* file index */
00650         uint32 perms;         /* file permissions. don't know what format */
00651         uint32 num_locks;     /* file locks */
00652         UNISTR2 *path;        /* file name */
00653         UNISTR2 *user;        /* file owner */
00654 } FILE_INFO_3;
00655 
00656 typedef struct {
00657         uint32 level;                /* switch value */
00658         uint32 ptr_file_info;        /* pointer to file info union */
00659 
00660         uint32 num_entries;
00661         uint32 ptr_entries;
00662         uint32 num_entries2;
00663         union {
00664                 FILE_INFO_3 *info3;
00665         } file;
00666 
00667 } SRV_FILE_INFO_CTR;
00668 
00669 typedef struct {
00670         UNISTR2 *servername;
00671         UNISTR2 *qualifier;
00672         UNISTR2 *username;
00673         uint32 level;
00674         SRV_FILE_INFO_CTR ctr;
00675         uint32 preferred_len;     /* preferred maximum length (0xffff ffff) */
00676         ENUM_HND enum_hnd;
00677 } SRV_Q_NET_FILE_ENUM;
00678 
00679 typedef struct {
00680         uint32 level;   
00681         SRV_FILE_INFO_CTR ctr;
00682         uint32 total_entries;
00683         ENUM_HND enum_hnd;
00684         WERROR status;      
00685 } SRV_R_NET_FILE_ENUM;
00686 
00687 /* SRV_INFO_100 */
00688 typedef struct srv_info_100_info
00689 {
00690         uint32 platform_id;     /* 0x500 */
00691         uint32 ptr_name;        /* pointer to server name */
00692 
00693         UNISTR2 uni_name;       /* server name "server" */
00694 
00695 } SRV_INFO_100;
00696 
00697 /* SRV_INFO_101 */
00698 typedef struct srv_info_101_info
00699 {
00700         uint32 platform_id;     /* 0x500 */
00701         uint32 ptr_name;        /* pointer to server name */
00702         uint32 ver_major;       /* 0x4 */
00703         uint32 ver_minor;       /* 0x2 */
00704         uint32 srv_type;        /* browse etc type */
00705         uint32 ptr_comment;     /* pointer to server comment */
00706 
00707         UNISTR2 uni_name;       /* server name "server" */
00708         UNISTR2 uni_comment;    /* server comment "samba x.x.x blah" */
00709 
00710 } SRV_INFO_101;
00711 
00712 /* SRV_INFO_102  */
00713 typedef struct srv_info_102_info
00714 {
00715         uint32 platform_id;     /* 0x500 */
00716         uint32 ptr_name;        /* pointer to server name */
00717         uint32 ver_major;       /* 0x4 */
00718         uint32 ver_minor;       /* 0x2 */
00719         uint32 srv_type;        /* browse etc type */
00720         uint32 ptr_comment;     /* pointer to server comment */
00721         uint32 users;           /* 0xffff ffff*/
00722         uint32 disc;            /* 0xf */
00723         uint32 hidden;          /* 0x0 */
00724         uint32 announce;        /* 240 */
00725         uint32 ann_delta;       /* 3000 */
00726         uint32 licenses;        /* 0 */
00727         uint32 ptr_usr_path;    /* pointer to user path */
00728 
00729         UNISTR2 uni_name;       /* server name "server" */
00730         UNISTR2 uni_comment;    /* server comment "samba x.x.x blah" */
00731         UNISTR2 uni_usr_path;   /* "c:\" (eh?) */
00732 
00733 } SRV_INFO_102;
00734 
00735 
00736 /* SRV_INFO_CTR */
00737 typedef struct srv_info_ctr_info
00738 {
00739         uint32 switch_value;         /* switch value */
00740         uint32 ptr_srv_ctr;         /* pointer to server info */
00741         union
00742     {
00743                 SRV_INFO_102 sv102; /* server info level 102 */
00744                 SRV_INFO_101 sv101; /* server info level 101 */
00745                 SRV_INFO_100 sv100; /* server info level 100 */
00746 
00747     } srv;
00748 
00749 } SRV_INFO_CTR;
00750 
00751 /* SRV_Q_NET_SRV_GET_INFO */
00752 typedef struct q_net_srv_get_info
00753 {
00754         uint32  ptr_srv_name;
00755         UNISTR2 uni_srv_name; /* "\\server" */
00756         uint32  switch_value;
00757 
00758 } SRV_Q_NET_SRV_GET_INFO;
00759 
00760 /* SRV_R_NET_SRV_GET_INFO */
00761 typedef struct r_net_srv_get_info
00762 {
00763         SRV_INFO_CTR *ctr;
00764 
00765         WERROR status;               /* return status */
00766 
00767 } SRV_R_NET_SRV_GET_INFO;
00768 
00769 /* SRV_Q_NET_SRV_SET_INFO */
00770 typedef struct q_net_srv_set_info
00771 {
00772         uint32  ptr_srv_name;
00773         UNISTR2 uni_srv_name; /* "\\server" */
00774         uint32  switch_value;
00775 
00776         SRV_INFO_CTR *ctr;
00777 
00778 } SRV_Q_NET_SRV_SET_INFO;
00779 
00780 
00781 /* SRV_R_NET_SRV_SET_INFO */
00782 typedef struct r_net_srv_set_info
00783 {
00784         uint32 switch_value;         /* switch value */
00785 
00786         WERROR status;               /* return status */
00787 
00788 } SRV_R_NET_SRV_SET_INFO;
00789 
00790 /* SRV_Q_NET_REMOTE_TOD */
00791 typedef struct q_net_remote_tod
00792 {
00793         uint32  ptr_srv_name;
00794         UNISTR2 uni_srv_name; /* "\\server" */
00795 
00796 } SRV_Q_NET_REMOTE_TOD;
00797 
00798 /* TIME_OF_DAY_INFO */
00799 typedef struct time_of_day_info
00800 {
00801         uint32  elapsedt;
00802         uint32  msecs;
00803         uint32  hours;
00804         uint32  mins;
00805         uint32  secs;
00806         uint32  hunds;
00807         uint32  zone;
00808         uint32  tintervals;
00809         uint32  day;
00810         uint32  month;
00811         uint32  year;
00812         uint32  weekday;
00813         
00814 } TIME_OF_DAY_INFO;
00815 
00816 /* SRV_R_NET_REMOTE_TOD */
00817 typedef struct r_net_remote_tod
00818 {
00819         uint32 ptr_srv_tod;         /* pointer to TOD */
00820         TIME_OF_DAY_INFO *tod;
00821         
00822         WERROR status;               /* return status */
00823 
00824 } SRV_R_NET_REMOTE_TOD;
00825 
00826 /* SRV_Q_NET_FILE_QUERY_SECDESC */
00827 typedef struct q_net_file_query_secdesc
00828 {
00829         uint32  ptr_srv_name;
00830         UNISTR2 uni_srv_name;
00831         uint32  ptr_qual_name;
00832         UNISTR2 uni_qual_name;
00833         UNISTR2 uni_file_name;
00834         uint32  unknown1;
00835         uint32  unknown2;
00836         uint32  unknown3;
00837 } SRV_Q_NET_FILE_QUERY_SECDESC;
00838 
00839 /* SRV_R_NET_FILE_QUERY_SECDESC */
00840 typedef struct r_net_file_query_secdesc
00841 {
00842         uint32 ptr_response;
00843         uint32 size_response;
00844         uint32 ptr_secdesc;
00845         uint32 size_secdesc;
00846         SEC_DESC *sec_desc;
00847         WERROR status;
00848 } SRV_R_NET_FILE_QUERY_SECDESC;
00849 
00850 /* SRV_Q_NET_FILE_SET_SECDESC */
00851 typedef struct q_net_file_set_secdesc
00852 {
00853         uint32  ptr_srv_name;
00854         UNISTR2 uni_srv_name;
00855         uint32  ptr_qual_name;
00856         UNISTR2 uni_qual_name;
00857         UNISTR2 uni_file_name;
00858         uint32  sec_info;
00859         uint32  size_set;
00860         uint32  ptr_secdesc;
00861         uint32  size_secdesc;
00862         SEC_DESC *sec_desc;
00863 } SRV_Q_NET_FILE_SET_SECDESC;
00864 
00865 /* SRV_R_NET_FILE_SET_SECDESC */
00866 typedef struct r_net_file_set_secdesc
00867 {
00868         WERROR status;
00869 } SRV_R_NET_FILE_SET_SECDESC;
00870 
00871 /***************************/
00872 
00873 typedef struct {
00874         UNISTR2 *servername;
00875         uint32 file_id;
00876 } SRV_Q_NET_FILE_CLOSE;
00877 
00878 typedef struct {
00879         WERROR status;
00880 } SRV_R_NET_FILE_CLOSE;
00881 
00882 /***************************/
00883 
00884 #endif /* _RPC_SRVSVC_H */

Sambaに対してSat Aug 29 21:22:57 2009に生成されました。  doxygen 1.4.7