| 1 | /** |
| 2 | * This file has no copyright assigned and is placed in the Public Domain. |
| 3 | * This file is part of the mingw-w64 runtime package. |
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. |
| 5 | */ |
| 6 | #ifndef SVRAPI_INCLUDED |
| 7 | #define SVRAPI_INCLUDED |
| 8 | |
| 9 | #include <lmcons.h> |
| 10 | #include <lmerr.h> |
| 11 | |
| 12 | #ifndef RC_INVOKED |
| 13 | #pragma pack(1) |
| 14 | #endif |
| 15 | |
| 16 | #ifdef __cplusplus |
| 17 | extern "C" { |
| 18 | #endif |
| 19 | |
| 20 | #ifndef _SVRAPI_ |
| 21 | #define API_FUNCTION DECLSPEC_IMPORT API_RET_TYPE WINAPI |
| 22 | #else |
| 23 | #define API_FUNCTION API_RET_TYPE WINAPI |
| 24 | #endif |
| 25 | |
| 26 | extern API_FUNCTION NetAccessAdd(const char *pszServer,short sLevel,char *pbBuffer,unsigned short cbBuffer); |
| 27 | extern API_FUNCTION NetAccessCheck (char *pszReserved,char *pszUserName,char *pszResource,unsigned short usOperation,unsigned short *pusResult); |
| 28 | extern API_FUNCTION NetAccessDel(const char *pszServer,char *pszResource); |
| 29 | extern API_FUNCTION NetAccessEnum(const char *pszServer,char *pszBasePath,short fsRecursive,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcEntriesRead,unsigned short *pcTotalAvail); |
| 30 | extern API_FUNCTION NetAccessGetInfo(const char *pszServer,char *pszResource,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcbTotalAvail); |
| 31 | extern API_FUNCTION NetAccessSetInfo(const char *pszServer,char *pszResource,short sLevel,char *pbBuffer,unsigned short cbBuffer,short sParmNum); |
| 32 | extern API_FUNCTION NetAccessGetUserPerms (char *pszServer,char *pszUgName,char *pszResource,unsigned short *pusPerms); |
| 33 | |
| 34 | struct access_list { |
| 35 | char acl_ugname[LM20_UNLEN+1]; |
| 36 | char acl_ugname_pad_1; |
| 37 | short acl_access; |
| 38 | }; |
| 39 | |
| 40 | struct access_list_2 { |
| 41 | char *acl2_ugname; |
| 42 | unsigned short acl2_access; |
| 43 | }; |
| 44 | |
| 45 | struct access_list_12 { |
| 46 | char *acl12_ugname; |
| 47 | unsigned short acl12_access; |
| 48 | }; |
| 49 | |
| 50 | struct access_info_0 { |
| 51 | char *acc0_resource_name; |
| 52 | }; |
| 53 | |
| 54 | struct access_info_1 { |
| 55 | char *acc1_resource_name; |
| 56 | short acc1_attr; |
| 57 | short acc1_count; |
| 58 | }; |
| 59 | |
| 60 | struct access_info_2 { |
| 61 | char *acc2_resource_name; |
| 62 | short acc2_attr; |
| 63 | short acc2_count; |
| 64 | }; |
| 65 | |
| 66 | struct access_info_10 { |
| 67 | char *acc10_resource_name; |
| 68 | }; |
| 69 | |
| 70 | struct access_info_12 { |
| 71 | char *acc12_resource_name; |
| 72 | short acc12_attr; |
| 73 | short acc12_count; |
| 74 | }; |
| 75 | |
| 76 | #define MAXPERMENTRIES 64 |
| 77 | |
| 78 | #define ACCESS_NONE 0 |
| 79 | #define ACCESS_ALL (ACCESS_READ|ACCESS_WRITE|ACCESS_CREATE|ACCESS_EXEC|ACCESS_DELETE|ACCESS_ATRIB|ACCESS_PERM|ACCESS_FINDFIRST) |
| 80 | |
| 81 | #define ACCESS_READ 0x1 |
| 82 | #define ACCESS_WRITE 0x2 |
| 83 | #define ACCESS_CREATE 0x4 |
| 84 | #define ACCESS_EXEC 0x8 |
| 85 | #define ACCESS_DELETE 0x10 |
| 86 | #define ACCESS_ATRIB 0x20 |
| 87 | #define ACCESS_PERM 0x40 |
| 88 | #define ACCESS_FINDFIRST 0x80 |
| 89 | #define ACCESS_GROUP 0x8000 |
| 90 | #define ACCESS_AUDIT 0x1 |
| 91 | #define ACCESS_ATTR_PARMNUM 2 |
| 92 | #define ACCESS_LETTERS "RWCXDAP " |
| 93 | |
| 94 | extern API_FUNCTION NetShareAdd(const char *pszServer,short sLevel,const char *pbBuffer,unsigned short cbBuffer); |
| 95 | extern API_FUNCTION NetShareDel(const char *pszServer,const char *pszNetName,unsigned short usReserved); |
| 96 | extern API_FUNCTION NetShareEnum(const char *pszServer,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcEntriesRead,unsigned short *pcTotalAvail); |
| 97 | extern API_FUNCTION NetShareGetInfo(const char *pszServer,const char *pszNetName,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcbTotalAvail); |
| 98 | extern API_FUNCTION NetShareSetInfo(const char *pszServer,const char *pszNetName,short sLevel,const char *pbBuffer,unsigned short cbBuffer,short sParmNum); |
| 99 | |
| 100 | struct share_info_0 { |
| 101 | char shi0_netname[LM20_NNLEN+1]; |
| 102 | }; |
| 103 | |
| 104 | struct share_info_1 { |
| 105 | char shi1_netname[LM20_NNLEN+1]; |
| 106 | char shi1_pad1; |
| 107 | unsigned short shi1_type; |
| 108 | char *shi1_remark; |
| 109 | }; |
| 110 | |
| 111 | struct share_info_2 { |
| 112 | char shi2_netname[LM20_NNLEN+1]; |
| 113 | char shi2_pad1; |
| 114 | unsigned short shi2_type; |
| 115 | char *shi2_remark; |
| 116 | unsigned short shi2_permissions; |
| 117 | unsigned short shi2_max_uses; |
| 118 | unsigned short shi2_current_uses; |
| 119 | char *shi2_path; |
| 120 | char shi2_passwd[SHPWLEN+1]; |
| 121 | char shi2_pad2; |
| 122 | }; |
| 123 | |
| 124 | struct share_info_50 { |
| 125 | char shi50_netname[LM20_NNLEN+1]; |
| 126 | unsigned char shi50_type; |
| 127 | unsigned short shi50_flags; |
| 128 | char *shi50_remark; |
| 129 | char *shi50_path; |
| 130 | char shi50_rw_password[SHPWLEN+1]; |
| 131 | char shi50_ro_password[SHPWLEN+1]; |
| 132 | }; |
| 133 | |
| 134 | #define SHI50F_RDONLY 0x0001 |
| 135 | #define SHI50F_FULL 0x0002 |
| 136 | #define SHI50F_DEPENDSON (SHI50F_RDONLY|SHI50F_FULL) |
| 137 | #define SHI50F_ACCESSMASK (SHI50F_RDONLY|SHI50F_FULL) |
| 138 | |
| 139 | #define SHI50F_PERSIST 0x0100 |
| 140 | |
| 141 | #define SHI50F_SYSTEM 0x0200 |
| 142 | |
| 143 | #ifndef PARMNUM_ALL |
| 144 | #define PARMNUM_ALL 0 |
| 145 | #endif |
| 146 | |
| 147 | #define SHI_REMARK_PARMNUM 4 |
| 148 | #define SHI_PERMISSIONS_PARMNUM 5 |
| 149 | #define SHI_MAX_USES_PARMNUM 6 |
| 150 | #define SHI_PASSWD_PARMNUM 9 |
| 151 | |
| 152 | #define SHI1_NUM_ELEMENTS 4 |
| 153 | #define SHI2_NUM_ELEMENTS 10 |
| 154 | |
| 155 | #define STYPE_DISKTREE 0 |
| 156 | #define STYPE_PRINTQ 1 |
| 157 | #define STYPE_DEVICE 2 |
| 158 | #define STYPE_IPC 3 |
| 159 | |
| 160 | #define SHI_USES_UNLIMITED -1 |
| 161 | |
| 162 | extern API_FUNCTION NetSessionDel(const char *pszServer,const char *pszClientName,short sReserved); |
| 163 | extern API_FUNCTION NetSessionEnum(const char *pszServer,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcEntriesRead,unsigned short *pcTotalAvail); |
| 164 | extern API_FUNCTION NetSessionGetInfo(const char *pszServer,const char *pszClientName,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcbTotalAvail); |
| 165 | |
| 166 | struct session_info_0 { |
| 167 | char *sesi0_cname; |
| 168 | }; |
| 169 | |
| 170 | struct session_info_1 { |
| 171 | char *sesi1_cname; |
| 172 | char *sesi1_username; |
| 173 | unsigned short sesi1_num_conns; |
| 174 | unsigned short sesi1_num_opens; |
| 175 | unsigned short sesi1_num_users; |
| 176 | unsigned __LONG32 sesi1_time; |
| 177 | unsigned __LONG32 sesi1_idle_time; |
| 178 | unsigned __LONG32 sesi1_user_flags; |
| 179 | }; |
| 180 | |
| 181 | struct session_info_2 { |
| 182 | char *sesi2_cname; |
| 183 | char *sesi2_username; |
| 184 | unsigned short sesi2_num_conns; |
| 185 | unsigned short sesi2_num_opens; |
| 186 | unsigned short sesi2_num_users; |
| 187 | unsigned __LONG32 sesi2_time; |
| 188 | unsigned __LONG32 sesi2_idle_time; |
| 189 | unsigned __LONG32 sesi2_user_flags; |
| 190 | char *sesi2_cltype_name; |
| 191 | }; |
| 192 | |
| 193 | struct session_info_10 { |
| 194 | char *sesi10_cname; |
| 195 | char *sesi10_username; |
| 196 | unsigned __LONG32 sesi10_time; |
| 197 | unsigned __LONG32 sesi10_idle_time; |
| 198 | }; |
| 199 | |
| 200 | struct session_info_50 { |
| 201 | char *sesi50_cname; |
| 202 | char *sesi50_username; |
| 203 | unsigned __LONG32 sesi50_key; |
| 204 | unsigned short sesi50_num_conns; |
| 205 | unsigned short sesi50_num_opens; |
| 206 | unsigned __LONG32 sesi50_time; |
| 207 | unsigned __LONG32 sesi50_idle_time; |
| 208 | unsigned char sesi50_protocol; |
| 209 | unsigned char pad1; |
| 210 | }; |
| 211 | |
| 212 | #define SESS_GUEST 1 |
| 213 | #define SESS_NOENCRYPTION 2 |
| 214 | |
| 215 | #define SESI1_NUM_ELEMENTS 8 |
| 216 | #define SESI2_NUM_ELEMENTS 9 |
| 217 | |
| 218 | extern API_FUNCTION NetConnectionEnum(const char *pszServer,const char *pszQualifier,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcEntriesRead,unsigned short *pcTotalAvail); |
| 219 | |
| 220 | struct connection_info_0 { |
| 221 | unsigned short coni0_id; |
| 222 | }; |
| 223 | |
| 224 | struct connection_info_1 { |
| 225 | unsigned short coni1_id; |
| 226 | unsigned short coni1_type; |
| 227 | unsigned short coni1_num_opens; |
| 228 | unsigned short coni1_num_users; |
| 229 | unsigned __LONG32 coni1_time; |
| 230 | char *coni1_username; |
| 231 | char *coni1_netname; |
| 232 | }; |
| 233 | |
| 234 | struct connection_info_50 { |
| 235 | unsigned short coni50_type; |
| 236 | unsigned short coni50_num_opens; |
| 237 | unsigned __LONG32 coni50_time; |
| 238 | char *coni50_netname; |
| 239 | char *coni50_username; |
| 240 | }; |
| 241 | |
| 242 | extern API_FUNCTION NetFileClose2(const char *pszServer,unsigned __LONG32 ulFileId); |
| 243 | extern API_FUNCTION NetFileEnum(const char *pszServer,const char *pszBasePath,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcEntriesRead,unsigned short *pcTotalAvail); |
| 244 | |
| 245 | struct file_info_0 { |
| 246 | unsigned short fi0_id; |
| 247 | }; |
| 248 | |
| 249 | struct file_info_1 { |
| 250 | unsigned short fi1_id; |
| 251 | unsigned short fi1_permissions; |
| 252 | unsigned short fi1_num_locks; |
| 253 | char *fi1_pathname; |
| 254 | char *fi1_username; |
| 255 | }; |
| 256 | |
| 257 | struct file_info_2 { |
| 258 | unsigned __LONG32 fi2_id; |
| 259 | }; |
| 260 | |
| 261 | struct file_info_3 { |
| 262 | unsigned __LONG32 fi3_id; |
| 263 | unsigned short fi3_permissions; |
| 264 | unsigned short fi3_num_locks; |
| 265 | char *fi3_pathname; |
| 266 | char *fi3_username; |
| 267 | }; |
| 268 | |
| 269 | struct file_info_50 { |
| 270 | unsigned __LONG32 fi50_id; |
| 271 | unsigned short fi50_permissions; |
| 272 | unsigned short fi50_num_locks; |
| 273 | char *fi50_pathname; |
| 274 | char *fi50_username; |
| 275 | char *fi50_sharename; |
| 276 | }; |
| 277 | |
| 278 | struct res_file_enum_2 { |
| 279 | unsigned short res_pad; |
| 280 | unsigned short res_fs; |
| 281 | unsigned __LONG32 res_pro; |
| 282 | }; |
| 283 | |
| 284 | #define PERM_FILE_READ 0x1 |
| 285 | #define PERM_FILE_WRITE 0x2 |
| 286 | #define PERM_FILE_CREATE 0x4 |
| 287 | |
| 288 | typedef struct res_file_enum_2 FRK; |
| 289 | |
| 290 | #define FRK_INIT(f) { (f).res_pad = 0; (f).res_fs = 0; (f).res_pro = 0; } |
| 291 | |
| 292 | extern API_FUNCTION NetServerGetInfo(const char *pszServer,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcbTotalAvail); |
| 293 | |
| 294 | struct server_info_0 { |
| 295 | char sv0_name[CNLEN + 1]; |
| 296 | }; |
| 297 | |
| 298 | struct server_info_1 { |
| 299 | char sv1_name[CNLEN + 1]; |
| 300 | unsigned char sv1_version_major; |
| 301 | unsigned char sv1_version_minor; |
| 302 | unsigned __LONG32 sv1_type; |
| 303 | char *sv1_comment; |
| 304 | }; |
| 305 | |
| 306 | struct server_info_50 { |
| 307 | char sv50_name[CNLEN + 1]; |
| 308 | unsigned char sv50_version_major; |
| 309 | unsigned char sv50_version_minor; |
| 310 | unsigned __LONG32 sv50_type; |
| 311 | char *sv50_comment; |
| 312 | unsigned short sv50_security; |
| 313 | unsigned short sv50_auditing; |
| 314 | char *sv50_container; |
| 315 | char *sv50_ab_server; |
| 316 | char *sv50_ab_dll; |
| 317 | }; |
| 318 | |
| 319 | struct server_info_2 { |
| 320 | char sv2_name[CNLEN + 1]; |
| 321 | unsigned char sv2_version_major; |
| 322 | unsigned char sv2_version_minor; |
| 323 | unsigned __LONG32 sv2_type; |
| 324 | char *sv2_comment; |
| 325 | unsigned __LONG32 sv2_ulist_mtime; |
| 326 | unsigned __LONG32 sv2_glist_mtime; |
| 327 | unsigned __LONG32 sv2_alist_mtime; |
| 328 | unsigned short sv2_users; |
| 329 | unsigned short sv2_disc; |
| 330 | char *sv2_alerts; |
| 331 | unsigned short sv2_security; |
| 332 | unsigned short sv2_auditing; |
| 333 | unsigned short sv2_numadmin; |
| 334 | unsigned short sv2_lanmask; |
| 335 | unsigned short sv2_hidden; |
| 336 | unsigned short sv2_announce; |
| 337 | unsigned short sv2_anndelta; |
| 338 | char sv2_guestacct[LM20_UNLEN + 1]; |
| 339 | unsigned char sv2_pad1; |
| 340 | char *sv2_userpath; |
| 341 | unsigned short sv2_chdevs; |
| 342 | unsigned short sv2_chdevq; |
| 343 | unsigned short sv2_chdevjobs; |
| 344 | unsigned short sv2_connections; |
| 345 | unsigned short sv2_shares; |
| 346 | unsigned short sv2_openfiles; |
| 347 | unsigned short sv2_sessopens; |
| 348 | unsigned short sv2_sessvcs; |
| 349 | unsigned short sv2_sessreqs; |
| 350 | unsigned short sv2_opensearch; |
| 351 | unsigned short sv2_activelocks; |
| 352 | unsigned short sv2_numreqbuf; |
| 353 | unsigned short sv2_sizreqbuf; |
| 354 | unsigned short sv2_numbigbuf; |
| 355 | unsigned short sv2_numfiletasks; |
| 356 | unsigned short sv2_alertsched; |
| 357 | unsigned short sv2_erroralert; |
| 358 | unsigned short sv2_logonalert; |
| 359 | unsigned short sv2_accessalert; |
| 360 | unsigned short sv2_diskalert; |
| 361 | unsigned short sv2_netioalert; |
| 362 | unsigned short sv2_maxauditsz; |
| 363 | char *sv2_srvheuristics; |
| 364 | }; |
| 365 | |
| 366 | struct server_info_3 { |
| 367 | char sv3_name[CNLEN + 1]; |
| 368 | unsigned char sv3_version_major; |
| 369 | unsigned char sv3_version_minor; |
| 370 | unsigned __LONG32 sv3_type; |
| 371 | char *sv3_comment; |
| 372 | unsigned __LONG32 sv3_ulist_mtime; |
| 373 | unsigned __LONG32 sv3_glist_mtime; |
| 374 | unsigned __LONG32 sv3_alist_mtime; |
| 375 | unsigned short sv3_users; |
| 376 | unsigned short sv3_disc; |
| 377 | char *sv3_alerts; |
| 378 | unsigned short sv3_security; |
| 379 | unsigned short sv3_auditing; |
| 380 | unsigned short sv3_numadmin; |
| 381 | unsigned short sv3_lanmask; |
| 382 | unsigned short sv3_hidden; |
| 383 | unsigned short sv3_announce; |
| 384 | unsigned short sv3_anndelta; |
| 385 | char sv3_guestacct[LM20_UNLEN + 1]; |
| 386 | unsigned char sv3_pad1; |
| 387 | char *sv3_userpath; |
| 388 | unsigned short sv3_chdevs; |
| 389 | unsigned short sv3_chdevq; |
| 390 | unsigned short sv3_chdevjobs; |
| 391 | unsigned short sv3_connections; |
| 392 | unsigned short sv3_shares; |
| 393 | unsigned short sv3_openfiles; |
| 394 | unsigned short sv3_sessopens; |
| 395 | unsigned short sv3_sessvcs; |
| 396 | unsigned short sv3_sessreqs; |
| 397 | unsigned short sv3_opensearch; |
| 398 | unsigned short sv3_activelocks; |
| 399 | unsigned short sv3_numreqbuf; |
| 400 | unsigned short sv3_sizreqbuf; |
| 401 | unsigned short sv3_numbigbuf; |
| 402 | unsigned short sv3_numfiletasks; |
| 403 | unsigned short sv3_alertsched; |
| 404 | unsigned short sv3_erroralert; |
| 405 | unsigned short sv3_logonalert; |
| 406 | unsigned short sv3_accessalert; |
| 407 | unsigned short sv3_diskalert; |
| 408 | unsigned short sv3_netioalert; |
| 409 | unsigned short sv3_maxauditsz; |
| 410 | char *sv3_srvheuristics; |
| 411 | unsigned __LONG32 sv3_auditedevents; |
| 412 | unsigned short sv3_autoprofile; |
| 413 | char *sv3_autopath; |
| 414 | }; |
| 415 | |
| 416 | #define MAJOR_VERSION_MASK 0x0F |
| 417 | |
| 418 | #define SV_TYPE_WORKSTATION 0x00000001 |
| 419 | #define SV_TYPE_SERVER 0x00000002 |
| 420 | #define SV_TYPE_SQLSERVER 0x00000004 |
| 421 | #define SV_TYPE_DOMAIN_CTRL 0x00000008 |
| 422 | #define SV_TYPE_DOMAIN_BAKCTRL 0x00000010 |
| 423 | #define SV_TYPE_TIME_SOURCE 0x00000020 |
| 424 | #define SV_TYPE_AFP 0x00000040 |
| 425 | #define SV_TYPE_NOVELL 0x00000080 |
| 426 | #define SV_TYPE_DOMAIN_MEMBER 0x00000100 |
| 427 | #define SV_TYPE_PRINTQ_SERVER 0x00000200 |
| 428 | #define SV_TYPE_DIALIN_SERVER 0x00000400 |
| 429 | #define SV_TYPE_ALL 0xFFFFFFFF |
| 430 | |
| 431 | #define SV_NODISC 0xFFFF |
| 432 | |
| 433 | #define SV_USERSECURITY 1 |
| 434 | #define SV_SHARESECURITY 0 |
| 435 | |
| 436 | #define SV_SECURITY_SHARE 0 |
| 437 | #define SV_SECURITY_WINNT 1 |
| 438 | #define SV_SECURITY_WINNTAS 2 |
| 439 | #define SV_SECURITY_NETWARE 3 |
| 440 | |
| 441 | #define SV_HIDDEN 1 |
| 442 | #define SV_VISIBLE 0 |
| 443 | |
| 444 | #define SVI1_NUM_ELEMENTS 5 |
| 445 | #define SVI2_NUM_ELEMENTS 44 |
| 446 | #define SVI3_NUM_ELEMENTS 45 |
| 447 | |
| 448 | #define SW_AUTOPROF_LOAD_MASK 0x1 |
| 449 | #define SW_AUTOPROF_SAVE_MASK 0x2 |
| 450 | |
| 451 | extern API_FUNCTION NetSecurityGetInfo(const char *pszServer,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcbTotalAvail); |
| 452 | |
| 453 | struct security_info_1 { |
| 454 | unsigned __LONG32 sec1_security; |
| 455 | char *sec1_container; |
| 456 | char *sec1_ab_server; |
| 457 | char *sec1_ab_dll; |
| 458 | }; |
| 459 | |
| 460 | #define SEC_SECURITY_SHARE SV_SECURITY_SHARE |
| 461 | #define SEC_SECURITY_WINNT SV_SECURITY_WINNT |
| 462 | #define SEC_SECURITY_WINNTAS SV_SECURITY_WINNTAS |
| 463 | #define SEC_SECURITY_NETWARE SV_SECURITY_NETWARE |
| 464 | |
| 465 | #ifdef __cplusplus |
| 466 | } |
| 467 | #endif |
| 468 | |
| 469 | #ifndef RC_INVOKED |
| 470 | #pragma pack() |
| 471 | #endif |
| 472 | #endif |