1da6c28aaSamw/* 2da6c28aaSamw * CDDL HEADER START 3da6c28aaSamw * 4da6c28aaSamw * The contents of this file are subject to the terms of the 5da6c28aaSamw * Common Development and Distribution License (the "License"). 6da6c28aaSamw * You may not use this file except in compliance with the License. 7da6c28aaSamw * 8da6c28aaSamw * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9da6c28aaSamw * or http://www.opensolaris.org/os/licensing. 10da6c28aaSamw * See the License for the specific language governing permissions 11da6c28aaSamw * and limitations under the License. 12da6c28aaSamw * 13da6c28aaSamw * When distributing Covered Code, include this CDDL HEADER in each 14da6c28aaSamw * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15da6c28aaSamw * If applicable, add the following below this CDDL HEADER, with the 16da6c28aaSamw * fields enclosed by brackets "[]" replaced with your own identifying 17da6c28aaSamw * information: Portions Copyright [yyyy] [name of copyright owner] 18da6c28aaSamw * 19da6c28aaSamw * CDDL HEADER END 20da6c28aaSamw */ 21da6c28aaSamw/* 22*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States * Copyright 2010 Sun Microsystems, Inc. All rights reserved. 23da6c28aaSamw * Use is subject to license terms. 24da6c28aaSamw */ 25da6c28aaSamw 26da6c28aaSamw#ifndef _MLSVC_LANMAN_NDL_ 27da6c28aaSamw#define _MLSVC_LANMAN_NDL_ 28da6c28aaSamw 29da6c28aaSamw/* 30da6c28aaSamw * LanMan RPC (WKSSVC and SRVSVC) interface definitions. 31da6c28aaSamw */ 32da6c28aaSamw 33da6c28aaSamw#include "ndrtypes.ndl" 34da6c28aaSamw 35da6c28aaSamw/* 36da6c28aaSamw * WARNING: The cpp(1) macros in this file are not understood by 37da6c28aaSamw * /usr/bin/cpp. Use /usr/libexec/cpp instead. 38da6c28aaSamw */ 39da6c28aaSamw 40da6c28aaSamw/* 41da6c28aaSamw * TYPE CONSTRUCTOR MACROS FOR INFORMATION RESULTS 42da6c28aaSamw **************************************************************** 43da6c28aaSamw * 44da6c28aaSamw * This is an explanation of the macros that follow this comment. 45da6c28aaSamw * 46da6c28aaSamw * The LANMAN API's look something like this: 47da6c28aaSamw * 48da6c28aaSamw * NetXXXGetInfo ( 49da6c28aaSamw * IN char * servername, 50da6c28aaSamw * IN char * XXX_name, 51da6c28aaSamw * IN int level, 52da6c28aaSamw * OUT char ** bufptr); 53da6c28aaSamw * 54da6c28aaSamw * The bufptr is a pointer-to-pointer (**). The NetXXXGetInfo() function 55da6c28aaSamw * malloc()s memory, and sets *bufptr to the memory. The API's 56da6c28aaSamw * are undiscriminated about what bufptr really points to. 57da6c28aaSamw * 58da6c28aaSamw * However, for RPI (Remote Procedure Interface), this just won't fly. 59da6c28aaSamw * We have to know what the result data looks like in order to 60da6c28aaSamw * properly (un)marshall it. 61da6c28aaSamw * 62da6c28aaSamw * As best we can determine, the MSC developers use an RPI that looks 63da6c28aaSamw * like this (approximately in IDL): 64da6c28aaSamw * 65da6c28aaSamw * RemoteNetXXXGetInfo ( 66da6c28aaSamw * IN char * servername, 67da6c28aaSamw * IN char * XXX_name, 68da6c28aaSamw * IN int level, 69da6c28aaSamw * OUT union switch(level) { 70da6c28aaSamw * case(1): XXX_INFO_1 * info1; 71da6c28aaSamw * case(2): XXX_INFO_2 * info2; 72da6c28aaSamw * } bufptr); 73da6c28aaSamw * 74da6c28aaSamw * The level guides the (un)marshalling as it follows the pointer. 75da6c28aaSamw * DCE(MS) IDL will automatically form a structure for the union 76da6c28aaSamw * which looks about like this (much as Sun/RPC does): 77da6c28aaSamw * 78da6c28aaSamw * struct { 79da6c28aaSamw * int _keyvalue_; 80da6c28aaSamw * union { 81da6c28aaSamw * XXX_INFO_1 *info1; 82da6c28aaSamw * XXX_INFO_2 *info2; 83da6c28aaSamw * } _u_; 84da6c28aaSamw * } bufptr; 85da6c28aaSamw * 86da6c28aaSamw * This struct is not made visible to the application. It is purely 87da6c28aaSamw * an internal (automagic) thing. However, ndrgen does not do this. 88da6c28aaSamw * The ndrgen input MUST remain a valid C header file, and all 89da6c28aaSamw * struct and union declarations must be exact, and we (would) have 90da6c28aaSamw * to tediously code sequences like this (approximately NDL)): 91da6c28aaSamw * 92da6c28aaSamw * union XXXGetInfo_result_u { 93da6c28aaSamw * [case(1)] 94da6c28aaSamw * XXX_INFO_1 * info1; 95da6c28aaSamw * [case(2)] 96da6c28aaSamw * XXX_INFO_2 * info2; 97da6c28aaSamw * }; 98da6c28aaSamw * 99da6c28aaSamw * struct XXXGetInfo_result { 100da6c28aaSamw * int level; 101da6c28aaSamw * 102da6c28aaSamw * union XXXGetInfo_result_u bufptr; 103da6c28aaSamw * }; 104da6c28aaSamw * 105da6c28aaSamw * struct XXXGetInfo_param { // still have to code this one 106da6c28aaSamw * [in] char * servername; 107da6c28aaSamw * [in] ushort level; 108da6c28aaSamw * [out] struct XXXGetInfo_result result; 109da6c28aaSamw * }; 110da6c28aaSamw * 111da6c28aaSamw * This is error prone and difficult to write, and more difficult 112da6c28aaSamw * and distracting to read. It is hard to pick through the 113da6c28aaSamw * necessary evils and see what's really going on. To mitigate 114da6c28aaSamw * the situation, we have a series of macros which generate 115da6c28aaSamw * the tedious code, and are easily recognized as supporting 116da6c28aaSamw * fluff rather than important structures: 117da6c28aaSamw * 118da6c28aaSamw * INFO1RES_DEFINITION(XXXGetInfo, 119da6c28aaSamw * INFO1RES_UNION_ENTRY(XXXGetInfo, 1) 120da6c28aaSamw * INFO1RES_UNION_ENTRY(XXXGetInfo, 2)) 121da6c28aaSamw * 122da6c28aaSamw * structt XXXGetInfo_param { // still have to code this one 123da6c28aaSamw * [in] char * servername; 124da6c28aaSamw * [in] ushort level; 125da6c28aaSamw * [out] struct XXXGetInfo_result result; 126da6c28aaSamw * }; 127da6c28aaSamw * 128da6c28aaSamw * The INFO1RES_DEFINITION macro defines two types: 129da6c28aaSamw * 130da6c28aaSamw * union ...__ru {...} 131da6c28aaSamw * struct ..._result { DWORD level; union ..._ru bufptr; } 132da6c28aaSamw * 133da6c28aaSamw * There is a similar macro, INFO1RESBUF_DEFINITION, which defines 134da6c28aaSamw * actual space rather than just pointers. It defines: 135da6c28aaSamw * 136da6c28aaSamw * union ...._rb {...} 137da6c28aaSamw * typedef union ..._rb ..._rb; 138da6c28aaSamw * 139da6c28aaSamw * Which is handy in functions because the initial coding sequence 140da6c28aaSamw * looks something like: 141da6c28aaSamw * 142da6c28aaSamw * XXXGetInfoParam (struct XXXGetInfo_param *param) { 143da6c28aaSamw * XXXGetInfo_rb rb; 144da6c28aaSamw * 145da6c28aaSamw * param->result.level = param->level; // for marshalling 146da6c28aaSamw * param->result.bufptr.nullptr = &rb; // anything fits 147da6c28aaSamw * 148da6c28aaSamw * There are two flavors of Info results. The first is the 149da6c28aaSamw * single XXX_INFO_x result, which the foregoing example 150da6c28aaSamw * uses. The second flavor is when there are multiple entries 151da6c28aaSamw * possible. Again, for the sake of guiding the marshalling, 152da6c28aaSamw * the RPIs use something accommodating: 153da6c28aaSamw * 154da6c28aaSamw * struct XXX_INFO_1_result { 155da6c28aaSamw * unsigned entriesread; 156da6c28aaSamw * [size_is(entriesread)] 157da6c28aaSamw * XXX_INFO_1 * table; 158da6c28aaSamw * }; 159da6c28aaSamw * 160da6c28aaSamw * union { XXX_INFO_1_result *info1; ...} 161da6c28aaSamw * 162da6c28aaSamw * Notice this is using XXX_INFO_1_result rather than just XXX_INFO_1. 163da6c28aaSamw * The requirements from this point are much like before. Because of 164da6c28aaSamw * the variable-length value, there is no realistic way to do something 165da6c28aaSamw * like INFO1RESBUF_DEFINITION. 166da6c28aaSamw * 167da6c28aaSamw * There are two sets of macros here. INFO1RES_xxx are for the 168da6c28aaSamw * single result case, and INFONRES_xxx for the multiple entry case. 169da6c28aaSamw */ 170da6c28aaSamw 171da6c28aaSamw/* 172da6c28aaSamw * INFO1RES_... 173da6c28aaSamw * Type constructors for single-result case 174da6c28aaSamw */ 175da6c28aaSamw 176da6c28aaSamw#define INFO1RES_DEFINITION(INFOPREF, ENTRIES) \ 177da6c28aaSamw INFO1RES_UNION(INFOPREF, ENTRIES) \ 178da6c28aaSamw INFO1RES_STRUCT(INFOPREF) 179da6c28aaSamw 180da6c28aaSamw#define INFO1RES_UNION(INFOPREF, ENTRIES) \ 181da6c28aaSamw union INFOPREF##__ru { \ 182da6c28aaSamw INFO1RES_UNION_NULLPTR \ 183da6c28aaSamw ENTRIES \ 184da6c28aaSamw }; 185da6c28aaSamw 186da6c28aaSamw#define INFO1RES_UNION_NULLPTR \ 187da6c28aaSamw DEFAULT char * nullptr; 188da6c28aaSamw 189da6c28aaSamw#define INFO1RES_UNION_ENTRY(INFOPREF,NUM) \ 190da6c28aaSamw CASE(NUM) struct INFOPREF##_##NUM * bufptr##NUM; 191da6c28aaSamw 192da6c28aaSamw#define INFO1RES_STRUCT(INFOPREF) \ 193da6c28aaSamw struct INFOPREF##_result { \ 194da6c28aaSamw DWORD level; \ 195da6c28aaSamw SWITCH(level) \ 196da6c28aaSamw union INFOPREF##__ru bufptr; \ 197da6c28aaSamw }; 198da6c28aaSamw 199da6c28aaSamw/* 200da6c28aaSamw * INFO1RESBUF_... 201da6c28aaSamw * Type constructors for single-result buffering. 202da6c28aaSamw */ 203da6c28aaSamw 204da6c28aaSamw 205da6c28aaSamw#ifndef NDRGEN 206da6c28aaSamw#define INFO1RESBUF_DEFINITION(INFOPREF, ENTRIES) \ 207da6c28aaSamw typedef union INFOPREF##_rb { \ 208da6c28aaSamw ENTRIES \ 209da6c28aaSamw } INFOPREF##_rb; 210da6c28aaSamw#define INFO1RESBUF_UNION_ENTRY(INFOPREF,NUM) \ 211da6c28aaSamw CASE(NUM) struct INFOPREF##_##NUM buf##NUM; 212da6c28aaSamw#else 213da6c28aaSamw#define INFO1RESBUF_DEFINITION(INFOPREF, ENTRIES) 214da6c28aaSamw#define INFO1RESBUF_UNION_ENTRY(INFOPREF,NUM) 215da6c28aaSamw#endif 216da6c28aaSamw 217da6c28aaSamw 218da6c28aaSamw 219da6c28aaSamw 220da6c28aaSamw/* 221da6c28aaSamw * INFONRES_... 222da6c28aaSamw * Type constructors for multiple-result case 223da6c28aaSamw */ 224da6c28aaSamw 225da6c28aaSamw#define INFONRES_RESULT(INFOPREF,NUM) \ 226da6c28aaSamw struct INFOPREF##_##NUM##_result { \ 227da6c28aaSamw DWORD entriesread; \ 228da6c28aaSamw SIZE_IS(entriesread) \ 229da6c28aaSamw struct INFOPREF##_##NUM *entries; \ 230da6c28aaSamw }; 231da6c28aaSamw 232da6c28aaSamw#define INFONRES_DEFINITION(INFOPREF, ENTRIES) \ 233da6c28aaSamw INFONRES_UNION(INFOPREF, ENTRIES) \ 234da6c28aaSamw INFONRES_STRUCT(INFOPREF) 235da6c28aaSamw 236da6c28aaSamw#define INFONRES_UNION(INFOPREF, ENTRIES) \ 237da6c28aaSamw union INFOPREF##__ru { \ 238da6c28aaSamw INFONRES_UNION_NULLPTR \ 239da6c28aaSamw INFONRES_UNION_INFONRES \ 240da6c28aaSamw ENTRIES \ 241da6c28aaSamw }; 242da6c28aaSamw 243da6c28aaSamw#define INFONRES_UNION_NULLPTR \ 244da6c28aaSamw DEFAULT char * nullptr; 245da6c28aaSamw 246da6c28aaSamw#ifndef NDRGEN 247da6c28aaSamw#define INFONRES_UNION_INFONRES \ 248da6c28aaSamw struct mslm_infonres * p; 249da6c28aaSamw#else 250da6c28aaSamw#define INFONRES_UNION_INFONRES 251da6c28aaSamw#endif 252da6c28aaSamw 253da6c28aaSamw#define INFONRES_UNION_ENTRY(INFOPREF,NUM) \ 254da6c28aaSamw CASE(NUM) struct INFOPREF##_##NUM##_result * bufptr##NUM; 255da6c28aaSamw 256da6c28aaSamw#define INFONRES_STRUCT(INFOPREF) \ 257da6c28aaSamw struct INFOPREF##_result { \ 258da6c28aaSamw DWORD level; \ 259da6c28aaSamw SWITCH(level) \ 260da6c28aaSamw union INFOPREF##__ru bufptr; \ 261da6c28aaSamw }; 262da6c28aaSamw 263da6c28aaSamw#ifndef NDRGEN 264da6c28aaSamw/* 265da6c28aaSamw * This just makes things a little easier on the stub modules: 266da6c28aaSamw * 267da6c28aaSamw * XXXGetInfoParam (struct XXXGetInfo_param *param) { 268da6c28aaSamw * struct mslm_infonres infonres; 269da6c28aaSamw * 270da6c28aaSamw * infonres.entriesread = 0; 271da6c28aaSamw * infonres.entries = 0; 272da6c28aaSamw * param->result.level = param->level; // for marshalling 273da6c28aaSamw * param->result.bufptr.p = &infonres; 274da6c28aaSamw */ 275da6c28aaSamwstruct mslm_infonres { 276da6c28aaSamw DWORD entriesread; 277da6c28aaSamw void * entries; 278da6c28aaSamw}; 279da6c28aaSamw#endif 280da6c28aaSamw 281da6c28aaSamw 282da6c28aaSamw/* 283faa1795aSjb150015 * SRVSVC - Server Service 284da6c28aaSamw */ 285da6c28aaSamw 286faa1795aSjb150015/* Windows NT */ 287faa1795aSjb150015#define SRVSVC_OPNUM_NetCharDevEnum 0x00 288faa1795aSjb150015#define SRVSVC_OPNUM_NetCharDevGetInfo 0x01 289faa1795aSjb150015#define SRVSVC_OPNUM_NetCharDevControl 0x02 290faa1795aSjb150015#define SRVSVC_OPNUM_NetCharDevQEnum 0x03 291faa1795aSjb150015#define SRVSVC_OPNUM_NetCharDevQGetInfo 0x04 292faa1795aSjb150015#define SRVSVC_OPNUM_NetCharDevQSetInfo 0x05 293faa1795aSjb150015#define SRVSVC_OPNUM_NetCharDevQPurge 0x06 294faa1795aSjb150015#define SRVSVC_OPNUM_NetCharDevQPurgeSelf 0x07 295da6c28aaSamw#define SRVSVC_OPNUM_NetConnectEnum 0x08 296da6c28aaSamw#define SRVSVC_OPNUM_NetFileEnum 0x09 297faa1795aSjb150015#define SRVSVC_OPNUM_NetFileGetInfo 0x0a 298da6c28aaSamw#define SRVSVC_OPNUM_NetFileClose 0x0b 299da6c28aaSamw#define SRVSVC_OPNUM_NetSessionEnum 0x0c 300da6c28aaSamw#define SRVSVC_OPNUM_NetSessionDel 0x0d 301da6c28aaSamw#define SRVSVC_OPNUM_NetShareAdd 0x0e 302da6c28aaSamw#define SRVSVC_OPNUM_NetShareEnum 0x0f 303da6c28aaSamw#define SRVSVC_OPNUM_NetShareGetInfo 0x10 304da6c28aaSamw#define SRVSVC_OPNUM_NetShareSetInfo 0x11 305da6c28aaSamw#define SRVSVC_OPNUM_NetShareDel 0x12 306faa1795aSjb150015#define SRVSVC_OPNUM_NetShareDelSticky 0x13 307faa1795aSjb150015#define SRVSVC_OPNUM_NetShareCheck 0x14 308da6c28aaSamw#define SRVSVC_OPNUM_NetServerGetInfo 0x15 309da6c28aaSamw#define SRVSVC_OPNUM_NetServerSetInfo 0x16 310faa1795aSjb150015#define SRVSVC_OPNUM_NetServerDiskEnum 0x17 311faa1795aSjb150015#define SRVSVC_OPNUM_NetServerStatisticsGet 0x18 312faa1795aSjb150015#define SRVSVC_OPNUM_NetServerTransportAdd 0x19 313faa1795aSjb150015#define SRVSVC_OPNUM_NetServerTransportEnum 0x1a 314faa1795aSjb150015#define SRVSVC_OPNUM_NetServerTransportDel 0x1b 315da6c28aaSamw#define SRVSVC_OPNUM_NetRemoteTOD 0x1c 316faa1795aSjb150015#define SRVSVC_OPNUM_NetServerSetServiceBits 0x1d 3173db3f65cSamw#define SRVSVC_OPNUM_NetPathType 0x1e 318faa1795aSjb150015#define SRVSVC_OPNUM_NetPathCanonicalize 0x1f 319faa1795aSjb150015#define SRVSVC_OPNUM_NetPathCompare 0x20 320da6c28aaSamw#define SRVSVC_OPNUM_NetNameValidate 0x21 321faa1795aSjb150015#define SRVSVC_OPNUM_NetNameCanonicalize 0x22 322faa1795aSjb150015#define SRVSVC_OPNUM_NetNameCompare 0x23 323da6c28aaSamw#define SRVSVC_OPNUM_NetShareEnumSticky 0x24 324faa1795aSjb150015#define SRVSVC_OPNUM_NetShareDelStart 0x25 325faa1795aSjb150015#define SRVSVC_OPNUM_NetShareDelCommit 0x26 326da6c28aaSamw#define SRVSVC_OPNUM_NetGetFileSecurity 0x27 327da6c28aaSamw#define SRVSVC_OPNUM_NetSetFileSecurity 0x28 328faa1795aSjb150015#define SRVSVC_OPNUM_NetServerTransportAddEx 0x29 329faa1795aSjb150015#define SRVSVC_OPNUM_NetServerSetServiceBitsEx 0x2a 330faa1795aSjb150015#define SRVSVC_OPNUM_NetDfsGetVersion 0x2b 331faa1795aSjb150015 332faa1795aSjb150015/* Windows 2000 */ 333faa1795aSjb150015#define SRVSVC_OPNUM_NetDfsCreateLocalPartition 0x2c 334faa1795aSjb150015#define SRVSVC_OPNUM_NetDfsDeleteLocalPartition 0x2d 335faa1795aSjb150015#define SRVSVC_OPNUM_NetDfsSetLocalVolumeState 0x2e 336faa1795aSjb150015#define SRVSVC_OPNUM_NetDfsSetServerInfo 0x2f 337faa1795aSjb150015#define SRVSVC_OPNUM_NetDfsCreateExitPoint 0x30 338faa1795aSjb150015#define SRVSVC_OPNUM_NetDfsDeleteExitPoint 0x31 339faa1795aSjb150015#define SRVSVC_OPNUM_NetDfsModifyPrefix 0x32 340faa1795aSjb150015#define SRVSVC_OPNUM_NetDfsFixLocalVolume 0x33 341faa1795aSjb150015#define SRVSVC_OPNUM_NetDfsManagerReportSiteInfo 0x34 342faa1795aSjb150015 343faa1795aSjb150015/* Windows XP and Windows Server 2003 */ 344faa1795aSjb150015#define SRVSVC_OPNUM_NetServerTransportDelEx 0x35 345faa1795aSjb150015 346faa1795aSjb150015/* Windows Vista */ 347faa1795aSjb150015#define SRVSVC_OPNUM_NetServerAliasAdd 0x36 348faa1795aSjb150015#define SRVSVC_OPNUM_NetServerAliasEnum 0x37 349faa1795aSjb150015#define SRVSVC_OPNUM_NetServerAliasDel 0x38 350faa1795aSjb150015#define SRVSVC_OPNUM_NetShareDelEx 0x39 351da6c28aaSamw 352da6c28aaSamw/* 353da6c28aaSamw *********************************************************************** 3543db3f65cSamw * NetConnectEnum 355da6c28aaSamw *********************************************************************** 356da6c28aaSamw */ 357da6c28aaSamw 358da6c28aaSamw/* 359da6c28aaSamw * Level 0 connect information. 360da6c28aaSamw */ 361da6c28aaSamwstruct mslm_NetConnectInfoBuf0 { 362da6c28aaSamw DWORD coni0_id; 363da6c28aaSamw}; 36489dc44ceSjose borregotypedef struct mslm_NetConnectInfoBuf0 srvsvc_NetConnectInfoBuf0_t; 365da6c28aaSamw 366da6c28aaSamwstruct mslm_NetConnectInfo0 { 367da6c28aaSamw DWORD entries_read; 368da6c28aaSamw SIZE_IS(entries_read) 369da6c28aaSamw struct mslm_NetConnectInfoBuf0 *ci0; 370da6c28aaSamw}; 37189dc44ceSjose borregotypedef struct mslm_NetConnectInfo0 srvsvc_NetConnectInfo0_t; 372da6c28aaSamw 373da6c28aaSamw/* 374da6c28aaSamw * Level 1 connect information. 375da6c28aaSamw */ 376da6c28aaSamwstruct mslm_NetConnectInfoBuf1 { 377da6c28aaSamw DWORD coni1_id; 378da6c28aaSamw DWORD coni1_type; 379da6c28aaSamw DWORD coni1_num_opens; 380da6c28aaSamw DWORD coni1_num_users; 381da6c28aaSamw DWORD coni1_time; 382da6c28aaSamw LPTSTR coni1_username; 383da6c28aaSamw LPTSTR coni1_netname; /* share name */ 384da6c28aaSamw}; 38589dc44ceSjose borregotypedef struct mslm_NetConnectInfoBuf1 srvsvc_NetConnectInfoBuf1_t; 386da6c28aaSamw 387da6c28aaSamwstruct mslm_NetConnectInfo1 { 388da6c28aaSamw DWORD entries_read; 389da6c28aaSamw SIZE_IS(entries_read) 390da6c28aaSamw struct mslm_NetConnectInfoBuf1 *ci1; 391da6c28aaSamw}; 39289dc44ceSjose borregotypedef struct mslm_NetConnectInfo1 srvsvc_NetConnectInfo1_t; 393da6c28aaSamw 394da6c28aaSamwunion mslm_NetConnectInfoResUnion { 395da6c28aaSamw CASE(0) struct mslm_NetConnectInfo0 *info0; 396da6c28aaSamw CASE(1) struct mslm_NetConnectInfo1 *info1; 397da6c28aaSamw DEFAULT char *nullptr; 398da6c28aaSamw}; 399da6c28aaSamw 400da6c28aaSamwstruct mslm_NetConnectInfo { 401da6c28aaSamw DWORD level; 402da6c28aaSamw DWORD switch_value; 403da6c28aaSamw SWITCH(switch_value) 404da6c28aaSamw union mslm_NetConnectInfoResUnion ru; 405da6c28aaSamw}; 4061fcced4cSJordan Browntypedef struct mslm_NetConnectInfo srvsvc_NetConnectInfo_t; 407da6c28aaSamw 408da6c28aaSamwOPERATION(SRVSVC_OPNUM_NetConnectEnum) 409da6c28aaSamwstruct mslm_NetConnectEnum { 410da6c28aaSamw IN LPTSTR servername; 411da6c28aaSamw IN LPTSTR qualifier; /* share name */ 412da6c28aaSamw INOUT struct mslm_NetConnectInfo info; 413da6c28aaSamw IN DWORD pref_max_len; 414da6c28aaSamw OUT DWORD total_entries; 415da6c28aaSamw INOUT DWORD *resume_handle; 416da6c28aaSamw OUT DWORD status; 417da6c28aaSamw}; 418da6c28aaSamw 419da6c28aaSamw 420da6c28aaSamw/* 421da6c28aaSamw *********************************************************************** 4223db3f65cSamw * NetFileEnum 423da6c28aaSamw *********************************************************************** 424da6c28aaSamw */ 4253db3f65cSamwstruct mslm_NetFileInfoBuf2 { 4263db3f65cSamw DWORD fi2_id; 4273db3f65cSamw}; 42889dc44ceSjose borregotypedef struct mslm_NetFileInfoBuf2 srvsvc_NetFileInfoBuf2_t; 4293db3f65cSamw 4303db3f65cSamwstruct mslm_NetFileInfo2 { 4313db3f65cSamw DWORD entries_read; 4323db3f65cSamw SIZE_IS(entries_read) 4333db3f65cSamw struct mslm_NetFileInfoBuf2 *fi2; 4343db3f65cSamw}; 43589dc44ceSjose borregotypedef struct mslm_NetFileInfo2 srvsvc_NetFileInfo2_t; 4363db3f65cSamw 437da6c28aaSamwstruct mslm_NetFileInfoBuf3 { 438da6c28aaSamw DWORD fi3_id; 439da6c28aaSamw DWORD fi3_permissions; 440da6c28aaSamw DWORD fi3_num_locks; 441da6c28aaSamw LPTSTR fi3_pathname; 442da6c28aaSamw LPTSTR fi3_username; 443da6c28aaSamw}; 44489dc44ceSjose borregotypedef struct mslm_NetFileInfoBuf3 srvsvc_NetFileInfoBuf3_t; 445da6c28aaSamw 446da6c28aaSamwstruct mslm_NetFileInfo3 { 447da6c28aaSamw DWORD entries_read; 448da6c28aaSamw SIZE_IS(entries_read) 449da6c28aaSamw struct mslm_NetFileInfoBuf3 *fi3; 450da6c28aaSamw}; 45189dc44ceSjose borregotypedef struct mslm_NetFileInfo3 srvsvc_NetFileInfo3_t; 452da6c28aaSamw 453da6c28aaSamwunion mslm_NetFileInfoResUnion { 4543db3f65cSamw CASE(2) struct mslm_NetFileInfo2 *info2; 455da6c28aaSamw CASE(3) struct mslm_NetFileInfo3 *info3; 456da6c28aaSamw DEFAULT char *nullptr; 457da6c28aaSamw}; 458da6c28aaSamw 459da6c28aaSamwstruct mslm_NetFileInfo { 460da6c28aaSamw DWORD level; 461da6c28aaSamw DWORD switch_value; 462da6c28aaSamw SWITCH(switch_value) 463da6c28aaSamw union mslm_NetFileInfoResUnion ru; 464da6c28aaSamw}; 465da6c28aaSamw 466da6c28aaSamwOPERATION(SRVSVC_OPNUM_NetFileEnum) 467da6c28aaSamwstruct mslm_NetFileEnum { 468da6c28aaSamw IN LPTSTR servername; 4693db3f65cSamw IN DWORD basepath; 4703db3f65cSamw IN DWORD username; 471da6c28aaSamw INOUT struct mslm_NetFileInfo info; 472da6c28aaSamw IN DWORD pref_max_len; 473da6c28aaSamw OUT DWORD total_entries; 474da6c28aaSamw INOUT DWORD *resume_handle; 475da6c28aaSamw OUT DWORD status; 476da6c28aaSamw}; 477da6c28aaSamw 478da6c28aaSamw 479da6c28aaSamw/* 480da6c28aaSamw *********************************************************************** 481da6c28aaSamw * NetFileClose 482da6c28aaSamw * 4833db3f65cSamw * Close files using a file id reported by NetFileEnum. 484da6c28aaSamw *********************************************************************** 485da6c28aaSamw */ 486da6c28aaSamwOPERATION(SRVSVC_OPNUM_NetFileClose) 487da6c28aaSamwstruct mslm_NetFileClose { 488da6c28aaSamw IN LPTSTR servername; 489da6c28aaSamw IN DWORD file_id; 490da6c28aaSamw OUT DWORD status; 491da6c28aaSamw}; 492da6c28aaSamw 493da6c28aaSamw 494da6c28aaSamw/* 495da6c28aaSamw *********************************************************************** 49629bd2886SAlan Wright * NetShareGetInfo/NetShareSetInfo: netname is the name of a share. 4973db3f65cSamw * 4983db3f65cSamw * Levels: 49929bd2886SAlan Wright * 0 The share name. 50029bd2886SAlan Wright * 1 Information about the shared resource: name, type of resource 50129bd2886SAlan Wright * and a comment. 50229bd2886SAlan Wright * 2 Information about the shared resource: name, type, permissions, 50329bd2886SAlan Wright * password and number of connections. 50429bd2886SAlan Wright * 501 Information about the shared resource: name, type of resource 50529bd2886SAlan Wright * and a comment. 50629bd2886SAlan Wright * 502 Information about the shared resource, including the name, type, 50729bd2886SAlan Wright * permissions, number of connections etc. 50829bd2886SAlan Wright * 503 Contains information about the shared resource; identical to 502 50929bd2886SAlan Wright * except for the addition of a servername. 51029bd2886SAlan Wright * 1004 A comment for the shared resource. 51129bd2886SAlan Wright * 1005 A set of flags describing the shared resource. 51229bd2886SAlan Wright * 1006 The maximum number of concurrent connections that the shared 51329bd2886SAlan Wright * resource can accommodate. 5143db3f65cSamw * 1501 Specifies the SECURITY_DESCRIPTOR for the share. 5153db3f65cSamw * 5163db3f65cSamw * Windows Me/98/95 supports level 50, which is similar to level 1. 5173db3f65cSamw * 5183db3f65cSamw * shi1005_flags: SHI1005_VALID_FLAGS_SET defines the set of flags that 5193db3f65cSamw * can be set with the NetShareSetInfo function. SHI1005_FLAGS_DFS and 5203db3f65cSamw * SHI1005_FLAGS_DFS_ROOT can only be returned, but not set. 5213db3f65cSamw * 5223db3f65cSamw * 0x01 SHI1005_FLAGS_DFS 5233db3f65cSamw * The specified share is present in a Dfs tree structure. 5243db3f65cSamw * This flag cannot be set with NetShareSetInfo. 5253db3f65cSamw * 5263db3f65cSamw * 0x02 SHI1005_FLAGS_DFS_ROOT 5273db3f65cSamw * The specified share is the root volume in a Dfs tree. 5283db3f65cSamw * This flag cannot be set with NetShareSetInfo. 5293db3f65cSamw * 5303db3f65cSamw * 0x30 CSC_MASK Client-side caching (CSC) state: 5313db3f65cSamw * 0x00 CSC_CACHE_MANUAL_REINT Automatic file-by-file 5323db3f65cSamw * reintegration not allowed. 5333db3f65cSamw * 0x10 CSC_CACHE_AUTO_REINT File-by-file reintegration allowed. 5343db3f65cSamw * 0x20 CSC_CACHE_VDO File opens do not need to be flowed. 5353db3f65cSamw * 0x30 CSC_CACHE_NONE CSC is disabled for this share. 5363db3f65cSamw * 5373db3f65cSamw * 0x0100 SHI1005_FLAGS_RESTRICT_EXCLUSIVE_OPENS 5383db3f65cSamw * The specified share disallows exclusive file opens, 5393db3f65cSamw * where reads to an open file are disallowed. 5403db3f65cSamw * 5413db3f65cSamw * 0x0200 SHI1005_FLAGS_FORCE_SHARED_DELETE 5423db3f65cSamw * Shared files in the specified share can be forcibly deleted. 5433db3f65cSamw * 5443db3f65cSamw * 0x0400 SHI1005_FLAGS_ALLOW_NAMESPACE_CACHING 5453db3f65cSamw * Clients are allowed to cache the namespace of the share. 5463db3f65cSamw * 5473db3f65cSamw * 0x0800 SHI1005_FLAGS_ACCESS_BASED_DIRECTORY_ENUM 5483db3f65cSamw * The server will filter directory entries based on the access 54929bd2886SAlan Wright * permissions of the client. The access-based enumeration (ABE) 55029bd2886SAlan Wright * flag may also appear as SHI1005_FLAGS_ENFORCE_NAMESPACE_ACCESS. 55129bd2886SAlan Wright * 55229bd2886SAlan Wright * Support for Access-based Enumeration (ABE) was added to Windows in 55329bd2886SAlan Wright * Windows Server 2003 Service Pack 1. ABE filters directory contents 55429bd2886SAlan Wright * (and other shared resources) returned via a share based on a user's 55529bd2886SAlan Wright * access rights, i.e. a user would not see objects that are 55629bd2886SAlan Wright * inaccessible to that user. ABE requests are made using info level 55729bd2886SAlan Wright * 1005 with the value 0x0800 in the flags field. 558da6c28aaSamw *********************************************************************** 559da6c28aaSamw */ 5608d7e4166Sjose borrego 5618d7e4166Sjose borrego#define CSC_MASK 0x30 5628d7e4166Sjose borrego#define CSC_CACHE_MANUAL_REINT 0x00 5638d7e4166Sjose borrego#define CSC_CACHE_AUTO_REINT 0x10 5648d7e4166Sjose borrego#define CSC_CACHE_VDO 0x20 5658d7e4166Sjose borrego#define CSC_CACHE_NONE 0x30 5668d7e4166Sjose borrego 56729bd2886SAlan Wright#define MLSM_SID_AUTH_MAX 6 56829bd2886SAlan Wright/* 56929bd2886SAlan Wright * Definition for a SID. The ndl compiler does not allow a typedef of 57029bd2886SAlan Wright * a structure containing variable size members. 57129bd2886SAlan Wright */ 57229bd2886SAlan Wrightstruct mslm_sid { 57329bd2886SAlan Wright BYTE revision; 57429bd2886SAlan Wright BYTE sub_auth_count; 57529bd2886SAlan Wright BYTE authority[MLSM_SID_AUTH_MAX]; 57629bd2886SAlan Wright SIZE_IS(sub_auth_count) 57729bd2886SAlan Wright DWORD sub_authority[ANY_SIZE_ARRAY]; 57829bd2886SAlan Wright}; 57929bd2886SAlan Wright 58029bd2886SAlan Wrightstruct mslm_ace_hdr { 58129bd2886SAlan Wright BYTE type; 58229bd2886SAlan Wright BYTE flags; 58329bd2886SAlan Wright WORD size; 58429bd2886SAlan Wright}; 58529bd2886SAlan Wrighttypedef struct mslm_ace_hdr mslm_ace_hdr_t; 58629bd2886SAlan Wright 58729bd2886SAlan Wrightstruct mslm_ace { 58829bd2886SAlan Wright mslm_ace_hdr_t header; 58929bd2886SAlan Wright DWORD mask; 59029bd2886SAlan Wright struct mslm_sid *sid; 59129bd2886SAlan Wright}; 59229bd2886SAlan Wrighttypedef struct mslm_ace mslm_ace_t; 59329bd2886SAlan Wright 59429bd2886SAlan Wrightstruct mslm_acl { 59529bd2886SAlan Wright BYTE revision; 59629bd2886SAlan Wright BYTE sbz1; 59729bd2886SAlan Wright WORD size; 59829bd2886SAlan Wright WORD ace_count; 59929bd2886SAlan Wright WORD sbz2; 60029bd2886SAlan Wright SIZE_IS(ace_count) 60129bd2886SAlan Wright mslm_ace_t ace[ANY_SIZE_ARRAY]; 60229bd2886SAlan Wright}; 60329bd2886SAlan Wright 60429bd2886SAlan Wright/* 60529bd2886SAlan Wright * SRVSVC definition of a security_descriptor. 60629bd2886SAlan Wright */ 60729bd2886SAlan Wrightstruct mslm_security_descriptor { 60829bd2886SAlan Wright BYTE revision; 60929bd2886SAlan Wright BYTE sbz1; 61029bd2886SAlan Wright WORD control; 61129bd2886SAlan Wright DWORD offset_owner; 61229bd2886SAlan Wright DWORD offset_group; 61329bd2886SAlan Wright DWORD offset_sacl; 61429bd2886SAlan Wright DWORD offset_dacl; 61529bd2886SAlan Wright struct mslm_sid *owner; 61629bd2886SAlan Wright struct mslm_sid *group; 61729bd2886SAlan Wright struct mslm_acl *sacl; 61829bd2886SAlan Wright struct mslm_acl *dacl; 61929bd2886SAlan Wright}; 62029bd2886SAlan Wrighttypedef struct mslm_security_descriptor mslm_security_descriptor_t; 62129bd2886SAlan Wright 622eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United Statesstruct mslm_NetShareInfo_0 { 623da6c28aaSamw LPTSTR shi0_netname; 624da6c28aaSamw}; 625da6c28aaSamw 626eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United Statesstruct mslm_NetShareInfo_1 { 627da6c28aaSamw LPTSTR shi1_netname; 628da6c28aaSamw DWORD shi1_type; /* type of resource such as IPC$ */ 629da6c28aaSamw LPTSTR shi1_comment; 630da6c28aaSamw}; 631da6c28aaSamw 632eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United Statesstruct mslm_NetShareInfo_2 { 633da6c28aaSamw LPTSTR shi2_netname; 634da6c28aaSamw DWORD shi2_type; 635da6c28aaSamw LPTSTR shi2_comment; 636da6c28aaSamw DWORD shi2_permissions; 637da6c28aaSamw DWORD shi2_max_uses; 638da6c28aaSamw DWORD shi2_current_uses; 639da6c28aaSamw LPTSTR shi2_path; 640da6c28aaSamw LPTSTR shi2_passwd; 641da6c28aaSamw}; 642da6c28aaSamw 643eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United Statesstruct mslm_NetShareInfo_501 { 6443db3f65cSamw LPTSTR shi501_netname; 6453db3f65cSamw DWORD shi501_type; 6463db3f65cSamw LPTSTR shi501_comment; 647e3f2c991SKeyur Desai DWORD shi501_flags; 6483db3f65cSamw}; 6493db3f65cSamw 650eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United Statesstruct mslm_NetShareInfo_502 { 651da6c28aaSamw LPTSTR shi502_netname; 652da6c28aaSamw DWORD shi502_type; 653da6c28aaSamw LPTSTR shi502_comment; 654da6c28aaSamw DWORD shi502_permissions; 655da6c28aaSamw DWORD shi502_max_uses; 656da6c28aaSamw DWORD shi502_current_uses; 657da6c28aaSamw LPTSTR shi502_path; 658da6c28aaSamw LPTSTR shi502_passwd; 659da6c28aaSamw DWORD shi502_reserved; 66029bd2886SAlan Wright SIZE_IS(shi502_reserved) 66129bd2886SAlan Wright LPBYTE shi502_security_descriptor; 662da6c28aaSamw}; 663da6c28aaSamw 664eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United Statesstruct mslm_NetShareInfo_503 { 6658d7e4166Sjose borrego LPTSTR shi503_netname; 6668d7e4166Sjose borrego DWORD shi503_type; 6678d7e4166Sjose borrego LPTSTR shi503_comment; 6688d7e4166Sjose borrego DWORD shi503_permissions; 6698d7e4166Sjose borrego DWORD shi503_max_uses; 6708d7e4166Sjose borrego DWORD shi503_current_uses; 6718d7e4166Sjose borrego LPTSTR shi503_path; 6728d7e4166Sjose borrego LPTSTR shi503_passwd; 6738d7e4166Sjose borrego LPTSTR shi503_servername; 6748d7e4166Sjose borrego DWORD shi503_reserved; 67529bd2886SAlan Wright SIZE_IS(shi503_reserved) 67629bd2886SAlan Wright LPBYTE shi503_security_descriptor; 6778d7e4166Sjose borrego}; 6788d7e4166Sjose borrego 679eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United Statesstruct mslm_NetShareInfo_1004 { 6808d7e4166Sjose borrego LPTSTR shi1004_comment; 6818d7e4166Sjose borrego}; 6828d7e4166Sjose borrego 683eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United Statesstruct mslm_NetShareInfo_1005 { 684da6c28aaSamw DWORD shi1005_flags; 685da6c28aaSamw}; 686da6c28aaSamw 687eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United Statesstruct mslm_NetShareInfo_1006 { 6888d7e4166Sjose borrego DWORD shi1006_max_uses; 6898d7e4166Sjose borrego}; 6908d7e4166Sjose borrego 69129bd2886SAlan Wrightstruct mslm_NetShareInfo_1501 { 69229bd2886SAlan Wright DWORD shi1501_reserved; 69329bd2886SAlan Wright SIZE_IS(shi1501_reserved) 69429bd2886SAlan Wright LPBYTE shi1501_security_descriptor; 69529bd2886SAlan Wright}; 69629bd2886SAlan Wright 69729bd2886SAlan Wrightunion mlsm_NetShareInfoResUnion { 698eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United States CASE(0) struct mslm_NetShareInfo_0 *info0; 699eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United States CASE(1) struct mslm_NetShareInfo_1 *info1; 700eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United States CASE(2) struct mslm_NetShareInfo_2 *info2; 701eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United States CASE(501) struct mslm_NetShareInfo_501 *info501; 702eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United States CASE(502) struct mslm_NetShareInfo_502 *info502; 70329bd2886SAlan Wright CASE(503) struct mslm_NetShareInfo_503 *info503; 704eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United States CASE(1004) struct mslm_NetShareInfo_1004 *info1004; 705eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United States CASE(1005) struct mslm_NetShareInfo_1005 *info1005; 706eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United States CASE(1006) struct mslm_NetShareInfo_1006 *info1006; 70729bd2886SAlan Wright CASE(1501) struct mslm_NetShareInfo_1501 *info1501; 708da6c28aaSamw DEFAULT char *nullptr; 709da6c28aaSamw}; 710da6c28aaSamw 711da6c28aaSamw 71229bd2886SAlan Wrightstruct mlsm_NetShareInfoRes { 713da6c28aaSamw DWORD switch_value; 714da6c28aaSamw SWITCH(switch_value) 71529bd2886SAlan Wright union mlsm_NetShareInfoResUnion ru; 716da6c28aaSamw}; 717da6c28aaSamw 718da6c28aaSamw 719da6c28aaSamwOPERATION(SRVSVC_OPNUM_NetShareGetInfo) 720da6c28aaSamwstruct mlsm_NetShareGetInfo { 721da6c28aaSamw IN LPTSTR servername; 722da6c28aaSamw IN REFERENCE LPTSTR netname; 723da6c28aaSamw IN DWORD level; 72429bd2886SAlan Wright OUT struct mlsm_NetShareInfoRes result; 725da6c28aaSamw OUT DWORD status; 726da6c28aaSamw}; 727da6c28aaSamw 728da6c28aaSamw 729da6c28aaSamwOPERATION(SRVSVC_OPNUM_NetShareSetInfo) 730da6c28aaSamwstruct mlsm_NetShareSetInfo { 731da6c28aaSamw IN LPTSTR servername; 732da6c28aaSamw IN REFERENCE LPTSTR netname; 733da6c28aaSamw IN DWORD level; 73429bd2886SAlan Wright IN struct mlsm_NetShareInfoRes result; 73529bd2886SAlan Wright INOUT DWORD *parm_err; 736da6c28aaSamw OUT DWORD status; 737da6c28aaSamw}; 738da6c28aaSamw 739da6c28aaSamw 740da6c28aaSamw/* 741da6c28aaSamw *********************************************************************** 742da6c28aaSamw * NetSessionEnum 743da6c28aaSamw * 744da6c28aaSamw * The NetSessionEnum function provides information about sessions 745da6c28aaSamw * established on a server. 746da6c28aaSamw * 747da6c28aaSamw * Only members of the Administrators or Account Operators local groups 748da6c28aaSamw * can successfully execute the NetSessionEnum function at level 1 or 749da6c28aaSamw * level 2. No special group membership is required for level 0 or level 750da6c28aaSamw * 10 calls. 751da6c28aaSamw * 752da6c28aaSamw * Windows NT/2000/XP: The parameter order is as follows. 753da6c28aaSamw * 754da6c28aaSamw * NET_API_STATUS NetSessionEnum(LPWSTR servername, 755da6c28aaSamw * LPWSTR UncClientName, 756da6c28aaSamw * LPWSTR username, 757da6c28aaSamw * DWORD level, 758da6c28aaSamw * LPBYTE *bufptr, 759da6c28aaSamw * DWORD prefmaxlen, 760da6c28aaSamw * LPDWORD entriesread, 761da6c28aaSamw * LPDWORD totalentries, 762da6c28aaSamw * LPDWORD resume_handle); 763da6c28aaSamw * 764da6c28aaSamw * Windows 95/98/Me: The calling application must use the cbBuffer parameter 765da6c28aaSamw * to specify the size, in bytes, of the information buffer pointed to by the 766da6c28aaSamw * pbBuffer parameter. (The cbBuffer parameter replaces the prefmaxlen 767da6c28aaSamw * parameter.) Neither a user name parameter nor a resume handle parameter is 768da6c28aaSamw * available on this platform. Therefore, the parameter list is as follows. 769da6c28aaSamw * 770da6c28aaSamw * API_FUNCTION NetSessionEnum(const char FAR *pszServer, 771da6c28aaSamw * short sLevel, 772da6c28aaSamw * char FAR *pbBuffer, 773da6c28aaSamw * unsigned short cbBuffer, 774da6c28aaSamw * unsigned short FAR *pcEntriesRead, 775da6c28aaSamw * unsigned short FAR *pcTotalAvail); 776da6c28aaSamw * 777da6c28aaSamw * Parameters 778da6c28aaSamw * 779da6c28aaSamw * servername 780da6c28aaSamw * [in] Pointer to a string that specifies the DNS or NetBIOS name of the 781da6c28aaSamw * remote server on which the function is to execute. If this parameter is 782da6c28aaSamw * NULL, the local computer is used. 783da6c28aaSamw * Windows NT 4.0 and earlier: This string must begin with \\. 784da6c28aaSamw * 785da6c28aaSamw * UncClientName 786da6c28aaSamw * [in] Pointer to a string that specifies the name of the computer session 787da6c28aaSamw * for which information is to be returned. If this parameter is NULL, 788da6c28aaSamw * NetSessionEnum returns information for all computer sessions on the server. 789da6c28aaSamw * 790da6c28aaSamw * username 791da6c28aaSamw * [in] Pointer to a string that specifies the name of the user for which 792da6c28aaSamw * information is to be returned. If this parameter is NULL, NetSessionEnum 793da6c28aaSamw * returns information for all users. 794da6c28aaSamw * 795da6c28aaSamw * level 796da6c28aaSamw * [in] Specifies the information level of the data. This parameter can be 797da6c28aaSamw * one of the following values. 798da6c28aaSamw * Windows NT/2000/XP: The following levels are valid. 799da6c28aaSamw * Value Meaning 800da6c28aaSamw * 0 Return the name of the computer that established the session. 801da6c28aaSamw * The bufptr parameter points to an array of SESSION_INFO_0 802da6c28aaSamw * structures. 803da6c28aaSamw * 1 Return the name of the computer, name of the user, and open files, 804da6c28aaSamw * pipes, and devices on the computer. The bufptr parameter points to 805da6c28aaSamw * an array of SESSION_INFO_1 structures. 806da6c28aaSamw * 2 In addition to the information indicated for level 1, return the 807da6c28aaSamw * type of client and how the user established the session. The bufptr 808da6c28aaSamw * parameter points to an array of SESSION_INFO_2 structures. 809da6c28aaSamw * 10 Return the name of the computer, name of the user, and active and 810da6c28aaSamw * idle times for the session. The bufptr parameter points to an array 811da6c28aaSamw * of SESSION_INFO_10 structures. 812da6c28aaSamw * 502 Return the name of the computer; name of the user; open files, 813da6c28aaSamw * pipes, and devices on the computer; and the name of the transport 814da6c28aaSamw * the client is using. The bufptr parameter points to an array of 815da6c28aaSamw * SESSION_INFO_502 structures. 816da6c28aaSamw * 817da6c28aaSamw * Windows 95/98/Me: The following level is valid. 818da6c28aaSamw * Value Meaning 819da6c28aaSamw * 50 Return the name of the computer, name of the user, open files on 820da6c28aaSamw * the computer, and the name of the transport protocol the client is 821da6c28aaSamw * using. The pbBuffer parameter points to an array of session_info_50 822da6c28aaSamw * structures. 823da6c28aaSamw * 824da6c28aaSamw * bufptr 825da6c28aaSamw * [out] Pointer to the buffer that receives the data. The format of this 826da6c28aaSamw * data depends on the value of the level parameter. 827da6c28aaSamw * Windows NT/2000/XP: This buffer is allocated by the system and must be 828da6c28aaSamw * freed using the NetApiBufferFree function. Note that you must free the 829da6c28aaSamw * buffer even if the function fails with ERROR_MORE_DATA. 830da6c28aaSamw * Windows 95/98/Me: The caller must allocate and deallocate this buffer. 831da6c28aaSamw * 832da6c28aaSamw * prefmaxlen 833da6c28aaSamw * [in] Specifies the preferred maximum length of returned data, in bytes. 834da6c28aaSamw * If you specify MAX_PREFERRED_LENGTH, the function allocates the amount 835da6c28aaSamw * of memory required for the data. If you specify another value in this 836da6c28aaSamw * parameter, it can restrict the number of bytes that the function returns. 837da6c28aaSamw * If the buffer size is insufficient to hold all entries, the function 838da6c28aaSamw * returns ERROR_MORE_DATA. For more information, see Network Management 839da6c28aaSamw * Function Buffers and Network Management Function Buffer Lengths. 840da6c28aaSamw * 841da6c28aaSamw * entriesread 842da6c28aaSamw * [out] Pointer to a value that receives the count of elements actually 843da6c28aaSamw * enumerated. 844da6c28aaSamw * 845da6c28aaSamw * totalentries 846da6c28aaSamw * [out] Pointer to a value that receives the total number of entries that 847da6c28aaSamw * could have been enumerated from the current resume position. 848da6c28aaSamw * 849da6c28aaSamw * resume_handle 850da6c28aaSamw * [in/out] Pointer to a value that contains a resume handle which is used 851da6c28aaSamw * to continue an existing session search. The handle should be zero on the 852da6c28aaSamw * first call and left unchanged for subsequent calls. If resume_handle is 853da6c28aaSamw * NULL, no resume handle is stored. 854da6c28aaSamw * 855da6c28aaSamw * 856da6c28aaSamw * SESSION_INFO_1 857da6c28aaSamw * ============== 858da6c28aaSamw * The SESSION_INFO_1 structure contains information about the session, 859da6c28aaSamw * including name of the computer; name of the user; and open files, pipes, 860da6c28aaSamw * and devices on the computer. 861da6c28aaSamw * 862da6c28aaSamw * Members 863da6c28aaSamw * 864da6c28aaSamw * sesi1_cname 865da6c28aaSamw * Pointer to a Unicode string specifying the name of the computer that 866da6c28aaSamw * established the session. 867da6c28aaSamw * 868da6c28aaSamw * sesi1_username 869da6c28aaSamw * Pointer to a Unicode string specifying the name of the user who established 870da6c28aaSamw * the session. 871da6c28aaSamw * 872da6c28aaSamw * sesi1_num_opens 873da6c28aaSamw * Specifies a DWORD value that contains the number of files, devices, 874da6c28aaSamw * and pipes opened during the session. 875da6c28aaSamw * 876da6c28aaSamw * sesi1_time 877da6c28aaSamw * Specifies a DWORD value that contains the number of seconds the session 878da6c28aaSamw * has been active. 879da6c28aaSamw * 880da6c28aaSamw * sesi1_idle_time 881da6c28aaSamw * Specifies a DWORD value that contains the number of seconds the session 882da6c28aaSamw * has been idle. 883da6c28aaSamw * 884da6c28aaSamw * sesi1_user_flags 885da6c28aaSamw * Specifies a DWORD value that describes how the user established the 886da6c28aaSamw * session. This member can be one of the following values: 887da6c28aaSamw * SESS_GUEST The user specified by the sesi1_username member 888da6c28aaSamw * established the session using a guest account. 889da6c28aaSamw * SESS_NOENCRYPTION The user specified by the sesi1_username member 890da6c28aaSamw * established the session without using password 891da6c28aaSamw * encryption. 892da6c28aaSamw *********************************************************************** 893da6c28aaSamw */ 894da6c28aaSamw 895da6c28aaSamw#define SESS_GUEST 0x00000001 896da6c28aaSamw#define SESS_NOENCRYPTION 0x00000002 897da6c28aaSamw 898da6c28aaSamwstruct mslm_SESSION_INFO_0 { 899da6c28aaSamw LPTSTR sesi0_cname; 900da6c28aaSamw}; 901da6c28aaSamwINFONRES_RESULT(mslm_SESSION_INFO, 0) 902da6c28aaSamw 903da6c28aaSamwstruct mslm_SESSION_INFO_1 { 904da6c28aaSamw LPTSTR sesi1_cname; 905da6c28aaSamw LPTSTR sesi1_uname; 906da6c28aaSamw DWORD sesi1_nopens; 907da6c28aaSamw DWORD sesi1_time; 908da6c28aaSamw DWORD sesi1_itime; 909da6c28aaSamw DWORD sesi1_uflags; 910da6c28aaSamw}; 911da6c28aaSamwINFONRES_RESULT(mslm_SESSION_INFO, 1) 912da6c28aaSamw 91329bd2886SAlan Wrightstruct mslm_SESSION_INFO_2 { 91429bd2886SAlan Wright LPTSTR sesi2_cname; 91529bd2886SAlan Wright LPTSTR sesi2_uname; 91629bd2886SAlan Wright DWORD sesi2_nopens; 91729bd2886SAlan Wright DWORD sesi2_time; 91829bd2886SAlan Wright DWORD sesi2_itime; 91929bd2886SAlan Wright DWORD sesi2_uflags; 92029bd2886SAlan Wright LPTSTR sesi2_cltype_name; 92129bd2886SAlan Wright}; 92229bd2886SAlan WrightINFONRES_RESULT(mslm_SESSION_INFO, 2) 92329bd2886SAlan Wright 92429bd2886SAlan Wrightstruct mslm_SESSION_INFO_10 { 92529bd2886SAlan Wright LPTSTR sesi10_cname; 92629bd2886SAlan Wright LPTSTR sesi10_uname; 92729bd2886SAlan Wright DWORD sesi10_time; 92829bd2886SAlan Wright DWORD sesi10_itime; 92929bd2886SAlan Wright}; 93029bd2886SAlan WrightINFONRES_RESULT(mslm_SESSION_INFO, 10) 93129bd2886SAlan Wright 93229bd2886SAlan Wrightstruct mslm_SESSION_INFO_502 { 93329bd2886SAlan Wright LPTSTR sesi502_cname; 93429bd2886SAlan Wright LPTSTR sesi502_uname; 93529bd2886SAlan Wright DWORD sesi502_nopens; 93629bd2886SAlan Wright DWORD sesi502_time; 93729bd2886SAlan Wright DWORD sesi502_itime; 93829bd2886SAlan Wright DWORD sesi502_uflags; 93929bd2886SAlan Wright LPTSTR sesi502_cltype_name; 94029bd2886SAlan Wright LPTSTR sesi502_transport; 94129bd2886SAlan Wright}; 94229bd2886SAlan WrightINFONRES_RESULT(mslm_SESSION_INFO, 502) 94329bd2886SAlan Wright 944da6c28aaSamwINFONRES_DEFINITION(mslm_NetSessionEnum, 945da6c28aaSamw INFONRES_UNION_ENTRY(mslm_SESSION_INFO, 0) 94629bd2886SAlan Wright INFONRES_UNION_ENTRY(mslm_SESSION_INFO, 1) 94729bd2886SAlan Wright INFONRES_UNION_ENTRY(mslm_SESSION_INFO, 2) 94829bd2886SAlan Wright INFONRES_UNION_ENTRY(mslm_SESSION_INFO, 10) 94929bd2886SAlan Wright INFONRES_UNION_ENTRY(mslm_SESSION_INFO, 502)) 950da6c28aaSamw 951da6c28aaSamwOPERATION(SRVSVC_OPNUM_NetSessionEnum) 952da6c28aaSamwstruct mslm_NetSessionEnum { 953da6c28aaSamw IN LPTSTR servername; 954da6c28aaSamw IN DWORD unc_clientname; 955da6c28aaSamw IN DWORD username; 956da6c28aaSamw INOUT DWORD level; 957da6c28aaSamw INOUT struct mslm_NetSessionEnum_result result; 958da6c28aaSamw IN DWORD pref_max_len; 959da6c28aaSamw OUT DWORD total_entries; 960da6c28aaSamw INOUT DWORD *resume_handle; 961da6c28aaSamw OUT DWORD status; 962da6c28aaSamw}; 963da6c28aaSamw 964da6c28aaSamw 965da6c28aaSamw/* 966da6c28aaSamw *********************************************************************** 967da6c28aaSamw * NetSessionDel (Platform SDK: Network Management) 968da6c28aaSamw * 969da6c28aaSamw * The NetSessionDel function ends a network session between a server 970da6c28aaSamw * and a workstation. 971da6c28aaSamw * 972da6c28aaSamw * Security Requirements 973da6c28aaSamw * Only members of the Administrators or Account Operators local group 974da6c28aaSamw * can successfully execute the NetSessionDel function. 975da6c28aaSamw * 976da6c28aaSamw * Windows NT/2000/XP: The parameter order is as follows. 977da6c28aaSamw * 978da6c28aaSamw * NET_API_STATUS NetSessionDel(LPWSTR servername, 979da6c28aaSamw * LPWSTR UncClientName, 980da6c28aaSamw * LPWSTR username); 981da6c28aaSamw * 982da6c28aaSamw * Windows 95/98/Me: The sReserved parameter replaces the username 983da6c28aaSamw * parameter. For more information, see the following Remarks section. 984da6c28aaSamw * The parameter list is as follows. 985da6c28aaSamw * 986da6c28aaSamw * API_FUNCTION NetSessionDel(const char FAR *pszServer, 987da6c28aaSamw * const char FAR *pszClientName, 988da6c28aaSamw * short sReserved); 989da6c28aaSamw * 990da6c28aaSamw * Parameters 991da6c28aaSamw * 992da6c28aaSamw * servername 993da6c28aaSamw * [in] Pointer to a string that specifies the DNS or NetBIOS name 9941fcced4cSJordan Brown * of the server. Servers should not validate this parameter. 9951fcced4cSJordan Brown * This parameter may be NULL and on Windows NT 4.0 and earlier it 9961fcced4cSJordan Brown * should begin with \\. 997da6c28aaSamw * 998da6c28aaSamw * UncClientName 9991fcced4cSJordan Brown * [in] Pointer to a string that specifies the name of the client 10001fcced4cSJordan Brown * to disconnect. If UncClientName is NULL, all sessions associated 10011fcced4cSJordan Brown * with the specified user will be disconnected. 1002da6c28aaSamw * 1003da6c28aaSamw * username 1004da6c28aaSamw * [in] Pointer to a string that specifies the name of the user whose 10051fcced4cSJordan Brown * session is to be terminated. If username is NULL, all sessions 10061fcced4cSJordan Brown * from the specified client will be disconnected. 1007da6c28aaSamw * 1008da6c28aaSamw * Remarks 1009da6c28aaSamw * Windows 95/98/Me: You must specify the session key in the sReserved 1010da6c28aaSamw * parameter when you call NetSessionDel. The session key is returned by 1011da6c28aaSamw * the NetSessionEnum function or the NetSessionGetInfo function in the 1012da6c28aaSamw * sesi50_key member of the session_info_50 structure. 1013da6c28aaSamw *********************************************************************** 1014da6c28aaSamw */ 1015da6c28aaSamw 1016da6c28aaSamwOPERATION(SRVSVC_OPNUM_NetSessionDel) 1017da6c28aaSamwstruct mslm_NetSessionDel { 1018da6c28aaSamw IN LPTSTR servername; 1019da6c28aaSamw IN LPTSTR unc_clientname; 1020da6c28aaSamw IN LPTSTR username; 1021da6c28aaSamw OUT DWORD status; 1022da6c28aaSamw}; 1023da6c28aaSamw 1024da6c28aaSamw 1025da6c28aaSamw/* 1026da6c28aaSamw * SRVSVC NetServerGetInfo ( 1027da6c28aaSamw * IN LPTSTR servername, 1028da6c28aaSamw * IN DWORD level, 1029da6c28aaSamw * OUT union switch(level) { 1030da6c28aaSamw * case 100: _SERVER_INFO_100 * p100; 1031da6c28aaSamw * case 101: _SERVER_INFO_101 * p101; 1032da6c28aaSamw * case 102: _SERVER_INFO_102 * p102; 1033da6c28aaSamw * } bufptr, 1034da6c28aaSamw * OUT DWORD status 1035da6c28aaSamw * ) 1036da6c28aaSamw */ 1037da6c28aaSamw 1038da6c28aaSamw/* for svX_platform */ 10391fcced4cSJordan Brown#define SV_PLATFORM_ID_DOS 300 1040da6c28aaSamw#define SV_PLATFORM_ID_OS2 400 1041da6c28aaSamw#define SV_PLATFORM_ID_NT 500 10421fcced4cSJordan Brown#define SV_PLATFORM_ID_OSF 600 10431fcced4cSJordan Brown#define SV_PLATFORM_ID_VMS 700 1044da6c28aaSamw 1045da6c28aaSamw/* Bit-mapped values for svX_type fields */ 1046da6c28aaSamw#define SV_TYPE_WORKSTATION 0x00000001 1047da6c28aaSamw#define SV_TYPE_SERVER 0x00000002 1048da6c28aaSamw#define SV_TYPE_SQLSERVER 0x00000004 1049da6c28aaSamw#define SV_TYPE_DOMAIN_CTRL 0x00000008 1050da6c28aaSamw#define SV_TYPE_DOMAIN_BAKCTRL 0x00000010 1051da6c28aaSamw#define SV_TYPE_TIME_SOURCE 0x00000020 1052da6c28aaSamw#define SV_TYPE_AFP 0x00000040 1053da6c28aaSamw#define SV_TYPE_NOVELL 0x00000080 1054da6c28aaSamw#define SV_TYPE_DOMAIN_MEMBER 0x00000100 1055da6c28aaSamw#define SV_TYPE_PRINTQ_SERVER 0x00000200 1056da6c28aaSamw#define SV_TYPE_DIALIN_SERVER 0x00000400 1057da6c28aaSamw#define SV_TYPE_XENIX_SERVER 0x00000800 1058da6c28aaSamw#define SV_TYPE_SERVER_UNIX SV_TYPE_XENIX_SERVER 1059a0aa776eSAlan Wright#define SV_TYPE_NT 0x00001000 /* NT Workstation */ 1060a0aa776eSAlan Wright#define SV_TYPE_WFW 0x00002000 /* Windows for Workgroups */ 1061da6c28aaSamw 1062da6c28aaSamw#define SV_TYPE_SERVER_MFPN 0x00004000 1063a0aa776eSAlan Wright#define SV_TYPE_SERVER_NT 0x00008000 /* NT Server */ 1064da6c28aaSamw#define SV_TYPE_POTENTIAL_BROWSER 0x00010000 1065da6c28aaSamw#define SV_TYPE_BACKUP_BROWSER 0x00020000 1066da6c28aaSamw#define SV_TYPE_MASTER_BROWSER 0x00040000 1067da6c28aaSamw#define SV_TYPE_DOMAIN_MASTER 0x00080000 1068da6c28aaSamw#define SV_TYPE_SERVER_OSF 0x00100000 1069da6c28aaSamw#define SV_TYPE_SERVER_VMS 0x00200000 1070da6c28aaSamw#define SV_TYPE_WINDOWS 0x00400000 /* Windows95 and above */ 1071a0aa776eSAlan Wright#define SV_TYPE_ALTERNATE_XPORT 0x20000000 /* Return alt transport list */ 1072da6c28aaSamw#define SV_TYPE_LOCAL_LIST_ONLY 0x40000000 /* Return local list only */ 1073da6c28aaSamw#define SV_TYPE_DOMAIN_ENUM 0x80000000 1074da6c28aaSamw#define SV_TYPE_ALL 0xFFFFFFFF /* handy for NetServerEnum2 */ 1075da6c28aaSamw 1076*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States#define SV_TYPE_DEFAULT (SV_TYPE_WORKSTATION | SV_TYPE_SERVER | SV_TYPE_NT | \ 1077*9fb67ea3Safshin salek ardakani - Sun Microsystems - Irvine United States SV_TYPE_SERVER_NT) 1078da6c28aaSamw 1079da6c28aaSamw/* Special value for sv102_disc that specifies infinite disconnect time */ 1080da6c28aaSamw#define SV_NODISC (-1L) /* No autodisconnect timeout enforced */ 1081da6c28aaSamw 1082da6c28aaSamw/* Values of svX_security field */ 1083da6c28aaSamw#define SV_USERSECURITY 1 1084da6c28aaSamw#define SV_SHARESECURITY 0 1085da6c28aaSamw 1086da6c28aaSamw/* Values of svX_hidden field */ 1087da6c28aaSamw#define SV_HIDDEN 1 1088da6c28aaSamw#define SV_VISIBLE 0 1089da6c28aaSamw 1090da6c28aaSamw 1091da6c28aaSamwstruct mslm_SERVER_INFO_100 { 1092da6c28aaSamw DWORD sv100_platform_id; 1093da6c28aaSamw LPTSTR sv100_name; 1094da6c28aaSamw}; 1095da6c28aaSamw 1096da6c28aaSamwstruct mslm_SERVER_INFO_101 { 1097da6c28aaSamw DWORD sv101_platform_id; 1098da6c28aaSamw LPTSTR sv101_name; 1099da6c28aaSamw DWORD sv101_version_major; 1100da6c28aaSamw DWORD sv101_version_minor; 1101da6c28aaSamw DWORD sv101_type; 1102da6c28aaSamw LPTSTR sv101_comment; 1103da6c28aaSamw}; 1104da6c28aaSamw 1105da6c28aaSamwstruct mslm_SERVER_INFO_102 { 1106da6c28aaSamw DWORD sv102_platform_id; 1107da6c28aaSamw LPTSTR sv102_name; 1108da6c28aaSamw DWORD sv102_version_major; 1109da6c28aaSamw DWORD sv102_version_minor; 1110da6c28aaSamw DWORD sv102_type; 1111da6c28aaSamw LPTSTR sv102_comment; 1112da6c28aaSamw DWORD sv102_users; 1113da6c28aaSamw DWORD sv102_disc; 1114da6c28aaSamw DWORD sv102_hidden; /* BOOL */ 1115da6c28aaSamw DWORD sv102_announce; 1116da6c28aaSamw DWORD sv102_anndelta; 1117da6c28aaSamw DWORD sv102_licenses; 1118da6c28aaSamw LPTSTR sv102_userpath; 1119da6c28aaSamw}; 1120da6c28aaSamw 112129bd2886SAlan Wrightstruct mslm_SERVER_INFO_502 { 112229bd2886SAlan Wright DWORD sv502_sessopens; 112329bd2886SAlan Wright DWORD sv502_sessvcs; 112429bd2886SAlan Wright DWORD sv502_opensearch; 112529bd2886SAlan Wright DWORD sv502_sizreqbuf; 112629bd2886SAlan Wright DWORD sv502_initworkitems; 112729bd2886SAlan Wright DWORD sv502_maxworkitems; 112829bd2886SAlan Wright DWORD sv502_rawworkitems; 112929bd2886SAlan Wright DWORD sv502_irpstacksize; 113029bd2886SAlan Wright DWORD sv502_maxrawbuflen; 113129bd2886SAlan Wright DWORD sv502_sessusers; 113229bd2886SAlan Wright DWORD sv502_sessconns; 113329bd2886SAlan Wright DWORD sv502_maxpagedmemoryusage; 113429bd2886SAlan Wright DWORD sv502_maxnonpagedmemoryusage; 113529bd2886SAlan Wright DWORD sv502_enablesoftcompat; 113629bd2886SAlan Wright DWORD sv502_enableforcedlogoff; 113729bd2886SAlan Wright DWORD sv502_timesource; 113829bd2886SAlan Wright DWORD sv502_acceptdownlevelapis; 113929bd2886SAlan Wright DWORD sv502_lmannounce; 114029bd2886SAlan Wright}; 114129bd2886SAlan Wright 114229bd2886SAlan Wrightstruct mslm_SERVER_INFO_503 { 114329bd2886SAlan Wright DWORD sv503_sessopens; 114429bd2886SAlan Wright DWORD sv503_sessvcs; 114529bd2886SAlan Wright DWORD sv503_opensearch; 114629bd2886SAlan Wright DWORD sv503_sizreqbuf; 114729bd2886SAlan Wright DWORD sv503_initworkitems; 114829bd2886SAlan Wright DWORD sv503_maxworkitems; 114929bd2886SAlan Wright DWORD sv503_rawworkitems; 115029bd2886SAlan Wright DWORD sv503_irpstacksize; 115129bd2886SAlan Wright DWORD sv503_maxrawbuflen; 115229bd2886SAlan Wright DWORD sv503_sessusers; 115329bd2886SAlan Wright DWORD sv503_sessconns; 115429bd2886SAlan Wright DWORD sv503_maxpagedmemoryusage; 115529bd2886SAlan Wright DWORD sv503_maxnonpagedmemoryusage; 115629bd2886SAlan Wright DWORD sv503_enablesoftcompat; 115729bd2886SAlan Wright DWORD sv503_enableforcedlogoff; 115829bd2886SAlan Wright DWORD sv503_timesource; 115929bd2886SAlan Wright DWORD sv503_acceptdownlevelapis; 116029bd2886SAlan Wright DWORD sv503_lmannounce; 116129bd2886SAlan Wright LPTSTR sv503_domain; 116229bd2886SAlan Wright DWORD sv503_maxcopyreadlen; 116329bd2886SAlan Wright DWORD sv503_maxcopywritelen; 116429bd2886SAlan Wright DWORD sv503_minkeepsearch; 116529bd2886SAlan Wright DWORD sv503_maxkeepsearch; 116629bd2886SAlan Wright DWORD sv503_minkeepcomplsearch; 116729bd2886SAlan Wright DWORD sv503_maxkeepcomplsearch; 116829bd2886SAlan Wright DWORD sv503_threadcountadd; 116929bd2886SAlan Wright DWORD sv503_numblockthreads; 117029bd2886SAlan Wright DWORD sv503_scavtimeout; 117129bd2886SAlan Wright DWORD sv503_minrcvqueue; 117229bd2886SAlan Wright DWORD sv503_minfreeworkitems; 117329bd2886SAlan Wright DWORD sv503_xactmemsize; 117429bd2886SAlan Wright DWORD sv503_threadpriority; 117529bd2886SAlan Wright DWORD sv503_maxmpxct; 117629bd2886SAlan Wright DWORD sv503_oplockbreakwait; 117729bd2886SAlan Wright DWORD sv503_oplockbreakresponsewait; 117829bd2886SAlan Wright DWORD sv503_enableoplocks; 117929bd2886SAlan Wright DWORD sv503_enableoplockforceclose; 118029bd2886SAlan Wright DWORD sv503_enablefcbopens; 118129bd2886SAlan Wright DWORD sv503_enableraw; 118229bd2886SAlan Wright DWORD sv503_enablesharednetdrives; 118329bd2886SAlan Wright DWORD sv503_minfreeconnections; 118429bd2886SAlan Wright DWORD sv503_maxfreeconnections; 118529bd2886SAlan Wright}; 118629bd2886SAlan Wright 1187da6c28aaSamwunion mslm_NetServerGetInfo_ru { 1188da6c28aaSamw CASE(100) struct mslm_SERVER_INFO_100 *bufptr100; 1189da6c28aaSamw CASE(101) struct mslm_SERVER_INFO_101 *bufptr101; 1190da6c28aaSamw CASE(102) struct mslm_SERVER_INFO_102 *bufptr102; 119129bd2886SAlan Wright CASE(502) struct mslm_SERVER_INFO_502 *bufptr502; 119229bd2886SAlan Wright CASE(503) struct mslm_SERVER_INFO_503 *bufptr503; 1193da6c28aaSamw DEFAULT char *nullptr; 1194da6c28aaSamw}; 1195da6c28aaSamw 1196da6c28aaSamwstruct mslm_NetServerGetInfo_result { 1197da6c28aaSamw DWORD level; 1198da6c28aaSamw SWITCH(level) 1199da6c28aaSamw union mslm_NetServerGetInfo_ru bufptr; 1200da6c28aaSamw}; 1201da6c28aaSamw 1202da6c28aaSamw 1203da6c28aaSamwOPERATION(SRVSVC_OPNUM_NetServerGetInfo) 1204da6c28aaSamwstruct mslm_NetServerGetInfo { 1205da6c28aaSamw IN LPTSTR servername; 1206da6c28aaSamw IN DWORD level; 1207da6c28aaSamw OUT struct mslm_NetServerGetInfo_result result; 1208da6c28aaSamw OUT DWORD status; 1209da6c28aaSamw}; 1210da6c28aaSamw 1211da6c28aaSamw/* 1212da6c28aaSamw * SRVSVC NetRemoteTOD ( 1213da6c28aaSamw * IN LPTSTR servername, 1214da6c28aaSamw * OUT _TIME_OF_DAY_INFO *bufptr, 1215da6c28aaSamw * OUT long status 1216da6c28aaSamw * ) 1217da6c28aaSamw */ 1218da6c28aaSamw 1219da6c28aaSamwstruct mslm_TIME_OF_DAY_INFO { 1220da6c28aaSamw DWORD tod_elapsedt; 1221da6c28aaSamw DWORD tod_msecs; 1222da6c28aaSamw DWORD tod_hours; 1223da6c28aaSamw DWORD tod_mins; 1224da6c28aaSamw DWORD tod_secs; 1225da6c28aaSamw DWORD tod_hunds; 1226da6c28aaSamw DWORD tod_timezone; 1227da6c28aaSamw DWORD tod_tinterval; 1228da6c28aaSamw DWORD tod_day; 1229da6c28aaSamw DWORD tod_month; 1230da6c28aaSamw DWORD tod_year; 1231da6c28aaSamw DWORD tod_weekday; 1232da6c28aaSamw}; 1233da6c28aaSamw 1234da6c28aaSamwOPERATION(SRVSVC_OPNUM_NetRemoteTOD) 1235da6c28aaSamwstruct mslm_NetRemoteTOD { 1236da6c28aaSamw IN LPTSTR servername; 1237da6c28aaSamw OUT struct mslm_TIME_OF_DAY_INFO *bufptr; 1238da6c28aaSamw OUT DWORD status; 1239da6c28aaSamw}; 1240da6c28aaSamw 1241fe1c642dSBill Krier#define NAMEFLAG_LM2 0x80000000 1242fe1c642dSBill Krier 12433db3f65cSamw#define NAMETYPE_USER 1 12443db3f65cSamw#define NAMETYPE_PASSWORD 2 12453db3f65cSamw#define NAMETYPE_GROUP 3 12463db3f65cSamw#define NAMETYPE_COMPUTER 4 12473db3f65cSamw#define NAMETYPE_EVENT 5 12483db3f65cSamw#define NAMETYPE_DOMAIN 6 12493db3f65cSamw#define NAMETYPE_SERVICE 7 12503db3f65cSamw#define NAMETYPE_NET 8 12513db3f65cSamw#define NAMETYPE_SHARE 9 12523db3f65cSamw#define NAMETYPE_MESSAGE 10 12533db3f65cSamw#define NAMETYPE_MESSAGEDEST 11 12543db3f65cSamw#define NAMETYPE_SHAREPASSWORD 12 12553db3f65cSamw#define NAMETYPE_WORKGROUP 13 12563db3f65cSamw 1257da6c28aaSamwOPERATION(SRVSVC_OPNUM_NetNameValidate) 1258da6c28aaSamwstruct mslm_NetNameValidate { 1259da6c28aaSamw IN LPTSTR servername; 1260da6c28aaSamw IN REFERENCE LPTSTR pathname; 1261da6c28aaSamw IN DWORD type; 1262da6c28aaSamw IN DWORD flags; 1263da6c28aaSamw OUT DWORD status; 1264da6c28aaSamw}; 1265da6c28aaSamw 1266da6c28aaSamw/* 1267da6c28aaSamw * SRVSVC NetShareEnum ( 1268da6c28aaSamw * IN LPTSTR servername, 1269da6c28aaSamw * IN DWORD level; 1270da6c28aaSamw * OUT union switch(level) { 1271da6c28aaSamw * case 0: struct { 1272da6c28aaSamw * DWORD entriesread; 1273da6c28aaSamw * [size_is(entriesread)] 1274da6c28aaSamw * _SHARE_INFO_0 *entries; 1275da6c28aaSamw * } *bufptr0; 1276da6c28aaSamw * case 1: struct { 1277da6c28aaSamw * DWORD entriesread; 1278da6c28aaSamw * [size_is(entriesread)] 1279da6c28aaSamw * _SHARE_INFO_1 *entries; 1280da6c28aaSamw * } *bufptr1; 1281da6c28aaSamw * ... 1282da6c28aaSamw * } bufptr, 1283da6c28aaSamw * IN DWORD prefmaxlen, 1284da6c28aaSamw * OUT DWORD totalentries, 1285da6c28aaSamw * IN OUT DWORD ?* resume_handle, 1286da6c28aaSamw * OUT DWORD status 1287da6c28aaSamw * ) 1288da6c28aaSamw */ 1289da6c28aaSamw 1290da6c28aaSamw/* 1291bbf6f00cSJordan Brown * Share types for shiX_type fields - duplicated from smb.h 1292da6c28aaSamw */ 1293da6c28aaSamw#ifndef _SHARE_TYPES_DEFINED_ 1294da6c28aaSamw#define _SHARE_TYPES_DEFINED_ 1295da6c28aaSamw#define STYPE_DISKTREE 0x00000000 1296da6c28aaSamw#define STYPE_PRINTQ 0x00000001 1297da6c28aaSamw#define STYPE_DEVICE 0x00000002 1298da6c28aaSamw#define STYPE_IPC 0x00000003 1299da6c28aaSamw#define STYPE_MASK 0x0000000F 1300da6c28aaSamw#define STYPE_DFS 0x00000064 1301da6c28aaSamw#define STYPE_HIDDEN 0x80000000 1302da6c28aaSamw#define STYPE_SPECIAL 0x80000000 1303da6c28aaSamw#endif /* _SHARE_TYPES_DEFINED_ */ 1304da6c28aaSamw 1305da6c28aaSamw/* Maximum uses for shiX_max_uses fields */ 1306da6c28aaSamw#define SHI_USES_UNLIMITED (DWORD)-1 1307da6c28aaSamw 1308eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United StatesINFONRES_RESULT(mslm_NetShareInfo,0) 1309eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United StatesINFONRES_RESULT(mslm_NetShareInfo,1) 1310eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United StatesINFONRES_RESULT(mslm_NetShareInfo,2) 1311eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United StatesINFONRES_RESULT(mslm_NetShareInfo,501) 1312eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United StatesINFONRES_RESULT(mslm_NetShareInfo,502) 1313da6c28aaSamw 1314da6c28aaSamwunion mslm_NetShareAddInfo_u { 1315eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United States CASE(2) struct mslm_NetShareInfo_2 *info2; 1316eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United States CASE(502) struct mslm_NetShareInfo_502 *info502; 131729bd2886SAlan Wright DEFAULT char *nullptr; 1318da6c28aaSamw}; 1319da6c28aaSamw 1320da6c28aaSamwstruct mslm_NetShareAddInfo { 1321da6c28aaSamw DWORD switch_value; 1322da6c28aaSamw SWITCH(switch_value) 1323da6c28aaSamw union mslm_NetShareAddInfo_u un; 1324da6c28aaSamw}; 1325da6c28aaSamw 1326da6c28aaSamw 1327da6c28aaSamwOPERATION(SRVSVC_OPNUM_NetShareAdd) 1328da6c28aaSamwstruct mslm_NetShareAdd { 1329da6c28aaSamw IN LPTSTR servername; 1330da6c28aaSamw IN DWORD level; 1331da6c28aaSamw IN struct mslm_NetShareAddInfo info; 1332da6c28aaSamw INOUT DWORD *parm_err; 1333da6c28aaSamw OUT DWORD status; 1334da6c28aaSamw}; 1335da6c28aaSamw 1336da6c28aaSamw 1337da6c28aaSamwINFONRES_DEFINITION(mslm_NetShareEnum, 1338eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United States INFONRES_UNION_ENTRY(mslm_NetShareInfo,0) 1339eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United States INFONRES_UNION_ENTRY(mslm_NetShareInfo,1) 1340eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United States INFONRES_UNION_ENTRY(mslm_NetShareInfo,2) 1341eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United States INFONRES_UNION_ENTRY(mslm_NetShareInfo,501) 1342eb1d736bSafshin salek ardakani - Sun Microsystems - Irvine United States INFONRES_UNION_ENTRY(mslm_NetShareInfo,502)) 1343da6c28aaSamw 134419d41fccSamw/* 134519d41fccSamw * NetShareEnum: enumerate all shares (see also NetShareEnumSticky). 134619d41fccSamw * Note: the server should ignore the content of servername. 134719d41fccSamw */ 1348da6c28aaSamwOPERATION(SRVSVC_OPNUM_NetShareEnum) 1349da6c28aaSamwstruct mslm_NetShareEnum { 1350da6c28aaSamw IN LPTSTR servername; 1351da6c28aaSamw INOUT DWORD level; 135219d41fccSamw INOUT struct mslm_NetShareEnum_result result; 1353da6c28aaSamw IN DWORD prefmaxlen; 1354da6c28aaSamw OUT DWORD totalentries; 135519d41fccSamw INOUT DWORD *resume_handle; 1356da6c28aaSamw OUT DWORD status; 1357da6c28aaSamw}; 1358da6c28aaSamw 1359da6c28aaSamw/* 1360da6c28aaSamw * Delete a share. The reserved field appears in netmon 1361da6c28aaSamw * but I've left it out in case it's not always present. 1362da6c28aaSamw * This won't affect RPC processing. 1363da6c28aaSamw */ 1364da6c28aaSamwOPERATION(SRVSVC_OPNUM_NetShareDel) 1365da6c28aaSamwstruct mslm_NetShareDel { 1366da6c28aaSamw IN LPTSTR servername; 1367da6c28aaSamw IN REFERENCE LPTSTR netname; 1368da6c28aaSamw /* IN DWORD reserved; */ 1369da6c28aaSamw OUT DWORD status; 1370da6c28aaSamw}; 1371da6c28aaSamw 137229bd2886SAlan WrightOPERATION(SRVSVC_OPNUM_NetShareCheck) 137329bd2886SAlan Wrightstruct mslm_NetShareCheck { 137429bd2886SAlan Wright IN LPTSTR servername; 137529bd2886SAlan Wright IN REFERENCE LPTSTR path; 137629bd2886SAlan Wright OUT DWORD stype; 137729bd2886SAlan Wright OUT DWORD status; 137829bd2886SAlan Wright}; 137929bd2886SAlan Wright 1380da6c28aaSamw/* 138119d41fccSamw * NetShareEnumSticky is the same as NetShareEnum except that 138219d41fccSamw * STYPE_SPECIAL (hidden or special) shares are not returned. 138319d41fccSamw * Note: the server should ignore the content of servername. 1384da6c28aaSamw */ 1385da6c28aaSamwOPERATION(SRVSVC_OPNUM_NetShareEnumSticky) 1386da6c28aaSamwstruct mslm_NetShareEnumSticky { 1387da6c28aaSamw IN LPTSTR servername; 1388da6c28aaSamw INOUT DWORD level; 138919d41fccSamw INOUT struct mslm_NetShareEnum_result result; 1390da6c28aaSamw IN DWORD prefmaxlen; 1391da6c28aaSamw OUT DWORD totalentries; 139219d41fccSamw INOUT DWORD *resume_handle; 1393da6c28aaSamw OUT DWORD status; 1394da6c28aaSamw}; 1395da6c28aaSamw 1396da6c28aaSamw/* 1397da6c28aaSamw * When you install Windows NT Server Tools on a Win95 client, 1398da6c28aaSamw * a security tab will be added to properties dialog box of files/folders. 1399da6c28aaSamw * Within this security tab, when you try to get/set permissions on a 1400da6c28aaSamw * file/folder the next two RPC calls are used. 1401da6c28aaSamw */ 1402da6c28aaSamwOPERATION(SRVSVC_OPNUM_NetGetFileSecurity) 1403da6c28aaSamwstruct mslm_NetGetFileSecurity { 1404da6c28aaSamw IN LPTSTR servername; 1405da6c28aaSamw IN LPTSTR sharename; 1406da6c28aaSamw IN REFERENCE LPTSTR filename; 1407da6c28aaSamw IN DWORD securityinfo; 1408da6c28aaSamw 1409da6c28aaSamw /* 1410da6c28aaSamw * Right now, we can't send back SD of the requested object 14118d7e4166Sjose borrego * in RPC code, so we just reply with access denied error 1412da6c28aaSamw * code. Thus, this output declaration is only valid in this 1413da6c28aaSamw * case i.e., it's not complete. 1414da6c28aaSamw * It looks like: 1415da6c28aaSamw * 1416da6c28aaSamw * A Pointer 1417da6c28aaSamw * A Length 1418da6c28aaSamw * 1419da6c28aaSamw * A Pointer 1420da6c28aaSamw * A Length (equal to the prev length) 1421da6c28aaSamw * A buffer 1422da6c28aaSamw * 1423da6c28aaSamw * return value 1424da6c28aaSamw */ 1425da6c28aaSamw OUT DWORD length; 1426da6c28aaSamw OUT DWORD status; 1427da6c28aaSamw}; 1428da6c28aaSamw 1429da6c28aaSamw/* 1430da6c28aaSamw * This is the request: 1431da6c28aaSamw * 1432da6c28aaSamw * R_SRVSVC: RPC Client call srvsvc:NetrpSetFileSecurity(..) 1433da6c28aaSamw * R_SRVSVC: SRVSVC_HANDLE ServerName = \\WK76-177 1434da6c28aaSamw * R_SRVSVC: LPWSTR ShareName = AFSHIN 1435da6c28aaSamw * R_SRVSVC: LPWSTR lpFileName = \salek.txt 1436da6c28aaSamw * R_SRVSVC: SECURITY_INFORMATION SecurityInformation = 4 (0x4) 1437da6c28aaSamw * -R_SRVSVC: PADT_SECURITY_DESCRIPTOR SecurityDescriptor {..} 1438da6c28aaSamw * R_SRVSVC: DWORD Length = 64 (0x40) 1439da6c28aaSamw * R_SRVSVC: LPBYTE Buffer = 4496048 (0x449AB0) 1440da6c28aaSamw * R_SRVSVC: LPBYTE Buffer [..] = 01 00 04 80 00 00 00 00 00 00 00 00 00 00 00 1441da6c28aaSamw * ... 1442da6c28aaSamw * 1443da6c28aaSamw * 000000A0 00 83 46 00 0B 00 00 00 00 00 00 00 0B 00 ..F........... 1444da6c28aaSamw * 000000B0 00 00 5C 00 5C 00 57 00 4B 00 37 00 36 00 2D 00 ..\.\.W.K.7.6.-. 1445da6c28aaSamw * 000000C0 31 00 37 00 37 00 00 00 08 00 16 83 46 00 07 00 1.7.7.......F... 1446da6c28aaSamw * 000000D0 00 00 00 00 00 00 07 00 00 00 41 00 46 00 53 00 ..........A.F.S. 1447da6c28aaSamw * 000000E0 48 00 49 00 4E 00 00 00 00 00 0B 00 00 00 00 00 H.I.N........... 1448da6c28aaSamw * 000000F0 00 00 0B 00 00 00 5C 00 73 00 61 00 6C 00 65 00 ......\.s.a.l.e. 1449da6c28aaSamw * 00000100 6B 00 2E 00 74 00 78 00 74 00 00 00 00 00 04 00 k...t.x.t....... 1450da6c28aaSamw * 00000110 00 00 40 00 00 00 B0 9A 44 00 40 00 00 00 01 00 ..@.....D.@..... 1451da6c28aaSamw * 00000120 04 80 00 00 00 00 00 00 00 00 00 00 00 00 14 00 ................ 1452da6c28aaSamw * 00000130 00 00 02 00 2C 00 01 00 00 00 00 00 24 00 00 00 ....,.......$... 1453da6c28aaSamw * 00000140 00 A0 01 05 00 00 00 00 00 05 15 00 00 00 1A 24 ...............$ 1454da6c28aaSamw * 00000150 44 38 90 00 0F 02 65 3A BE 4C FF 03 00 00 00 00 D8....e:.L...... 1455da6c28aaSamw * 00000160 00 00 00 00 00 00 00 00 00 00 .......... 1456da6c28aaSamw */ 1457da6c28aaSamwOPERATION(SRVSVC_OPNUM_NetSetFileSecurity) 1458da6c28aaSamwstruct mslm_NetSetFileSecurity { 1459da6c28aaSamw IN LPTSTR servername; 1460da6c28aaSamw IN LPTSTR sharename; 1461da6c28aaSamw IN REFERENCE LPTSTR filename; 1462da6c28aaSamw IN DWORD securityinfo; 1463da6c28aaSamw /* 1464da6c28aaSamw * IN Security Descriptor (looks like): 1465da6c28aaSamw * Length1 1466da6c28aaSamw * Pointer 1467da6c28aaSamw * Length2 (== Length1) 1468da6c28aaSamw * buffer itself 1469da6c28aaSamw */ 1470da6c28aaSamw 1471da6c28aaSamw OUT DWORD status; 1472da6c28aaSamw}; 1473da6c28aaSamw 1474da6c28aaSamw/* 1475da6c28aaSamw * The SRVSVC already 1476da6c28aaSamw */ 1477da6c28aaSamwINTERFACE(0) 1478da6c28aaSamwunion srvsvc_interface { 1479da6c28aaSamw CASE(SRVSVC_OPNUM_NetConnectEnum) 1480da6c28aaSamw struct mslm_NetConnectEnum NetConnectEnum; 1481da6c28aaSamw CASE(SRVSVC_OPNUM_NetFileEnum) 1482da6c28aaSamw struct mslm_NetFileEnum NetFileEnum; 1483da6c28aaSamw CASE(SRVSVC_OPNUM_NetFileClose) 1484da6c28aaSamw struct mslm_NetFileClose NetFileClose; 1485da6c28aaSamw CASE(SRVSVC_OPNUM_NetShareGetInfo) 1486da6c28aaSamw struct mlsm_NetShareGetInfo NetShareGetInfo; 1487da6c28aaSamw CASE(SRVSVC_OPNUM_NetShareSetInfo) 148829bd2886SAlan Wright struct mlsm_NetShareSetInfo NetShareSetInfo; 1489da6c28aaSamw CASE(SRVSVC_OPNUM_NetSessionDel) 1490da6c28aaSamw struct mslm_NetSessionDel NetSessionDel; 1491da6c28aaSamw CASE(SRVSVC_OPNUM_NetSessionEnum) 1492da6c28aaSamw struct mslm_NetSessionEnum NetSessionEnum; 1493da6c28aaSamw CASE(SRVSVC_OPNUM_NetServerGetInfo) 1494da6c28aaSamw struct mslm_NetServerGetInfo NetServerGetInfo; 1495da6c28aaSamw CASE(SRVSVC_OPNUM_NetRemoteTOD) 1496da6c28aaSamw struct mslm_NetRemoteTOD NetRemoteTOD; 1497da6c28aaSamw CASE(SRVSVC_OPNUM_NetNameValidate) 1498da6c28aaSamw struct mslm_NetNameValidate NetNameValidate; 1499da6c28aaSamw CASE(SRVSVC_OPNUM_NetShareAdd) 1500da6c28aaSamw struct mslm_NetShareAdd NetShareAdd; 1501da6c28aaSamw CASE(SRVSVC_OPNUM_NetShareDel) 1502da6c28aaSamw struct mslm_NetShareDel NetShareDel; 150329bd2886SAlan Wright CASE(SRVSVC_OPNUM_NetShareCheck) 150429bd2886SAlan Wright struct mslm_NetShareCheck NetShareCheck; 1505da6c28aaSamw CASE(SRVSVC_OPNUM_NetShareEnum) 1506da6c28aaSamw struct mslm_NetShareEnum NetShareEnum; 1507da6c28aaSamw CASE(SRVSVC_OPNUM_NetShareEnumSticky) 1508da6c28aaSamw struct mslm_NetShareEnumSticky NetShareEnumSticky; 1509da6c28aaSamw CASE(SRVSVC_OPNUM_NetGetFileSecurity) 1510da6c28aaSamw struct mslm_NetGetFileSecurity NetGetFileSecurity; 1511da6c28aaSamw CASE(SRVSVC_OPNUM_NetSetFileSecurity) 1512da6c28aaSamw struct mslm_NetSetFileSecurity NetSetFileSecurity; 1513da6c28aaSamw}; 1514da6c28aaSamwtypedef union srvsvc_interface srvsvc_interface_t; 1515da6c28aaSamwEXTERNTYPEINFO(srvsvc_interface) 1516da6c28aaSamw 1517da6c28aaSamw 1518da6c28aaSamw 1519da6c28aaSamw/* 1520faa1795aSjb150015 * WKSSVC - Workstation Service 1521da6c28aaSamw */ 1522da6c28aaSamw 1523faa1795aSjb150015/* Windows NT */ 1524da6c28aaSamw#define WKSSVC_OPNUM_NetWkstaGetInfo 0x00 1525faa1795aSjb150015#define WKSSVC_OPNUM_NetWkstaSetInfo 0x01 1526faa1795aSjb150015#define WKSSVC_OPNUM_NetWkstaUserEnum 0x02 1527faa1795aSjb150015#define WKSSVC_OPNUM_NetWkstaUserGetInfo 0x03 1528faa1795aSjb150015#define WKSSVC_OPNUM_NetWkstaUserSetInfo 0x04 1529faa1795aSjb150015#define WKSSVC_OPNUM_NetWkstaTransportEnum 0x05 1530faa1795aSjb150015#define WKSSVC_OPNUM_NetWkstaTransportAdd 0x06 1531faa1795aSjb150015#define WKSSVC_OPNUM_NetWkstaTransportDel 0x07 1532faa1795aSjb150015#define WKSSVC_OPNUM_NetUseAdd 0x08 1533faa1795aSjb150015#define WKSSVC_OPNUM_NetUseGetInfo 0x09 1534faa1795aSjb150015#define WKSSVC_OPNUM_NetUseDel 0x0a 1535faa1795aSjb150015#define WKSSVC_OPNUM_NetUseEnum 0x0b 1536faa1795aSjb150015#define WKSSVC_OPNUM_NetMessageBufferSend 0x0c 1537faa1795aSjb150015#define WKSSVC_OPNUM_NetWkstaStatisticsGet 0x0d 1538faa1795aSjb150015#define WKSSVC_OPNUM_NetLogonDomainNameAdd 0x0e 1539da6c28aaSamw 1540faa1795aSjb150015/* Windows 2000 */ 1541faa1795aSjb150015#define WKSSVC_OPNUM_NetLogonDomainNameDel 0x0f 1542faa1795aSjb150015#define WKSSVC_OPNUM_NetJoinDomain 0x10 1543faa1795aSjb150015#define WKSSVC_OPNUM_NetUnjoinDomain 0x11 1544faa1795aSjb150015#define WKSSVC_OPNUM_NetValidateName 0x12 1545faa1795aSjb150015#define WKSSVC_OPNUM_NetRenameMachineInDomain 0x13 1546faa1795aSjb150015#define WKSSVC_OPNUM_NetGetJoinInformation 0x14 1547faa1795aSjb150015#define WKSSVC_OPNUM_NetGetJoinableOUs 0x15 1548faa1795aSjb150015#define WKSSVC_OPNUM_NetJoinDomain2 0x16 1549faa1795aSjb150015#define WKSSVC_OPNUM_NetUnjoinDomain2 0x17 1550faa1795aSjb150015#define WKSSVC_OPNUM_NetRenameMachineInDomain2 0x18 1551faa1795aSjb150015#define WKSSVC_OPNUM_NetValidateName2 0x19 1552faa1795aSjb150015#define WKSSVC_OPNUM_NetGetJoinableOUs2 0x1a 1553da6c28aaSamw 1554faa1795aSjb150015/* Windows XP and Windows Server 2003 */ 1555faa1795aSjb150015#define WKSSVC_OPNUM_NetAddAlternateComputerName 0x1b 1556faa1795aSjb150015#define WKSSVC_OPNUM_NetRemoveAlternateComputerName 0x1c 1557faa1795aSjb150015#define WKSSVC_OPNUM_NetSetPrimaryComputerName 0x1d 1558faa1795aSjb150015#define WKSSVC_OPNUM_NetEnumerateComputerNames 0x1e 1559faa1795aSjb150015#define WKSSVC_OPNUM_NetWorkstationResetDfsCache 0x1f 1560faa1795aSjb150015 1561da6c28aaSamw 1562da6c28aaSamwstruct mslm_WKSTA_INFO_100 { 1563da6c28aaSamw DWORD wki100_platform_id; 1564da6c28aaSamw LPTSTR wki100_computername; 1565da6c28aaSamw LPTSTR wki100_langroup; 1566da6c28aaSamw DWORD wki100_ver_major; 1567da6c28aaSamw DWORD wki100_ver_minor; 1568da6c28aaSamw}; 1569da6c28aaSamw 1570da6c28aaSamw/* NetWkstaGetInfo only. System information - user access */ 1571da6c28aaSamwstruct mslm_WKSTA_INFO_101 { 1572da6c28aaSamw DWORD wki101_platform_id; 1573da6c28aaSamw LPTSTR wki101_computername; 1574da6c28aaSamw LPTSTR wki101_langroup; 1575da6c28aaSamw DWORD wki101_ver_major; 1576da6c28aaSamw DWORD wki101_ver_minor; 1577da6c28aaSamw LPTSTR wki101_lanroot; 1578da6c28aaSamw}; 1579da6c28aaSamw 1580da6c28aaSamw/* NetWkstaGetInfo only. System information - admin or operator access */ 1581da6c28aaSamwstruct mslm_WKSTA_INFO_102 { 1582da6c28aaSamw DWORD wki102_platform_id; 1583da6c28aaSamw LPTSTR wki102_computername; 1584da6c28aaSamw LPTSTR wki102_langroup; 1585da6c28aaSamw DWORD wki102_ver_major; 1586da6c28aaSamw DWORD wki102_ver_minor; 1587da6c28aaSamw LPTSTR wki102_lanroot; 1588da6c28aaSamw DWORD wki102_logged_on_users; 1589da6c28aaSamw}; 1590da6c28aaSamw 1591faa1795aSjb150015struct mslm_WKSTA_INFO_502 { 1592faa1795aSjb150015 DWORD char_wait; 1593faa1795aSjb150015 DWORD collection_time; 1594faa1795aSjb150015 DWORD maximum_collection_count; 1595faa1795aSjb150015 DWORD keep_connection; 1596faa1795aSjb150015 DWORD max_commands; 1597faa1795aSjb150015 DWORD session_timeout; 1598faa1795aSjb150015 DWORD size_char_buf; 1599faa1795aSjb150015 DWORD max_threads; 1600faa1795aSjb150015 DWORD lock_quota; 1601faa1795aSjb150015 DWORD lock_increment; 1602faa1795aSjb150015 DWORD lock_maximum; 1603faa1795aSjb150015 DWORD pipe_increment; 1604faa1795aSjb150015 DWORD pipe_maximum; 1605faa1795aSjb150015 DWORD cache_file_timeout; 1606faa1795aSjb150015 DWORD dormant_file_limit; 1607faa1795aSjb150015 DWORD read_ahead_throughput; 1608faa1795aSjb150015 DWORD num_mailslot_buffers; 1609faa1795aSjb150015 DWORD num_srv_announce_buffers; 1610faa1795aSjb150015 DWORD max_illegal_dgram_events; 1611faa1795aSjb150015 DWORD dgram_event_reset_freq; 1612faa1795aSjb150015 DWORD log_election_packets; 1613faa1795aSjb150015 DWORD use_opportunistic_locking; 1614faa1795aSjb150015 DWORD use_unlock_behind; 1615faa1795aSjb150015 DWORD use_close_behind; 1616faa1795aSjb150015 DWORD buf_named_pipes; 1617faa1795aSjb150015 DWORD use_lock_read_unlock; 1618faa1795aSjb150015 DWORD utilize_nt_caching; 1619faa1795aSjb150015 DWORD use_raw_read; 1620faa1795aSjb150015 DWORD use_raw_write; 1621faa1795aSjb150015 DWORD use_write_raw_data; 1622faa1795aSjb150015 DWORD use_encryption; 1623faa1795aSjb150015 DWORD buf_files_deny_write; 1624faa1795aSjb150015 DWORD buf_read_only_files; 1625faa1795aSjb150015 DWORD force_core_create_mode; 1626faa1795aSjb150015 DWORD use_512_byte_max_transfer; 1627faa1795aSjb150015}; 1628faa1795aSjb150015 1629da6c28aaSamwINFO1RES_DEFINITION(mslm_NetWkstaGetInfo, 1630da6c28aaSamw INFO1RES_UNION_ENTRY(mslm_WKSTA_INFO,100) 1631da6c28aaSamw INFO1RES_UNION_ENTRY(mslm_WKSTA_INFO,101) 1632faa1795aSjb150015 INFO1RES_UNION_ENTRY(mslm_WKSTA_INFO,102) 1633faa1795aSjb150015 INFO1RES_UNION_ENTRY(mslm_WKSTA_INFO,502)) 1634da6c28aaSamw 1635da6c28aaSamwINFO1RESBUF_DEFINITION(mslm_NetWkstaGetInfo, 1636da6c28aaSamw INFO1RESBUF_UNION_ENTRY(mslm_WKSTA_INFO,100) 1637da6c28aaSamw INFO1RESBUF_UNION_ENTRY(mslm_WKSTA_INFO,101) 1638faa1795aSjb150015 INFO1RESBUF_UNION_ENTRY(mslm_WKSTA_INFO,102) 1639faa1795aSjb150015 INFO1RESBUF_UNION_ENTRY(mslm_WKSTA_INFO,502)) 1640da6c28aaSamw 1641da6c28aaSamw 1642da6c28aaSamwOPERATION(WKSSVC_OPNUM_NetWkstaGetInfo) 1643da6c28aaSamwstruct mslm_NetWkstaGetInfo { 1644da6c28aaSamw IN LPTSTR servername; 1645da6c28aaSamw IN DWORD level; 1646da6c28aaSamw OUT struct mslm_NetWkstaGetInfo_result result; 1647da6c28aaSamw OUT DWORD status; 1648da6c28aaSamw}; 1649da6c28aaSamw 1650da6c28aaSamw/* 1651faa1795aSjb150015 *********************************************************************** 1652faa1795aSjb150015 * NetWkstaTransportEnum 1653faa1795aSjb150015 *********************************************************************** 1654faa1795aSjb150015 */ 1655faa1795aSjb150015 1656faa1795aSjb150015struct mslm_NetWkstaTransportInfo0 { 1657faa1795aSjb150015 DWORD quality_of_service; 1658faa1795aSjb150015 DWORD num_vcs; 1659faa1795aSjb150015 LPTSTR transport_name; 1660faa1795aSjb150015 LPTSTR transport_address; 1661faa1795aSjb150015 DWORD wan_ish; 1662faa1795aSjb150015}; 1663faa1795aSjb150015 1664faa1795aSjb150015struct mslm_NetWkstaTransportCtr0 { 1665faa1795aSjb150015 DWORD count; 1666faa1795aSjb150015 SIZE_IS(count) 1667faa1795aSjb150015 struct mslm_NetWkstaTransportInfo0 *ti0; 1668faa1795aSjb150015}; 1669faa1795aSjb150015 1670faa1795aSjb150015union mslm_NetWkstaTransportInfo_ru { 1671faa1795aSjb150015 CASE(0) struct mslm_NetWkstaTransportCtr0 *info0; 1672faa1795aSjb150015 DEFAULT char *nullptr; 1673faa1795aSjb150015}; 1674faa1795aSjb150015 1675faa1795aSjb150015struct mslm_NetWkstaTransportInfo { 1676faa1795aSjb150015 DWORD address; 1677faa1795aSjb150015 DWORD level; 1678faa1795aSjb150015 SWITCH(level) 1679faa1795aSjb150015 union mslm_NetWkstaTransportInfo_ru ru; 1680faa1795aSjb150015}; 1681faa1795aSjb150015 1682faa1795aSjb150015OPERATION(WKSSVC_OPNUM_NetWkstaTransportEnum) 1683faa1795aSjb150015struct mslm_NetWkstaTransportEnum { 1684faa1795aSjb150015 IN LPTSTR servername; 1685faa1795aSjb150015 INOUT struct mslm_NetWkstaTransportInfo info; 1686faa1795aSjb150015 IN DWORD pref_max_len; 1687faa1795aSjb150015 OUT DWORD total_entries; 1688faa1795aSjb150015 INOUT DWORD *resume_handle; 1689faa1795aSjb150015 OUT DWORD status; 1690faa1795aSjb150015}; 1691faa1795aSjb150015 1692faa1795aSjb150015/* 1693da6c28aaSamw * The WKSSVC already 1694da6c28aaSamw */ 1695da6c28aaSamwINTERFACE(0) 1696da6c28aaSamwunion wkssvc_interface { 1697da6c28aaSamw CASE(WKSSVC_OPNUM_NetWkstaGetInfo) 1698da6c28aaSamw struct mslm_NetWkstaGetInfo NetWkstaGetInfo; 1699faa1795aSjb150015 CASE(WKSSVC_OPNUM_NetWkstaTransportEnum) 1700faa1795aSjb150015 struct mslm_NetWkstaTransportEnum NetWkstaTransportEnum; 1701da6c28aaSamw}; 1702da6c28aaSamwtypedef union wkssvc_interface wkssvc_interface_t; 1703da6c28aaSamwEXTERNTYPEINFO(wkssvc_interface) 1704da6c28aaSamw 1705da6c28aaSamw 1706da6c28aaSamw#endif /* _MLSVC_LANMAN_NDL_ */ 1707