1# Copyright (c) 2003-2016 CORE Security Technologies 2# 3# This software is provided under under a slightly modified version 4# of the Apache Software License. See the accompanying LICENSE file 5# for more information. 6# 7# Author: Alberto Solino (@agsolino) 8# 9# Description: 10# [MS-SRVS] Interface implementation 11# 12# Best way to learn how to use these calls is to grab the protocol standard 13# so you understand what the call does, and then read the test case located 14# at https://github.com/CoreSecurity/impacket/tree/master/impacket/testcases/SMB_RPC 15# 16# Some calls have helper functions, which makes it even easier to use. 17# They are located at the end of this file. 18# Helper functions start with "h"<name of the call>. 19# There are test cases for them too. 20# 21from impacket.dcerpc.v5.rpcrt import DCERPCException 22from impacket.dcerpc.v5.ndr import NDRCALL, NDR, NDRSTRUCT, NDRUNION, NDRPOINTER, NDRUniConformantArray, \ 23 NDRUniFixedArray, NDRBOOLEAN, NDRUniConformantVaryingArray, PNDRUniConformantArray 24from impacket.dcerpc.v5.dtypes import NULL, DWORD, LPWSTR, LPBYTE, LMSTR, ULONG, GUID, LPLONG, WSTR, \ 25 SECURITY_INFORMATION, WCHAR 26from impacket import system_errors 27from impacket.uuid import uuidtup_to_bin 28 29MSRPC_UUID_SRVS = uuidtup_to_bin(('4B324FC8-1670-01D3-1278-5A47BF6EE188', '3.0')) 30 31class DCERPCSessionError(DCERPCException): 32 def __init__(self, error_string=None, error_code=None, packet=None): 33 DCERPCException.__init__(self, error_string, error_code, packet) 34 35 def __str__( self ): 36 key = self.error_code 37 if system_errors.ERROR_MESSAGES.has_key(key): 38 error_msg_short = system_errors.ERROR_MESSAGES[key][0] 39 error_msg_verbose = system_errors.ERROR_MESSAGES[key][1] 40 return 'SRVS SessionError: code: 0x%x - %s - %s' % (self.error_code, error_msg_short, error_msg_verbose) 41 else: 42 return 'SRVS SessionError: unknown error code: 0x%x' % self.error_code 43 44################################################################################ 45# CONSTANTS 46################################################################################ 47# 2.2.1.1 SRVSVC_HANDLE 48SRVSVC_HANDLE = WCHAR 49 50class PSRVSVC_HANDLE(NDRPOINTER): 51 referent = ( 52 ('Data', SRVSVC_HANDLE), 53 ) 54 55# 2.2.1.2 SHARE_DEL_HANDLE 56class SHARE_DEL_HANDLE(NDRSTRUCT): 57 align = 1 58 structure = ( 59 ('Data','20s=""'), 60 ) 61 62# 2.2.1.3 PSHARE_DEL_HANDLE 63class PSHARE_DEL_HANDLE(NDRPOINTER): 64 referent = ( 65 ('Data', SHARE_DEL_HANDLE), 66 ) 67 68# 2.2.2.2 MAX_PREFERRED_LENGTH 69MAX_PREFERRED_LENGTH = -1 70 71# 2.2.2.3 Session User Flags 72SESS_GUEST = 0x00000001 73SESS_NOENCRYPTION = 0x00000002 74 75# 2.2.2.4 Share Types 76STYPE_DISKTREE = 0x00000000 77STYPE_PRINTQ = 0x00000001 78STYPE_DEVICE = 0x00000002 79STYPE_IPC = 0x00000003 80STYPE_CLUSTER_FS = 0x02000000 81STYPE_CLUSTER_SOFS = 0x04000000 82STYPE_CLUSTER_DFS = 0x08000000 83 84STYPE_SPECIAL = 0x80000000 85STYPE_TEMPORARY = 0x40000000 86 87# 2.2.2.5 Client-Side Caching (CSC) States 88CSC_CACHE_MANUAL_REINT = 0x00 89CSC_CACHE_AUTO_REINT = 0x10 90CSC_CACHE_VDO = 0x20 91CSC_CACHE_NONE = 0x30 92 93# 2.2.2.6 Platform IDs 94PLATFORM_ID_DOS = 300 95PLATFORM_ID_OS2 = 400 96PLATFORM_ID_NT = 500 97PLATFORM_ID_OSF = 600 98PLATFORM_ID_VMS = 700 99 100# 2.2.2.7 Software Type Flags 101SV_TYPE_WORKSTATION = 0x00000001 102SV_TYPE_SERVER = 0x00000002 103SV_TYPE_SQLSERVER = 0x00000004 104SV_TYPE_DOMAIN_CTRL = 0x00000008 105SV_TYPE_DOMAIN_BAKCTRL = 0x00000010 106SV_TYPE_TIME_SOURCE = 0x00000020 107SV_TYPE_AFP = 0x00000040 108SV_TYPE_NOVELL = 0x00000080 109SV_TYPE_DOMAIN_MEMBER = 0x00000100 110SV_TYPE_LOCAL_LIST_ONLY = 0x40000000 111SV_TYPE_PRINTQ_SERVER = 0x00000200 112SV_TYPE_DIALIN_SERVER = 0x00000400 113SV_TYPE_XENIX_SERVER = 0x00000800 114SV_TYPE_SERVER_MFPN = 0x00004000 115SV_TYPE_NT = 0x00001000 116SV_TYPE_WFW = 0x00002000 117SV_TYPE_SERVER_NT = 0x00008000 118SV_TYPE_POTENTIAL_BROWSER = 0x00010000 119SV_TYPE_BACKUP_BROWSER = 0x00020000 120SV_TYPE_MASTER_BROWSER = 0x00040000 121SV_TYPE_DOMAIN_MASTER = 0x00080000 122SV_TYPE_DOMAIN_ENUM = 0x80000000 123SV_TYPE_WINDOWS = 0x00400000 124SV_TYPE_ALL = 0xFFFFFFFF 125SV_TYPE_TERMINALSERVER = 0x02000000 126SV_TYPE_CLUSTER_NT = 0x10000000 127SV_TYPE_CLUSTER_VS_NT = 0x04000000 128 129# 2.2.2.8 Name Types 130NAMETYPE_USER = 1 131NAMETYPE_PASSWORD = 2 132NAMETYPE_GROUP = 3 133NAMETYPE_COMPUTER = 4 134NAMETYPE_EVENT = 5 135NAMETYPE_DOMAIN = 6 136NAMETYPE_SERVICE = 7 137NAMETYPE_NET = 8 138NAMETYPE_SHARE = 9 139NAMETYPE_MESSAGE = 10 140NAMETYPE_MESSAGEDEST = 11 141NAMETYPE_SHAREPASSWORD = 12 142NAMETYPE_WORKGROUP = 13 143 144# 2.2.2.9 Path Types 145ITYPE_UNC_COMPNAME = 4144 146ITYPE_UNC_WC = 4145 147ITYPE_UNC = 4096 148ITYPE_UNC_WC_PATH = 4097 149ITYPE_UNC_SYS_SEM = 6400 150ITYPE_UNC_SYS_SHMEM = 6656 151ITYPE_UNC_SYS_MSLOT = 6144 152ITYPE_UNC_SYS_PIPE = 6912 153ITYPE_UNC_SYS_QUEUE = 7680 154ITYPE_PATH_ABSND = 8194 155ITYPE_PATH_ABSD = 8198 156ITYPE_PATH_RELND = 8192 157ITYPE_PATH_RELD = 8196 158ITYPE_PATH_ABSND_WC = 8195 159ITYPE_PATH_ABSD_WC = 8199 160ITYPE_PATH_RELND_WC = 8193 161ITYPE_PATH_RELD_WC = 8197 162ITYPE_PATH_SYS_SEM = 10498 163ITYPE_PATH_SYS_SHMEM = 10754 164ITYPE_PATH_SYS_MSLOT = 10242 165ITYPE_PATH_SYS_PIPE = 11010 166ITYPE_PATH_SYS_COMM = 11266 167ITYPE_PATH_SYS_PRINT = 11522 168ITYPE_PATH_SYS_QUEUE = 11778 169ITYPE_PATH_SYS_SEM_M = 43266 170ITYPE_PATH_SYS_SHMEM_M = 43522 171ITYPE_PATH_SYS_MSLOT_M = 43010 172ITYPE_PATH_SYS_PIPE_M = 43778 173ITYPE_PATH_SYS_COMM_M = 44034 174ITYPE_PATH_SYS_PRINT_M = 44290 175ITYPE_PATH_SYS_QUEUE_M = 44546 176ITYPE_DEVICE_DISK = 16384 177ITYPE_DEVICE_LPT = 16400 178ITYPE_DEVICE_COM = 16416 179ITYPE_DEVICE_CON = 16448 180ITYPE_DEVICE_NUL = 16464 181 182# 2.2.2.11 SHARE_INFO Parameter Error Codes 183 184SHARE_NETNAME_PARMNUM = 1 185SHARE_TYPE_PARMNUM = 3 186SHARE_REMARK_PARMNUM = 4 187SHARE_PERMISSIONS_PARMNUM = 5 188SHARE_MAX_USES_PARMNUM = 6 189SHARE_CURRENT_USES_PARMNUM = 7 190SHARE_PATH_PARMNUM = 8 191SHARE_PASSWD_PARMNUM = 9 192SHARE_FILE_SD_PARMNUM = 501 193 194# 2.2.2.12 SERVER_INFO Parameter Error Codes 195SV_PLATFORM_ID_PARMNUM = 101 196SV_NAME_PARMNUM = 102 197SV_VERSION_MAJOR_PARMNUM = 103 198SV_VERSION_MINOR_PARMNUM = 104 199SV_TYPE_PARMNUM = 105 200SV_COMMENT_PARMNUM = 5 201SV_USERS_PARMNUM = 107 202SV_DISC_PARMNUM = 10 203SV_HIDDEN_PARMNUM = 16 204SV_ANNOUNCE_PARMNUM = 17 205SV_ANNDELTA_PARMNUM = 18 206SV_USERPATH_PARMNUM = 112 207SV_SESSOPENS_PARMNUM = 501 208SV_SESSVCS_PARMNUM = 502 209SV_OPENSEARCH_PARMNUM = 503 210SV_SIZREQBUF_PARMNUM = 504 211SV_INITWORKITEMS_PARMNUM = 505 212SV_MAXWORKITEMS_PARMNUM = 506 213SV_RAWWORKITEMS_PARMNUM = 507 214SV_IRPSTACKSIZE_PARMNUM = 508 215SV_MAXRAWBUFLEN_PARMNUM = 509 216SV_SESSUSERS_PARMNUM = 510 217SV_SESSCONNS_PARMNUM = 511 218SV_MAXNONPAGEDMEMORYUSAGE_PARMNUM = 512 219SV_MAXPAGEDMEMORYUSAGE_PARMNUM = 513 220SV_ENABLESOFTCOMPAT_PARMNUM = 514 221SV_ENABLEFORCEDLOGOFF_PARMNUM = 515 222SV_TIMESOURCE_PARMNUM = 516 223SV_ACCEPTDOWNLEVELAPIS_PARMNUM = 517 224SV_LMANNOUNCE_PARMNUM = 518 225SV_DOMAIN_PARMNUM = 519 226SV_MAXCOPYREADLEN_PARMNUM = 520 227SV_MAXCOPYWRITELEN_PARMNUM = 521 228SV_MINKEEPSEARCH_PARMNUM = 522 229SV_MAXKEEPSEARCH_PARMNUM = 523 230SV_MINKEEPCOMPLSEARCH_PARMNUM = 524 231SV_MAXKEEPCOMPLSEARCH_PARMNUM = 525 232SV_THREADCOUNTADD_PARMNUM = 526 233SV_NUMBLOCKTHREADS_PARMNUM = 527 234SV_SCAVTIMEOUT_PARMNUM = 528 235SV_MINRCVQUEUE_PARMNUM = 529 236SV_MINFREEWORKITEMS_PARMNUM = 530 237SV_XACTMEMSIZE_PARMNUM = 531 238SV_THREADPRIORITY_PARMNUM = 532 239SV_MAXMPXCT_PARMNUM = 533 240SV_OPLOCKBREAKWAIT_PARMNUM = 534 241SV_OPLOCKBREAKRESPONSEWAIT_PARMNUM = 535 242SV_ENABLEOPLOCKS_PARMNUM = 536 243SV_ENABLEOPLOCKFORCECLOSE_PARMNUM = 537 244SV_ENABLEFCBOPENS_PARMNUM = 538 245SV_ENABLERAW_PARMNUM = 539 246SV_ENABLESHAREDNETDRIVES_PARMNUM = 540 247SV_MINFREECONNECTIONS_PARMNUM = 541 248SV_MAXFREECONNECTIONS_PARMNUM = 542 249SV_INITSESSTABLE_PARMNUM = 543 250SV_INITCONNTABLE_PARMNUM = 544 251SV_INITFILETABLE_PARMNUM = 545 252SV_INITSEARCHTABLE_PARMNUM = 546 253SV_ALERTSCHEDULE_PARMNUM = 547 254SV_ERRORTHRESHOLD_PARMNUM = 548 255SV_NETWORKERRORTHRESHOLD_PARMNUM = 549 256SV_DISKSPACETHRESHOLD_PARMNUM = 550 257SV_MAXLINKDELAY_PARMNUM = 552 258SV_MINLINKTHROUGHPUT_PARMNUM = 553 259SV_LINKINFOVALIDTIME_PARMNUM = 554 260SV_SCAVQOSINFOUPDATETIME_PARMNUM = 555 261SV_MAXWORKITEMIDLETIME_PARMNUM = 556 262 263# 2.2.2.13 DFS Entry Flags 264PKT_ENTRY_TYPE_CAIRO = 0x0001 265PKT_ENTRY_TYPE_MACHINE = 0x0002 266PKT_ENTRY_TYPE_NONCAIRO = 0x0004 267PKT_ENTRY_TYPE_LEAFONLY = 0x0008 268PKT_ENTRY_TYPE_OUTSIDE_MY_DOM = 0x0010 269PKT_ENTRY_TYPE_INSITE_ONLY = 0x0020 270PKT_ENTRY_TYPE_REFERRAL_SVC = 0x0080 271PKT_ENTRY_TYPE_PERMANENT = 0x0100 272PKT_ENTRY_TYPE_LOCAL = 0x0400 273PKT_ENTRY_TYPE_LOCAL_XPOINT = 0x0800 274PKT_ENTRY_TYPE_MACH_SHARE = 0x1000 275PKT_ENTRY_TYPE_OFFLINE = 0x2000 276 277# 2.2.4.7 FILE_INFO_3 278# fi3_permissions 279PERM_FILE_READ = 0x00000001 280PERM_FILE_WRITE = 0x00000002 281PERM_FILE_CREATE = 0x00000004 282ACCESS_EXEC = 0x00000008 283ACCESS_DELETE = 0x00000010 284ACCESS_ATRIB = 0x00000020 285ACCESS_PERM = 0x00000040 286 287# 2.2.4.29 SHARE_INFO_1005 288# shi1005_flags 289SHI1005_FLAGS_DFS = 0x00000001 290SHI1005_FLAGS_DFS_ROOT = 0x00000002 291CSC_MASK = 0x00000030 292SHI1005_FLAGS_RESTRICT_EXCLUSIVE_OPENS = 0x00000100 293SHI1005_FLAGS_FORCE_SHARED_DELETE = 0x00000200 294SHI1005_FLAGS_ALLOW_NAMESPACE_CACHING = 0x00000400 295SHI1005_FLAGS_ACCESS_BASED_DIRECTORY_ENUM = 0x00000800 296SHI1005_FLAGS_FORCE_LEVELII_OPLOCK = 0x00001000 297SHI1005_FLAGS_ENABLE_HASH = 0x00002000 298SHI1005_FLAGS_ENABLE_CA = 0x00004000 299SHI1005_FLAGS_ENCRYPT_DATA = 0x00008000 300 301# 2.2.4.43 SERVER_INFO_103 302# sv103_capabilities 303SRV_SUPPORT_HASH_GENERATION = 0x0001 304SRV_HASH_GENERATION_ACTIVE = 0x0002 305 306# 2.2.4.96 SERVER_TRANSPORT_INFO_3 307# svti3_flags 308SVTI2_REMAP_PIPE_NAMES = 0x00000002 309SVTI2_SCOPED_NAME = 0x00000004 310 311# 2.2.4.109 DFS_SITENAME_INFO 312# SiteFlags 313DFS_SITE_PRIMARY = 0x00000001 314 315# 3.1.4.42 NetrDfsFixLocalVolume (Opnum 51) 316# ServiceType 317DFS_SERVICE_TYPE_MASTER = 0x00000001 318DFS_SERVICE_TYPE_READONLY = 0x00000002 319DFS_SERVICE_TYPE_LOCAL = 0x00000004 320DFS_SERVICE_TYPE_REFERRAL = 0x00000008 321DFS_SERVICE_TYPE_ACTIVE = 0x000000010 322DFS_SERVICE_TYPE_DOWN_LEVEL = 0x000000020 323DFS_SERVICE_TYPE_COSTLIER = 0x000000040 324DFS_SERVICE_TYPE_OFFLINE = 0x000000080 325 326# CreateDisposition 327FILE_SUPERSEDE = 0x00000000 328FILE_OPEN = 0x00000001 329FILE_CREATE = 0x00000002 330 331################################################################################ 332# STRUCTURES 333################################################################################ 334# 2.2.4.1 CONNECTION_INFO_0 335class CONNECTION_INFO_0(NDRSTRUCT): 336 structure = ( 337 ('coni0_id', DWORD), 338 ) 339 340class CONNECTION_INFO_0_ARRAY(NDRUniConformantArray): 341 item = CONNECTION_INFO_0 342 343class LPCONNECTION_INFO_0_ARRAY(NDRPOINTER): 344 referent = ( 345 ('Data', CONNECTION_INFO_0_ARRAY), 346 ) 347 348# 2.2.4.2 CONNECTION_INFO_1 349class CONNECTION_INFO_1(NDRSTRUCT): 350 structure = ( 351 ('coni1_id', DWORD), 352 ('coni1_type', DWORD), 353 ('coni1_num_opens', DWORD), 354 ('coni1_num_users', DWORD), 355 ('coni1_time', DWORD), 356 ('coni1_username', LPWSTR), 357 ('coni1_netname', LPWSTR), 358 ) 359 360class CONNECTION_INFO_1_ARRAY(NDRUniConformantArray): 361 item = CONNECTION_INFO_1 362 363class LPCONNECTION_INFO_1_ARRAY(NDRPOINTER): 364 referent = ( 365 ('Data', CONNECTION_INFO_1_ARRAY), 366 ) 367 368# 2.2.4.3 CONNECT_INFO_0_CONTAINER 369class CONNECT_INFO_0_CONTAINER(NDRSTRUCT): 370 structure = ( 371 ('EntriesRead', DWORD), 372 ('Buffer', LPCONNECTION_INFO_0_ARRAY), 373 ) 374 375class LPCONNECT_INFO_0_CONTAINER(NDRPOINTER): 376 referent = ( 377 ('Data', CONNECT_INFO_0_CONTAINER), 378 ) 379 380# 2.2.4.4 CONNECT_INFO_1_CONTAINER 381class CONNECT_INFO_1_CONTAINER(NDRSTRUCT): 382 structure = ( 383 ('EntriesRead', DWORD), 384 ('Buffer', LPCONNECTION_INFO_1_ARRAY), 385 ) 386 387class LPCONNECT_INFO_1_CONTAINER(NDRPOINTER): 388 referent = ( 389 ('Data', CONNECT_INFO_1_CONTAINER), 390 ) 391 392# 2.2.3.1 CONNECT_ENUM_UNION 393class CONNECT_ENUM_UNION(NDRUNION): 394 commonHdr = ( 395 ('tag', DWORD), 396 ) 397 398 union = { 399 0: ('Level0', LPCONNECT_INFO_0_CONTAINER), 400 1: ('Level1', LPCONNECT_INFO_1_CONTAINER), 401 } 402 403# 2.2.4.5 CONNECT_ENUM_STRUCT 404class CONNECT_ENUM_STRUCT(NDRSTRUCT): 405 structure = ( 406 ('Level', DWORD), 407 ('ConnectInfo', CONNECT_ENUM_UNION), 408 ) 409 410# 2.2.4.6 FILE_INFO_2 411class FILE_INFO_2(NDRSTRUCT): 412 structure = ( 413 ('fi2_id', DWORD), 414 ) 415 416class LPFILE_INFO_2(NDRPOINTER): 417 referent = ( 418 ('Data', FILE_INFO_2), 419 ) 420 421class FILE_INFO_2_ARRAY(NDRUniConformantArray): 422 item = FILE_INFO_2 423 424class LPFILE_INFO_2_ARRAY(NDRPOINTER): 425 referent = ( 426 ('Data', FILE_INFO_2_ARRAY), 427 ) 428 429# 2.2.4.7 FILE_INFO_3 430class FILE_INFO_3(NDRSTRUCT): 431 structure = ( 432 ('fi3_id', DWORD), 433 ('fi3_permissions', DWORD), 434 ('fi3_num_locks', DWORD), 435 ('fi3_path_name', LPWSTR), 436 ('fi3_username', LPWSTR), 437 ) 438 439class LPFILE_INFO_3(NDRPOINTER): 440 referent = ( 441 ('Data', FILE_INFO_3), 442 ) 443 444class FILE_INFO_3_ARRAY(NDRUniConformantArray): 445 item = FILE_INFO_3 446 447class LPFILE_INFO_3_ARRAY(NDRPOINTER): 448 referent = ( 449 ('Data', FILE_INFO_3_ARRAY), 450 ) 451 452# 2.2.4.8 FILE_INFO_2_CONTAINER 453class FILE_INFO_2_CONTAINER(NDRSTRUCT): 454 structure = ( 455 ('EntriesRead', DWORD), 456 ('Buffer', LPFILE_INFO_2_ARRAY), 457 ) 458 459class LPFILE_INFO_2_CONTAINER(NDRPOINTER): 460 referent = ( 461 ('Data', FILE_INFO_2_CONTAINER), 462 ) 463 464# 2.2.4.9 FILE_INFO_3_CONTAINER 465class FILE_INFO_3_CONTAINER(NDRSTRUCT): 466 structure = ( 467 ('EntriesRead', DWORD), 468 ('Buffer', LPFILE_INFO_3_ARRAY), 469 ) 470 471class LPFILE_INFO_3_CONTAINER(NDRPOINTER): 472 referent = ( 473 ('Data', FILE_INFO_3_CONTAINER), 474 ) 475 476# 2.2.3.2 FILE_ENUM_UNION 477class FILE_ENUM_UNION(NDRUNION): 478 commonHdr = ( 479 ('tag', DWORD), 480 ) 481 482 union = { 483 2: ('Level2', LPFILE_INFO_2_CONTAINER), 484 3: ('Level3', LPFILE_INFO_3_CONTAINER), 485 } 486 487# 2.2.4.10 FILE_ENUM_STRUCT 488class FILE_ENUM_STRUCT(NDRSTRUCT): 489 structure = ( 490 ('Level', DWORD), 491 ('FileInfo', FILE_ENUM_UNION), 492 ) 493 494# 2.2.4.11 SESSION_INFO_0 495class SESSION_INFO_0(NDRSTRUCT): 496 structure = ( 497 ('sesi0_cname', LPWSTR), 498 ) 499 500class LPSESSION_INFO_0(NDRPOINTER): 501 referent = ( 502 ('Data', SESSION_INFO_0), 503 ) 504 505class SESSION_INFO_0_ARRAY(NDRUniConformantArray): 506 item = SESSION_INFO_0 507 508class LPSESSION_INFO_0_ARRAY(NDRPOINTER): 509 referent = ( 510 ('Data', SESSION_INFO_0_ARRAY), 511 ) 512 513# 2.2.4.12 SESSION_INFO_1 514class SESSION_INFO_1(NDRSTRUCT): 515 structure = ( 516 ('sesi1_cname', LPWSTR), 517 ('sesi1_username', LPWSTR), 518 ('sesi1_num_opens', DWORD), 519 ('sesi1_time', DWORD), 520 ('sesi1_idle_time', DWORD), 521 ('sesi1_user_flags', DWORD), 522 ) 523 524class LPSESSION_INFO_1(NDRPOINTER): 525 referent = ( 526 ('Data', SESSION_INFO_1), 527 ) 528 529class SESSION_INFO_1_ARRAY(NDRUniConformantArray): 530 item = SESSION_INFO_1 531 532class LPSESSION_INFO_1_ARRAY(NDRPOINTER): 533 referent = ( 534 ('Data', SESSION_INFO_1_ARRAY), 535 ) 536 537# 2.2.4.13 SESSION_INFO_2 538class SESSION_INFO_2(NDRSTRUCT): 539 structure = ( 540 ('sesi2_cname', LPWSTR), 541 ('sesi2_username', LPWSTR), 542 ('sesi2_num_opens', DWORD), 543 ('sesi2_time', DWORD), 544 ('sesi2_idle_time', DWORD), 545 ('sesi2_user_flags', DWORD), 546 ('sesi2_cltype_name', LPWSTR), 547 ) 548 549class LPSESSION_INFO_2(NDRPOINTER): 550 referent = ( 551 ('Data', SESSION_INFO_2), 552 ) 553 554class SESSION_INFO_2_ARRAY(NDRUniConformantArray): 555 item = SESSION_INFO_2 556 557class LPSESSION_INFO_2_ARRAY(NDRPOINTER): 558 referent = ( 559 ('Data', SESSION_INFO_2_ARRAY), 560 ) 561 562# 2.2.4.14 SESSION_INFO_10 563class SESSION_INFO_10(NDRSTRUCT): 564 structure = ( 565 ('sesi10_cname', LPWSTR), 566 ('sesi10_username', LPWSTR), 567 ('sesi10_time', DWORD), 568 ('sesi10_idle_time', DWORD), 569 ) 570 571class LPSESSION_INFO_10(NDRPOINTER): 572 referent = ( 573 ('Data', SESSION_INFO_10), 574 ) 575 576class SESSION_INFO_10_ARRAY(NDRUniConformantArray): 577 item = SESSION_INFO_10 578 579class LPSESSION_INFO_10_ARRAY(NDRPOINTER): 580 referent = ( 581 ('Data', SESSION_INFO_10_ARRAY), 582 ) 583 584# 2.2.4.15 SESSION_INFO_502 585class SESSION_INFO_502(NDRSTRUCT): 586 structure = ( 587 ('sesi502_cname', LPWSTR), 588 ('sesi502_username', LPWSTR), 589 ('sesi502_num_opens', DWORD), 590 ('sesi502_time', DWORD), 591 ('sesi502_idle_time', DWORD), 592 ('sesi502_user_flags', DWORD), 593 ('sesi502_cltype_name', LPWSTR), 594 ('sesi502_transport', LPWSTR), 595 ) 596 597class LPSESSION_INFO_502(NDRPOINTER): 598 referent = ( 599 ('Data', SESSION_INFO_502), 600 ) 601 602class SESSION_INFO_502_ARRAY(NDRUniConformantArray): 603 item = SESSION_INFO_502 604 605class LPSESSION_INFO_502_ARRAY(NDRPOINTER): 606 referent = ( 607 ('Data', SESSION_INFO_502_ARRAY), 608 ) 609 610# 2.2.4.16 SESSION_INFO_0_CONTAINER 611class SESSION_INFO_0_CONTAINER(NDRSTRUCT): 612 structure = ( 613 ('EntriesRead', DWORD), 614 ('Buffer', LPSESSION_INFO_0_ARRAY), 615 ) 616 617class LPSESSION_INFO_0_CONTAINER(NDRPOINTER): 618 referent = ( 619 ('Data', SESSION_INFO_0_CONTAINER), 620 ) 621 622# 2.2.4.17 SESSION_INFO_1_CONTAINER 623class SESSION_INFO_1_CONTAINER(NDRSTRUCT): 624 structure = ( 625 ('EntriesRead', DWORD), 626 ('Buffer', LPSESSION_INFO_1_ARRAY), 627 ) 628 629class LPSESSION_INFO_1_CONTAINER(NDRPOINTER): 630 referent = ( 631 ('Data', SESSION_INFO_1_CONTAINER), 632 ) 633 634# 2.2.4.18 SESSION_INFO_2_CONTAINER 635class SESSION_INFO_2_CONTAINER(NDRSTRUCT): 636 structure = ( 637 ('EntriesRead', DWORD), 638 ('Buffer', LPSESSION_INFO_2_ARRAY), 639 ) 640 641class LPSESSION_INFO_2_CONTAINER(NDRPOINTER): 642 referent = ( 643 ('Data', SESSION_INFO_2_CONTAINER), 644 ) 645 646# 2.2.4.19 SESSION_INFO_10_CONTAINER 647class SESSION_INFO_10_CONTAINER(NDRSTRUCT): 648 structure = ( 649 ('EntriesRead', DWORD), 650 ('Buffer', LPSESSION_INFO_10_ARRAY), 651 ) 652 653class LPSESSION_INFO_10_CONTAINER(NDRPOINTER): 654 referent = ( 655 ('Data', SESSION_INFO_10_CONTAINER), 656 ) 657 658# 2.2.4.20 SESSION_INFO_502_CONTAINER 659class SESSION_INFO_502_CONTAINER(NDRSTRUCT): 660 structure = ( 661 ('EntriesRead', DWORD), 662 ('Buffer', LPSESSION_INFO_502_ARRAY), 663 ) 664 665class LPSESSION_INFO_502_CONTAINER(NDRPOINTER): 666 referent = ( 667 ('Data', SESSION_INFO_502_CONTAINER), 668 ) 669 670# 2.2.3.4 SESSION_ENUM_UNION 671class SESSION_ENUM_UNION(NDRUNION): 672 commonHdr = ( 673 ('tag', DWORD), 674 ) 675 676 union = { 677 0: ('Level0', LPSESSION_INFO_0_CONTAINER), 678 1: ('Level1', LPSESSION_INFO_1_CONTAINER), 679 2: ('Level2', LPSESSION_INFO_2_CONTAINER), 680 10: ('Level10', LPSESSION_INFO_10_CONTAINER), 681 502: ('Level502', LPSESSION_INFO_502_CONTAINER), 682 } 683 684# 2.2.4.21 SESSION_ENUM_STRUCT 685class SESSION_ENUM_STRUCT(NDRSTRUCT): 686 structure = ( 687 ('Level', DWORD), 688 ('SessionInfo', SESSION_ENUM_UNION), 689 ) 690 691# 2.2.4.22 SHARE_INFO_0 692class SHARE_INFO_0(NDRSTRUCT): 693 structure = ( 694 ('shi0_netname', LPWSTR), 695 ) 696 697class LPSHARE_INFO_0(NDRPOINTER): 698 referent = ( 699 ('Data', SHARE_INFO_0), 700 ) 701 702class SHARE_INFO_0_ARRAY(NDRUniConformantArray): 703 item = SHARE_INFO_0 704 705class LPSHARE_INFO_0_ARRAY(NDRPOINTER): 706 referent = ( 707 ('Data', SHARE_INFO_0_ARRAY), 708 ) 709 710# 2.2.4.23 SHARE_INFO_1 711class SHARE_INFO_1(NDRSTRUCT): 712 structure = ( 713 ('shi1_netname', LPWSTR), 714 ('shi1_type', DWORD), 715 ('shi1_remark', LPWSTR), 716 ) 717 718class LPSHARE_INFO_1(NDRPOINTER): 719 referent = ( 720 ('Data', SHARE_INFO_1), 721 ) 722 723class SHARE_INFO_1_ARRAY(NDRUniConformantArray): 724 item = SHARE_INFO_1 725 726class LPSHARE_INFO_1_ARRAY(NDRPOINTER): 727 referent = ( 728 ('Data', SHARE_INFO_1_ARRAY), 729 ) 730 731# 2.2.4.24 SHARE_INFO_2 732class SHARE_INFO_2(NDRSTRUCT): 733 structure = ( 734 ('shi2_netname', LPWSTR), 735 ('shi2_type', DWORD), 736 ('shi2_remark', LPWSTR), 737 ('shi2_permissions', DWORD), 738 ('shi2_max_uses', DWORD), 739 ('shi2_current_uses', DWORD), 740 ('shi2_path', LPWSTR), 741 ('shi2_passwd', LPWSTR), 742 ) 743 744class LPSHARE_INFO_2(NDRPOINTER): 745 referent = ( 746 ('Data', SHARE_INFO_2), 747 ) 748 749class SHARE_INFO_2_ARRAY(NDRUniConformantArray): 750 item = SHARE_INFO_2 751 752class LPSHARE_INFO_2_ARRAY(NDRPOINTER): 753 referent = ( 754 ('Data', SHARE_INFO_2_ARRAY), 755 ) 756 757# 2.2.4.25 SHARE_INFO_501 758class SHARE_INFO_501(NDRSTRUCT): 759 structure = ( 760 ('shi501_netname', LPWSTR), 761 ('shi501_type', DWORD), 762 ('shi501_remark', LPWSTR), 763 ('shi501_flags', DWORD), 764 ) 765 766class LPSHARE_INFO_501(NDRPOINTER): 767 referent = ( 768 ('Data', SHARE_INFO_501), 769 ) 770 771class SHARE_INFO_501_ARRAY(NDRUniConformantArray): 772 item = SHARE_INFO_501 773 774class LPSHARE_INFO_501_ARRAY(NDRPOINTER): 775 referent = ( 776 ('Data', SHARE_INFO_501_ARRAY), 777 ) 778 779# 2.2.4.26 SHARE_INFO_502_I 780class SHARE_INFO_502(NDRSTRUCT): 781 structure = ( 782 ('shi502_netname', LPWSTR), 783 ('shi502_type', DWORD), 784 ('shi502_remark', LPWSTR), 785 ('shi502_permissions', DWORD), 786 ('shi502_max_uses', DWORD), 787 ('shi502_current_uses', DWORD), 788 ('shi502_path', LPWSTR), 789 ('shi502_passwd', LPWSTR), 790 ('shi502_reserved', DWORD), 791 ('shi502_security_descriptor', LPBYTE), 792 ) 793 794class LPSHARE_INFO_502(NDRPOINTER): 795 referent = ( 796 ('Data', SHARE_INFO_502), 797 ) 798 799class SHARE_INFO_502_ARRAY(NDRUniConformantArray): 800 item = SHARE_INFO_502 801 802class LPSHARE_INFO_502_ARRAY(NDRPOINTER): 803 referent = ( 804 ('Data', SHARE_INFO_502_ARRAY), 805 ) 806 807# 2.2.4.27 SHARE_INFO_503_I 808class SHARE_INFO_503(NDRSTRUCT): 809 structure = ( 810 ('shi503_netname', LPWSTR), 811 ('shi503_type', DWORD), 812 ('shi503_remark', LPWSTR), 813 ('shi503_permissions', DWORD), 814 ('shi503_max_uses', DWORD), 815 ('shi503_current_uses', DWORD), 816 ('shi503_path', LPWSTR), 817 ('shi503_passwd', LPWSTR), 818 ('shi503_servername', LPWSTR), 819 ('shi503_reserved', DWORD), 820 ('shi503_security_descriptor', LPBYTE), 821 ) 822 823class LPSHARE_INFO_503(NDRPOINTER): 824 referent = ( 825 ('Data', SHARE_INFO_503), 826 ) 827 828class SHARE_INFO_503_ARRAY(NDRUniConformantArray): 829 item = SHARE_INFO_503 830 831class LPSHARE_INFO_503_ARRAY(NDRPOINTER): 832 referent = ( 833 ('Data', SHARE_INFO_503_ARRAY), 834 ) 835 836# 2.2.4.28 SHARE_INFO_1004 837class SHARE_INFO_1004(NDRSTRUCT): 838 structure = ( 839 ('shi1004_remark', LPWSTR), 840 ) 841 842class LPSHARE_INFO_1004(NDRPOINTER): 843 referent = ( 844 ('Data', SHARE_INFO_1004), 845 ) 846 847class SHARE_INFO_1004_ARRAY(NDRUniConformantArray): 848 item = SHARE_INFO_1004 849 850class LPSHARE_INFO_1004_ARRAY(NDRPOINTER): 851 referent = ( 852 ('Data', SHARE_INFO_1004_ARRAY), 853 ) 854 855# 2.2.4.29 SHARE_INFO_1005 856class SHARE_INFO_1005(NDRSTRUCT): 857 structure = ( 858 ('shi1005_flags', DWORD), 859 ) 860 861class LPSHARE_INFO_1005(NDRPOINTER): 862 referent = ( 863 ('Data', SHARE_INFO_1005), 864 ) 865 866class SHARE_INFO_1005_ARRAY(NDRUniConformantArray): 867 item = SHARE_INFO_1004 868 869class LPSHARE_INFO_1005_ARRAY(NDRPOINTER): 870 referent = ( 871 ('Data', SHARE_INFO_1005_ARRAY), 872 ) 873 874# 2.2.4.30 SHARE_INFO_1006 875class SHARE_INFO_1006(NDRSTRUCT): 876 structure = ( 877 ('shi1006_max_uses', DWORD), 878 ) 879 880class LPSHARE_INFO_1006(NDRPOINTER): 881 referent = ( 882 ('Data', SHARE_INFO_1006), 883 ) 884 885class SHARE_INFO_1006_ARRAY(NDRUniConformantArray): 886 item = SHARE_INFO_1006 887 888class LPSHARE_INFO_1006_ARRAY(NDRPOINTER): 889 referent = ( 890 ('Data', SHARE_INFO_1006_ARRAY), 891 ) 892 893# 2.2.4.31 SHARE_INFO_1501_I 894class SHARE_INFO_1501(NDRSTRUCT): 895 structure = ( 896 ('shi1501_reserved', DWORD), 897 ('shi1501_security_descriptor', NDRUniConformantArray), 898 ) 899 900class LPSHARE_INFO_1501(NDRPOINTER): 901 referent = ( 902 ('Data', SHARE_INFO_1501), 903 ) 904 905class SHARE_INFO_1501_ARRAY(NDRUniConformantArray): 906 item = SHARE_INFO_1501 907 908class LPSHARE_INFO_1501_ARRAY(NDRPOINTER): 909 referent = ( 910 ('Data', SHARE_INFO_1501_ARRAY), 911 ) 912 913# 2.2.4.32 SHARE_INFO_0_CONTAINER 914class SHARE_INFO_0_CONTAINER(NDRSTRUCT): 915 structure = ( 916 ('EntriesRead', DWORD), 917 ('Buffer', LPSHARE_INFO_0_ARRAY), 918 ) 919 920class LPSHARE_INFO_0_CONTAINER(NDRPOINTER): 921 referent = ( 922 ('Data', SHARE_INFO_0_CONTAINER), 923 ) 924 925# 2.2.4.33 SHARE_INFO_1_CONTAINER 926class SHARE_INFO_1_CONTAINER(NDRSTRUCT): 927 structure = ( 928 ('EntriesRead', DWORD), 929 ('Buffer', LPSHARE_INFO_1_ARRAY), 930 ) 931 932class LPSHARE_INFO_1_CONTAINER(NDRPOINTER): 933 referent = ( 934 ('Data', SHARE_INFO_1_CONTAINER), 935 ) 936 937# 2.2.4.34 SHARE_INFO_2_CONTAINER 938class SHARE_INFO_2_CONTAINER(NDRSTRUCT): 939 structure = ( 940 ('EntriesRead', DWORD), 941 ('Buffer', LPSHARE_INFO_2_ARRAY), 942 ) 943 944class LPSHARE_INFO_2_CONTAINER(NDRPOINTER): 945 referent = ( 946 ('Data', SHARE_INFO_2_CONTAINER), 947 ) 948 949# 2.2.4.35 SHARE_INFO_501_CONTAINER 950class SHARE_INFO_501_CONTAINER(NDRSTRUCT): 951 structure = ( 952 ('EntriesRead', DWORD), 953 ('Buffer', LPSHARE_INFO_501_ARRAY), 954 ) 955 956class LPSHARE_INFO_501_CONTAINER(NDRPOINTER): 957 referent = ( 958 ('Data', SHARE_INFO_501_CONTAINER), 959 ) 960 961# 2.2.4.36 SHARE_INFO_502_CONTAINER 962class SHARE_INFO_502_CONTAINER(NDRSTRUCT): 963 structure = ( 964 ('EntriesRead', DWORD), 965 ('Buffer', LPSHARE_INFO_502_ARRAY), 966 ) 967 968class LPSHARE_INFO_502_CONTAINER(NDRPOINTER): 969 referent = ( 970 ('Data', SHARE_INFO_502_CONTAINER), 971 ) 972 973# 2.2.4.37 SHARE_INFO_503_CONTAINER 974class SHARE_INFO_503_CONTAINER(NDRSTRUCT): 975 structure = ( 976 ('EntriesRead', DWORD), 977 ('Buffer', LPSHARE_INFO_503_ARRAY), 978 ) 979 980class LPSHARE_INFO_503_CONTAINER(NDRPOINTER): 981 referent = ( 982 ('Data', SHARE_INFO_503_CONTAINER), 983 ) 984 985# 2.2.3.5 SHARE_ENUM_UNION 986class SHARE_ENUM_UNION(NDRUNION): 987 commonHdr = ( 988 ('tag', DWORD), 989 ) 990 991 union = { 992 0: ('Level0', LPSHARE_INFO_0_CONTAINER), 993 1: ('Level1', LPSHARE_INFO_1_CONTAINER), 994 2: ('Level2', LPSHARE_INFO_2_CONTAINER), 995 501: ('Level501', LPSHARE_INFO_501_CONTAINER), 996 502: ('Level502', LPSHARE_INFO_502_CONTAINER), 997 503: ('Level503', LPSHARE_INFO_503_CONTAINER), 998 } 999 1000# 2.2.4.38 SHARE_ENUM_STRUCT 1001class SHARE_ENUM_STRUCT(NDRSTRUCT): 1002 structure = ( 1003 ('Level', DWORD), 1004 ('ShareInfo', SHARE_ENUM_UNION), 1005 ) 1006 1007# 2.2.4.39 STAT_SERVER_0 1008class STAT_SERVER_0(NDRSTRUCT): 1009 structure = ( 1010 ('sts0_start', DWORD), 1011 ('sts0_fopens', DWORD), 1012 ('sts0_devopens', DWORD), 1013 ('sts0_jobsqueued', DWORD), 1014 ('sts0_sopens', DWORD), 1015 ('sts0_stimedout', DWORD), 1016 ('sts0_serrorout', DWORD), 1017 ('sts0_pwerrors', DWORD), 1018 ('sts0_permerrors', DWORD), 1019 ('sts0_syserrors', DWORD), 1020 ('sts0_bytessent_low', DWORD), 1021 ('sts0_bytessent_high', DWORD), 1022 ('sts0_bytesrcvd_low', DWORD), 1023 ('sts0_bytesrcvd_high', DWORD), 1024 ('sts0_avresponse', DWORD), 1025 ('sts0_reqbufneed', DWORD), 1026 ('sts0_bigbufneed', DWORD), 1027 ) 1028 1029class LPSTAT_SERVER_0(NDRPOINTER): 1030 referent = ( 1031 ('Data', STAT_SERVER_0), 1032 ) 1033 1034# 2.2.4.40 SERVER_INFO_100 1035class SERVER_INFO_100(NDRSTRUCT): 1036 structure = ( 1037 ('sv100_platform_id', DWORD), 1038 ('sv100_name', LPWSTR), 1039 ) 1040 1041class LPSERVER_INFO_100(NDRPOINTER): 1042 referent = ( 1043 ('Data', SERVER_INFO_100), 1044 ) 1045 1046# 2.2.4.41 SERVER_INFO_101 1047class SERVER_INFO_101(NDRSTRUCT): 1048 structure = ( 1049 ('sv101_platform_id', DWORD), 1050 ('sv101_name', LPWSTR), 1051 ('sv101_version_major', DWORD), 1052 ('sv101_version_minor', DWORD), 1053 ('sv101_type', DWORD), 1054 ('sv101_comment', LPWSTR), 1055 ) 1056 1057class LPSERVER_INFO_101(NDRPOINTER): 1058 referent = ( 1059 ('Data', SERVER_INFO_101), 1060 ) 1061 1062# 2.2.4.42 SERVER_INFO_102 1063class SERVER_INFO_102(NDRSTRUCT): 1064 structure = ( 1065 ('sv102_platform_id', DWORD), 1066 ('sv102_name', LPWSTR), 1067 ('sv102_version_major', DWORD), 1068 ('sv102_version_minor', DWORD), 1069 ('sv102_type', DWORD), 1070 ('sv102_comment', LPWSTR), 1071 ('sv102_users', DWORD), 1072 ('sv102_disc', DWORD), 1073 ('sv102_hidden', DWORD), 1074 ('sv102_announce', DWORD), 1075 ('sv102_anndelta', DWORD), 1076 ('sv102_licenses', DWORD), 1077 ('sv102_userpath', LPWSTR), 1078 ) 1079 1080class LPSERVER_INFO_102(NDRPOINTER): 1081 referent = ( 1082 ('Data', SERVER_INFO_102), 1083 ) 1084 1085# 2.2.4.43 SERVER_INFO_103 1086class SERVER_INFO_103(NDRSTRUCT): 1087 structure = ( 1088 ('sv103_platform_id', DWORD), 1089 ('sv103_name', LPWSTR), 1090 ('sv103_version_major', DWORD), 1091 ('sv103_version_minor', DWORD), 1092 ('sv103_type', DWORD), 1093 ('sv103_comment', LPWSTR), 1094 ('sv103_users', DWORD), 1095 ('sv103_disc', DWORD), 1096 ('sv103_hidden', DWORD), 1097 ('sv103_announce', DWORD), 1098 ('sv103_anndelta', DWORD), 1099 ('sv103_licenses', DWORD), 1100 ('sv103_userpath', LPWSTR), 1101 ('sv103_capabilities', DWORD), 1102 ) 1103 1104class LPSERVER_INFO_103(NDRPOINTER): 1105 referent = ( 1106 ('Data', SERVER_INFO_103), 1107 ) 1108 1109# 2.2.4.44 SERVER_INFO_502 1110class SERVER_INFO_502(NDRSTRUCT): 1111 structure = ( 1112 ('sv502_sessopens', DWORD), 1113 ('sv502_sessvcs', DWORD), 1114 ('sv502_opensearch', DWORD), 1115 ('sv502_sizreqbuf', DWORD), 1116 ('sv502_initworkitems', DWORD), 1117 ('sv502_maxworkitems', DWORD), 1118 ('sv502_rawworkitems', DWORD), 1119 ('sv502_irpstacksize', DWORD), 1120 ('sv502_maxrawbuflen', DWORD), 1121 ('sv502_sessusers', DWORD), 1122 ('sv502_sessconns', DWORD), 1123 ('sv502_maxpagedmemoryusage', DWORD), 1124 ('sv502_maxnonpagedmemoryusage', DWORD), 1125 ('sv502_enablesoftcompat', DWORD), 1126 ('sv502_enableforcedlogoff', DWORD), 1127 ('sv502_timesource', DWORD), 1128 ('sv502_acceptdownlevelapis', DWORD), 1129 ('sv502_lmannounce', DWORD), 1130 ) 1131 1132class LPSERVER_INFO_502(NDRPOINTER): 1133 referent = ( 1134 ('Data', SERVER_INFO_502), 1135 ) 1136 1137# 2.2.4.45 SERVER_INFO_503 1138class SERVER_INFO_503(NDRSTRUCT): 1139 structure = ( 1140 ('sv503_sessopens', DWORD), 1141 ('sv503_sessvcs', DWORD), 1142 ('sv503_opensearch', DWORD), 1143 ('sv503_sizreqbuf', DWORD), 1144 ('sv503_initworkitems', DWORD), 1145 ('sv503_maxworkitems', DWORD), 1146 ('sv503_rawworkitems', DWORD), 1147 ('sv503_irpstacksize', DWORD), 1148 ('sv503_maxrawbuflen', DWORD), 1149 ('sv503_sessusers', DWORD), 1150 ('sv503_sessconns', DWORD), 1151 ('sv503_maxpagedmemoryusage', DWORD), 1152 ('sv503_maxnonpagedmemoryusage', DWORD), 1153 ('sv503_enablesoftcompat', DWORD), 1154 ('sv503_enableforcedlogoff', DWORD), 1155 ('sv503_timesource', DWORD), 1156 ('sv503_acceptdownlevelapis', DWORD), 1157 ('sv503_lmannounce', DWORD), 1158 ('sv503_domain', LPWSTR), 1159 ('sv503_maxcopyreadlen', DWORD), 1160 ('sv503_maxcopywritelen', DWORD), 1161 ('sv503_minkeepsearch', DWORD), 1162 ('sv503_maxkeepsearch', DWORD), 1163 ('sv503_minkeepcomplsearch', DWORD), 1164 ('sv503_maxkeepcomplsearch', DWORD), 1165 ('sv503_threadcountadd', DWORD), 1166 ('sv503_numblockthreads', DWORD), 1167 ('sv503_scavtimeout', DWORD), 1168 ('sv503_minrcvqueue', DWORD), 1169 ('sv503_minfreeworkitems', DWORD), 1170 ('sv503_xactmemsize', DWORD), 1171 ('sv503_threadpriority', DWORD), 1172 ('sv503_maxmpxct', DWORD), 1173 ('sv503_oplockbreakwait', DWORD), 1174 ('sv503_oplockbreakresponsewait', DWORD), 1175 ('sv503_enableoplocks', DWORD), 1176 ('sv503_enableoplockforceclose', DWORD), 1177 ('sv503_enablefcbopens', DWORD), 1178 ('sv503_enableraw', DWORD), 1179 ('sv503_enablesharednetdrives', DWORD), 1180 ('sv503_minfreeconnections', DWORD), 1181 ('sv503_maxfreeconnections', DWORD), 1182 ) 1183 1184class LPSERVER_INFO_503(NDRPOINTER): 1185 referent = ( 1186 ('Data', SERVER_INFO_503), 1187 ) 1188 1189# 2.2.4.46 SERVER_INFO_599 1190class SERVER_INFO_599(NDRSTRUCT): 1191 structure = ( 1192 ('sv599_sessopens', DWORD), 1193 ('sv599_sessvcs', DWORD), 1194 ('sv599_opensearch', DWORD), 1195 ('sv599_sizreqbuf', DWORD), 1196 ('sv599_initworkitems', DWORD), 1197 ('sv599_maxworkitems', DWORD), 1198 ('sv599_rawworkitems', DWORD), 1199 ('sv599_irpstacksize', DWORD), 1200 ('sv599_maxrawbuflen', DWORD), 1201 ('sv599_sessusers', DWORD), 1202 ('sv599_sessconns', DWORD), 1203 ('sv599_maxpagedmemoryusage', DWORD), 1204 ('sv599_maxnonpagedmemoryusage', DWORD), 1205 ('sv599_enablesoftcompat', DWORD), 1206 ('sv599_enableforcedlogoff', DWORD), 1207 ('sv599_timesource', DWORD), 1208 ('sv599_acceptdownlevelapis', DWORD), 1209 ('sv599_lmannounce', DWORD), 1210 ('sv599_domain', LPWSTR), 1211 ('sv599_maxcopyreadlen', DWORD), 1212 ('sv599_maxcopywritelen', DWORD), 1213 ('sv599_minkeepsearch', DWORD), 1214 ('sv599_maxkeepsearch', DWORD), 1215 ('sv599_minkeepcomplsearch', DWORD), 1216 ('sv599_maxkeepcomplsearch', DWORD), 1217 ('sv599_threadcountadd', DWORD), 1218 ('sv599_numblockthreads', DWORD), 1219 ('sv599_scavtimeout', DWORD), 1220 ('sv599_minrcvqueue', DWORD), 1221 ('sv599_minfreeworkitems', DWORD), 1222 ('sv599_xactmemsize', DWORD), 1223 ('sv599_threadpriority', DWORD), 1224 ('sv599_maxmpxct', DWORD), 1225 ('sv599_oplockbreakwait', DWORD), 1226 ('sv599_oplockbreakresponsewait', DWORD), 1227 ('sv599_enableoplocks', DWORD), 1228 ('sv599_enableoplockforceclose', DWORD), 1229 ('sv599_enablefcbopens', DWORD), 1230 ('sv599_enableraw', DWORD), 1231 ('sv599_enablesharednetdrives', DWORD), 1232 ('sv599_minfreeconnections', DWORD), 1233 ('sv599_maxfreeconnections', DWORD), 1234 ('sv599_initsesstable', DWORD), 1235 ('sv599_initconntable', DWORD), 1236 ('sv599_initfiletable', DWORD), 1237 ('sv599_initsearchtable', DWORD), 1238 ('sv599_alertschedule', DWORD), 1239 ('sv599_errorthreshold', DWORD), 1240 ('sv599_networkerrorthreshold', DWORD), 1241 ('sv599_diskspacethreshold', DWORD), 1242 ('sv599_reserved', DWORD), 1243 ('sv599_maxlinkdelay', DWORD), 1244 ('sv599_minlinkthroughput', DWORD), 1245 ('sv599_linkinfovalidtime', DWORD), 1246 ('sv599_scavqosinfoupdatetime', DWORD), 1247 ('sv599_maxworkitemidletime', DWORD), 1248 ) 1249 1250class LPSERVER_INFO_599(NDRPOINTER): 1251 referent = ( 1252 ('Data', SERVER_INFO_599), 1253 ) 1254 1255# 2.2.4.47 SERVER_INFO_1005 1256class SERVER_INFO_1005(NDRSTRUCT): 1257 structure = ( 1258 ('sv1005_comment', LPWSTR), 1259 ) 1260 1261class LPSERVER_INFO_1005(NDRPOINTER): 1262 referent = ( 1263 ('Data', SERVER_INFO_1005), 1264 ) 1265 1266# 2.2.4.48 SERVER_INFO_1107 1267class SERVER_INFO_1107(NDRSTRUCT): 1268 structure = ( 1269 ('sv1107_users', DWORD), 1270 ) 1271 1272class LPSERVER_INFO_1107(NDRPOINTER): 1273 referent = ( 1274 ('Data', SERVER_INFO_1107), 1275 ) 1276 1277# 2.2.4.49 SERVER_INFO_1010 1278class SERVER_INFO_1010(NDRSTRUCT): 1279 structure = ( 1280 ('sv1010_disc', DWORD), 1281 ) 1282 1283class LPSERVER_INFO_1010(NDRPOINTER): 1284 referent = ( 1285 ('Data', SERVER_INFO_1010), 1286 ) 1287 1288# 2.2.4.50 SERVER_INFO_1016 1289class SERVER_INFO_1016(NDRSTRUCT): 1290 structure = ( 1291 ('sv1016_hidden', DWORD), 1292 ) 1293 1294class LPSERVER_INFO_1016(NDRPOINTER): 1295 referent = ( 1296 ('Data', SERVER_INFO_1016), 1297 ) 1298 1299# 2.2.4.51 SERVER_INFO_1017 1300class SERVER_INFO_1017(NDRSTRUCT): 1301 structure = ( 1302 ('sv1017_announce', DWORD), 1303 ) 1304 1305class LPSERVER_INFO_1017(NDRPOINTER): 1306 referent = ( 1307 ('Data', SERVER_INFO_1017), 1308 ) 1309 1310# 2.2.4.52 SERVER_INFO_1018 1311class SERVER_INFO_1018(NDRSTRUCT): 1312 structure = ( 1313 ('sv1018_anndelta', DWORD), 1314 ) 1315 1316class LPSERVER_INFO_1018(NDRPOINTER): 1317 referent = ( 1318 ('Data', SERVER_INFO_1018), 1319 ) 1320 1321# 2.2.4.53 SERVER_INFO_1501 1322class SERVER_INFO_1501(NDRSTRUCT): 1323 structure = ( 1324 ('sv1501_sessopens', DWORD), 1325 ) 1326 1327class LPSERVER_INFO_1501(NDRPOINTER): 1328 referent = ( 1329 ('Data', SERVER_INFO_1501), 1330 ) 1331 1332# 2.2.4.54 SERVER_INFO_1502 1333class SERVER_INFO_1502(NDRSTRUCT): 1334 structure = ( 1335 ('sv1502_sessvcs', DWORD), 1336 ) 1337 1338class LPSERVER_INFO_1502(NDRPOINTER): 1339 referent = ( 1340 ('Data', SERVER_INFO_1502), 1341 ) 1342 1343# 2.2.4.55 SERVER_INFO_1503 1344class SERVER_INFO_1503(NDRSTRUCT): 1345 structure = ( 1346 ('sv1503_opensearch', DWORD), 1347 ) 1348 1349class LPSERVER_INFO_1503(NDRPOINTER): 1350 referent = ( 1351 ('Data', SERVER_INFO_1503), 1352 ) 1353 1354# 2.2.4.56 SERVER_INFO_1506 1355class SERVER_INFO_1506(NDRSTRUCT): 1356 structure = ( 1357 ('sv1506_maxworkitems', DWORD), 1358 ) 1359 1360class LPSERVER_INFO_1506(NDRPOINTER): 1361 referent = ( 1362 ('Data', SERVER_INFO_1506), 1363 ) 1364 1365# 2.2.4.57 SERVER_INFO_1510 1366class SERVER_INFO_1510(NDRSTRUCT): 1367 structure = ( 1368 ('sv1510_sessusers', DWORD), 1369 ) 1370 1371class LPSERVER_INFO_1510(NDRPOINTER): 1372 referent = ( 1373 ('Data', SERVER_INFO_1510), 1374 ) 1375 1376# 2.2.4.58 SERVER_INFO_1511 1377class SERVER_INFO_1511(NDRSTRUCT): 1378 structure = ( 1379 ('sv1511_sessconns', DWORD), 1380 ) 1381 1382class LPSERVER_INFO_1511(NDRPOINTER): 1383 referent = ( 1384 ('Data', SERVER_INFO_1511), 1385 ) 1386 1387# 2.2.4.59 SERVER_INFO_1512 1388class SERVER_INFO_1512(NDRSTRUCT): 1389 structure = ( 1390 ('sv1512_maxnonpagedmemoryusage', DWORD), 1391 ) 1392 1393class LPSERVER_INFO_1512(NDRPOINTER): 1394 referent = ( 1395 ('Data', SERVER_INFO_1512), 1396 ) 1397 1398# 2.2.4.60 SERVER_INFO_1513 1399class SERVER_INFO_1513(NDRSTRUCT): 1400 structure = ( 1401 ('sv1513_maxpagedmemoryusage', DWORD), 1402 ) 1403 1404class LPSERVER_INFO_1513(NDRPOINTER): 1405 referent = ( 1406 ('Data', SERVER_INFO_1513), 1407 ) 1408 1409# 2.2.4.61 SERVER_INFO_1514 1410class SERVER_INFO_1514(NDRSTRUCT): 1411 structure = ( 1412 ('sv1514_enablesoftcompat', DWORD), 1413 ) 1414 1415class LPSERVER_INFO_1514(NDRPOINTER): 1416 referent = ( 1417 ('Data', SERVER_INFO_1514), 1418 ) 1419 1420# 2.2.4.62 SERVER_INFO_1515 1421class SERVER_INFO_1515(NDRSTRUCT): 1422 structure = ( 1423 ('sv1515_enableforcedlogoff', DWORD), 1424 ) 1425 1426class LPSERVER_INFO_1515(NDRPOINTER): 1427 referent = ( 1428 ('Data', SERVER_INFO_1515), 1429 ) 1430 1431# 2.2.4.63 SERVER_INFO_1516 1432class SERVER_INFO_1516(NDRSTRUCT): 1433 structure = ( 1434 ('sv1516_timesource', DWORD), 1435 ) 1436 1437class LPSERVER_INFO_1516(NDRPOINTER): 1438 referent = ( 1439 ('Data', SERVER_INFO_1516), 1440 ) 1441 1442# 2.2.4.64 SERVER_INFO_1518 1443class SERVER_INFO_1518(NDRSTRUCT): 1444 structure = ( 1445 ('sv1518_lmannounce', DWORD), 1446 ) 1447 1448class LPSERVER_INFO_1518(NDRPOINTER): 1449 referent = ( 1450 ('Data', SERVER_INFO_1518), 1451 ) 1452 1453# 2.2.4.65 SERVER_INFO_1523 1454class SERVER_INFO_1523(NDRSTRUCT): 1455 structure = ( 1456 ('sv1523_maxkeepsearch', DWORD), 1457 ) 1458 1459class LPSERVER_INFO_1523(NDRPOINTER): 1460 referent = ( 1461 ('Data', SERVER_INFO_1523), 1462 ) 1463 1464# 2.2.4.66 SERVER_INFO_1528 1465class SERVER_INFO_1528(NDRSTRUCT): 1466 structure = ( 1467 ('sv1528_scavtimeout', DWORD), 1468 ) 1469 1470class LPSERVER_INFO_1528(NDRPOINTER): 1471 referent = ( 1472 ('Data', SERVER_INFO_1528), 1473 ) 1474 1475# 2.2.4.67 SERVER_INFO_1529 1476class SERVER_INFO_1529(NDRSTRUCT): 1477 structure = ( 1478 ('sv1529_minrcvqueue', DWORD), 1479 ) 1480 1481class LPSERVER_INFO_1529(NDRPOINTER): 1482 referent = ( 1483 ('Data', SERVER_INFO_1529), 1484 ) 1485 1486# 2.2.4.68 SERVER_INFO_1530 1487class SERVER_INFO_1530(NDRSTRUCT): 1488 structure = ( 1489 ('sv1530_minfreeworkitems', DWORD), 1490 ) 1491 1492class LPSERVER_INFO_1530(NDRPOINTER): 1493 referent = ( 1494 ('Data', SERVER_INFO_1530), 1495 ) 1496 1497# 2.2.4.69 SERVER_INFO_1533 1498class SERVER_INFO_1533(NDRSTRUCT): 1499 structure = ( 1500 ('sv1533_maxmpxct', DWORD), 1501 ) 1502 1503class LPSERVER_INFO_1533(NDRPOINTER): 1504 referent = ( 1505 ('Data', SERVER_INFO_1533), 1506 ) 1507 1508# 2.2.4.70 SERVER_INFO_1534 1509class SERVER_INFO_1534(NDRSTRUCT): 1510 structure = ( 1511 ('sv1534_oplockbreakwait', DWORD), 1512 ) 1513 1514class LPSERVER_INFO_1534(NDRPOINTER): 1515 referent = ( 1516 ('Data', SERVER_INFO_1534), 1517 ) 1518 1519# 2.2.4.71 SERVER_INFO_1535 1520class SERVER_INFO_1535(NDRSTRUCT): 1521 structure = ( 1522 ('sv1535_oplockbreakresponsewait', DWORD), 1523 ) 1524 1525class LPSERVER_INFO_1535(NDRPOINTER): 1526 referent = ( 1527 ('Data', SERVER_INFO_1535), 1528 ) 1529 1530# 2.2.4.72 SERVER_INFO_1536 1531class SERVER_INFO_1536(NDRSTRUCT): 1532 structure = ( 1533 ('sv1536_enableoplocks', DWORD), 1534 ) 1535 1536class LPSERVER_INFO_1536(NDRPOINTER): 1537 referent = ( 1538 ('Data', SERVER_INFO_1536), 1539 ) 1540 1541# 2.2.4.73 SERVER_INFO_1538 1542class SERVER_INFO_1538(NDRSTRUCT): 1543 structure = ( 1544 ('sv1538_enablefcbopens', DWORD), 1545 ) 1546 1547class LPSERVER_INFO_1538(NDRPOINTER): 1548 referent = ( 1549 ('Data', SERVER_INFO_1538), 1550 ) 1551 1552# 2.2.4.74 SERVER_INFO_1539 1553class SERVER_INFO_1539(NDRSTRUCT): 1554 structure = ( 1555 ('sv1539_enableraw', DWORD), 1556 ) 1557 1558class LPSERVER_INFO_1539(NDRPOINTER): 1559 referent = ( 1560 ('Data', SERVER_INFO_1539), 1561 ) 1562 1563# 2.2.4.75 SERVER_INFO_1540 1564class SERVER_INFO_1540(NDRSTRUCT): 1565 structure = ( 1566 ('sv1540_enablesharednetdrives', DWORD), 1567 ) 1568 1569class LPSERVER_INFO_1540(NDRPOINTER): 1570 referent = ( 1571 ('Data', SERVER_INFO_1540), 1572 ) 1573 1574# 2.2.4.76 SERVER_INFO_1541 1575class SERVER_INFO_1541(NDRSTRUCT): 1576 structure = ( 1577 ('sv1541_minfreeconnections', DWORD), 1578 ) 1579 1580class LPSERVER_INFO_1541(NDRPOINTER): 1581 referent = ( 1582 ('Data', SERVER_INFO_1541), 1583 ) 1584 1585# 2.2.4.77 SERVER_INFO_1542 1586class SERVER_INFO_1542(NDRSTRUCT): 1587 structure = ( 1588 ('sv1542_maxfreeconnections', DWORD), 1589 ) 1590 1591class LPSERVER_INFO_1542(NDRPOINTER): 1592 referent = ( 1593 ('Data', SERVER_INFO_1542), 1594 ) 1595 1596# 2.2.4.78 SERVER_INFO_1543 1597class SERVER_INFO_1543(NDRSTRUCT): 1598 structure = ( 1599 ('sv1543_initsesstable', DWORD), 1600 ) 1601 1602class LPSERVER_INFO_1543(NDRPOINTER): 1603 referent = ( 1604 ('Data', SERVER_INFO_1543), 1605 ) 1606 1607# 2.2.4.79 SERVER_INFO_1544 1608class SERVER_INFO_1544(NDRSTRUCT): 1609 structure = ( 1610 ('sv1544_initconntable', DWORD), 1611 ) 1612 1613class LPSERVER_INFO_1544(NDRPOINTER): 1614 referent = ( 1615 ('Data', SERVER_INFO_1544), 1616 ) 1617 1618# 2.2.4.80 SERVER_INFO_1545 1619class SERVER_INFO_1545(NDRSTRUCT): 1620 structure = ( 1621 ('sv1545_initfiletable', DWORD), 1622 ) 1623 1624class LPSERVER_INFO_1545(NDRPOINTER): 1625 referent = ( 1626 ('Data', SERVER_INFO_1545), 1627 ) 1628 1629# 2.2.4.81 SERVER_INFO_1546 1630class SERVER_INFO_1546(NDRSTRUCT): 1631 structure = ( 1632 ('sv1546_initsearchtable', DWORD), 1633 ) 1634 1635class LPSERVER_INFO_1546(NDRPOINTER): 1636 referent = ( 1637 ('Data', SERVER_INFO_1546), 1638 ) 1639 1640# 2.2.4.82 SERVER_INFO_1547 1641class SERVER_INFO_1547(NDRSTRUCT): 1642 structure = ( 1643 ('sv1547_alertschedule', DWORD), 1644 ) 1645 1646class LPSERVER_INFO_1547(NDRPOINTER): 1647 referent = ( 1648 ('Data', SERVER_INFO_1547), 1649 ) 1650 1651# 2.2.4.83 SERVER_INFO_1548 1652class SERVER_INFO_1548(NDRSTRUCT): 1653 structure = ( 1654 ('sv1548_errorthreshold', DWORD), 1655 ) 1656 1657class LPSERVER_INFO_1548(NDRPOINTER): 1658 referent = ( 1659 ('Data', SERVER_INFO_1548), 1660 ) 1661 1662# 2.2.4.84 SERVER_INFO_1549 1663class SERVER_INFO_1549(NDRSTRUCT): 1664 structure = ( 1665 ('sv1549_networkerrorthreshold', DWORD), 1666 ) 1667 1668class LPSERVER_INFO_1549(NDRPOINTER): 1669 referent = ( 1670 ('Data', SERVER_INFO_1549), 1671 ) 1672 1673# 2.2.4.85 SERVER_INFO_1550 1674class SERVER_INFO_1550(NDRSTRUCT): 1675 structure = ( 1676 ('sv1550_diskspacethreshold', DWORD), 1677 ) 1678 1679class LPSERVER_INFO_1550(NDRPOINTER): 1680 referent = ( 1681 ('Data', SERVER_INFO_1550), 1682 ) 1683 1684# 2.2.4.86 SERVER_INFO_1552 1685class SERVER_INFO_1552(NDRSTRUCT): 1686 structure = ( 1687 ('sv1552_maxlinkdelay', DWORD), 1688 ) 1689 1690class LPSERVER_INFO_1552(NDRPOINTER): 1691 referent = ( 1692 ('Data', SERVER_INFO_1552), 1693 ) 1694 1695# 2.2.4.87 SERVER_INFO_1553 1696class SERVER_INFO_1553(NDRSTRUCT): 1697 structure = ( 1698 ('sv1553_minlinkthroughput', DWORD), 1699 ) 1700 1701class LPSERVER_INFO_1553(NDRPOINTER): 1702 referent = ( 1703 ('Data', SERVER_INFO_1553), 1704 ) 1705 1706# 2.2.4.88 SERVER_INFO_1554 1707class SERVER_INFO_1554(NDRSTRUCT): 1708 structure = ( 1709 ('sv1554_linkinfovalidtime', DWORD), 1710 ) 1711 1712class LPSERVER_INFO_1554(NDRPOINTER): 1713 referent = ( 1714 ('Data', SERVER_INFO_1554), 1715 ) 1716 1717# 2.2.4.89 SERVER_INFO_1555 1718class SERVER_INFO_1555(NDRSTRUCT): 1719 structure = ( 1720 ('sv1555_scavqosinfoupdatetime', DWORD), 1721 ) 1722 1723class LPSERVER_INFO_1555(NDRPOINTER): 1724 referent = ( 1725 ('Data', SERVER_INFO_1555), 1726 ) 1727 1728# 2.2.4.90 SERVER_INFO_1556 1729class SERVER_INFO_1556(NDRSTRUCT): 1730 structure = ( 1731 ('sv1556_maxworkitemidletime', DWORD), 1732 ) 1733 1734class LPSERVER_INFO_1556(NDRPOINTER): 1735 referent = ( 1736 ('Data', SERVER_INFO_1556), 1737 ) 1738 1739# 2.2.4.91 DISK_INFO 1740class WCHAR_ARRAY(NDRSTRUCT): 1741 commonHdr = ( 1742 ('Offset','<L=0'), 1743 ('ActualCount','<L=len(Data)/2'), 1744 ) 1745 commonHdr64 = ( 1746 ('Offset','<Q=0'), 1747 ('ActualCount','<Q=len(Data)/2'), 1748 ) 1749 structure = ( 1750 ('Data',':'), 1751 ) 1752 1753 def dump(self, msg = None, indent = 0): 1754 if msg is None: msg = self.__class__.__name__ 1755 if msg != '': 1756 print "%s" % msg, 1757 # Here just print the data 1758 print " %r" % (self['Data']), 1759 1760 def __setitem__(self, key, value): 1761 if key == 'Data': 1762 try: 1763 self.fields[key] = value.encode('utf-16le') 1764 except UnicodeDecodeError: 1765 import sys 1766 self.fields[key] = value.decode(sys.getfilesystemencoding()).encode('utf-16le') 1767 self.fields['ActualCount'] = None 1768 self.data = None # force recompute 1769 else: 1770 return NDR.__setitem__(self, key, value) 1771 1772 def __getitem__(self, key): 1773 if key == 'Data': 1774 return self.fields[key].decode('utf-16le') 1775 else: 1776 return NDR.__getitem__(self,key) 1777 1778 def getDataLen(self, data): 1779 return self["ActualCount"]*2 1780 1781 1782class DISK_INFO(NDRSTRUCT): 1783 structure = ( 1784 ('Disk', WCHAR_ARRAY), 1785 ) 1786 1787class LPDISK_INFO(NDRPOINTER): 1788 referent = ( 1789 ('Data', DISK_INFO), 1790 ) 1791 1792class DISK_INFO_ARRAY(NDRUniConformantVaryingArray): 1793 item = DISK_INFO 1794 1795class LPDISK_INFO_ARRAY(NDRPOINTER): 1796 referent = ( 1797 ('Data', DISK_INFO_ARRAY), 1798 ) 1799 1800# 2.2.4.92 DISK_ENUM_CONTAINER 1801class DISK_ENUM_CONTAINER(NDRSTRUCT): 1802 structure = ( 1803 ('EntriesRead', DWORD), 1804 ('Buffer', LPDISK_INFO_ARRAY), 1805 ) 1806 1807class LPDISK_ENUM_CONTAINER(NDRPOINTER): 1808 referent = ( 1809 ('Data', DISK_ENUM_CONTAINER), 1810 ) 1811 1812# 2.2.4.93 SERVER_TRANSPORT_INFO_0 1813class SERVER_TRANSPORT_INFO_0(NDRSTRUCT): 1814 structure = ( 1815 ('svti0_numberofvcs', DWORD), 1816 ('svti0_transportname', LPWSTR), 1817 ('svti0_transportaddress', PNDRUniConformantArray), 1818 ('svti0_transportaddresslength', DWORD), 1819 ('svti0_networkaddress', LPWSTR), 1820 ) 1821 1822class LPSERVER_TRANSPORT_INFO_0(NDRPOINTER): 1823 referent = ( 1824 ('Data', SERVER_TRANSPORT_INFO_0), 1825 ) 1826 1827class SERVER_TRANSPORT_INFO_0_ARRAY(NDRUniConformantArray): 1828 item = SERVER_TRANSPORT_INFO_0 1829 1830class LPSERVER_TRANSPORT_INFO_0_ARRAY(NDRPOINTER): 1831 referent = ( 1832 ('Data', SERVER_TRANSPORT_INFO_0_ARRAY), 1833 ) 1834 1835# 2.2.4.94 SERVER_TRANSPORT_INFO_1 1836class SERVER_TRANSPORT_INFO_1(NDRSTRUCT): 1837 structure = ( 1838 ('svti1_numberofvcs', DWORD), 1839 ('svti1_transportname', LPWSTR), 1840 ('svti1_transportaddress', PNDRUniConformantArray), 1841 ('svti1_transportaddresslength', DWORD), 1842 ('svti1_networkaddress', LPWSTR), 1843 ('svti1_domain', LPWSTR), 1844 ) 1845 1846class LPSERVER_TRANSPORT_INFO_1(NDRPOINTER): 1847 referent = ( 1848 ('Data', SERVER_TRANSPORT_INFO_1), 1849 ) 1850 1851class SERVER_TRANSPORT_INFO_1_ARRAY(NDRUniConformantArray): 1852 item = SERVER_TRANSPORT_INFO_1 1853 1854class LPSERVER_TRANSPORT_INFO_1_ARRAY(NDRPOINTER): 1855 referent = ( 1856 ('Data', SERVER_TRANSPORT_INFO_1_ARRAY), 1857 ) 1858 1859# 2.2.4.95 SERVER_TRANSPORT_INFO_2 1860class SERVER_TRANSPORT_INFO_2(NDRSTRUCT): 1861 structure = ( 1862 ('svti2_numberofvcs', DWORD), 1863 ('svti2_transportname', LPWSTR), 1864 ('svti2_transportaddress', PNDRUniConformantArray), 1865 ('svti2_transportaddresslength', DWORD), 1866 ('svti2_networkaddress', LPWSTR), 1867 ('svti2_domain', LPWSTR), 1868 ('svti2_flags', DWORD), 1869 ) 1870 1871class LPSERVER_TRANSPORT_INFO_2(NDRPOINTER): 1872 referent = ( 1873 ('Data', SERVER_TRANSPORT_INFO_2), 1874 ) 1875 1876class SERVER_TRANSPORT_INFO_2_ARRAY(NDRUniConformantArray): 1877 item = SERVER_TRANSPORT_INFO_2 1878 1879class LPSERVER_TRANSPORT_INFO_2_ARRAY(NDRPOINTER): 1880 referent = ( 1881 ('Data', SERVER_TRANSPORT_INFO_2_ARRAY), 1882 ) 1883 1884# 2.2.4.96 SERVER_TRANSPORT_INFO_3 1885class PASSWORD_ARRAY(NDRUniFixedArray): 1886 def getDataLen(self, data): 1887 return 256 1888 1889class SERVER_TRANSPORT_INFO_3(NDRSTRUCT): 1890 structure = ( 1891 ('svti3_numberofvcs', DWORD), 1892 ('svti3_transportname', LPWSTR), 1893 ('svti3_transportaddress', PNDRUniConformantArray), 1894 ('svti3_transportaddresslength', DWORD), 1895 ('svti3_networkaddress', LPWSTR), 1896 ('svti3_domain', LPWSTR), 1897 ('svti3_flags', DWORD), 1898 ('svti3_passwordlength', DWORD), 1899 ('svti3_password', PASSWORD_ARRAY), 1900 ) 1901 1902class LPSERVER_TRANSPORT_INFO_3(NDRPOINTER): 1903 referent = ( 1904 ('Data', SERVER_TRANSPORT_INFO_3), 1905 ) 1906 1907class SERVER_TRANSPORT_INFO_3_ARRAY(NDRUniConformantArray): 1908 item = SERVER_TRANSPORT_INFO_3 1909 1910class LPSERVER_TRANSPORT_INFO_3_ARRAY(NDRPOINTER): 1911 referent = ( 1912 ('Data', SERVER_TRANSPORT_INFO_3_ARRAY), 1913 ) 1914 1915# 2.2.4.97 SERVER_XPORT_INFO_0_CONTAINER 1916class SERVER_XPORT_INFO_0_CONTAINER(NDRSTRUCT): 1917 structure = ( 1918 ('EntriesRead', DWORD), 1919 ('Buffer', LPSERVER_TRANSPORT_INFO_0_ARRAY), 1920 ) 1921 1922class LPSERVER_XPORT_INFO_0_CONTAINER(NDRPOINTER): 1923 referent = ( 1924 ('Data', SERVER_XPORT_INFO_0_CONTAINER), 1925 ) 1926 1927# 2.2.4.98 SERVER_XPORT_INFO_1_CONTAINER 1928class SERVER_XPORT_INFO_1_CONTAINER(NDRSTRUCT): 1929 structure = ( 1930 ('EntriesRead', DWORD), 1931 ('Buffer', LPSERVER_TRANSPORT_INFO_1_ARRAY), 1932 ) 1933 1934class LPSERVER_XPORT_INFO_1_CONTAINER(NDRPOINTER): 1935 referent = ( 1936 ('Data', SERVER_XPORT_INFO_1_CONTAINER), 1937 ) 1938 1939# 2.2.4.99 SERVER_XPORT_INFO_2_CONTAINER 1940class SERVER_XPORT_INFO_2_CONTAINER(NDRSTRUCT): 1941 structure = ( 1942 ('EntriesRead', DWORD), 1943 ('Buffer', LPSERVER_TRANSPORT_INFO_2_ARRAY), 1944 ) 1945 1946class LPSERVER_XPORT_INFO_2_CONTAINER(NDRPOINTER): 1947 referent = ( 1948 ('Data', SERVER_XPORT_INFO_2_CONTAINER), 1949 ) 1950 1951# 2.2.4.100 SERVER_XPORT_INFO_3_CONTAINER 1952class SERVER_XPORT_INFO_3_CONTAINER(NDRSTRUCT): 1953 structure = ( 1954 ('EntriesRead', DWORD), 1955 ('Buffer', LPSERVER_TRANSPORT_INFO_3_ARRAY), 1956 ) 1957 1958class LPSERVER_XPORT_INFO_3_CONTAINER(NDRPOINTER): 1959 referent = ( 1960 ('Data', SERVER_XPORT_INFO_3_CONTAINER), 1961 ) 1962 1963# 2.2.3.8 SERVER_XPORT_ENUM_UNION 1964class SERVER_XPORT_ENUM_UNION(NDRUNION): 1965 commonHdr = ( 1966 ('tag', DWORD), 1967 ) 1968 1969 union = { 1970 0: ('Level0', LPSERVER_XPORT_INFO_0_CONTAINER), 1971 1: ('Level1', LPSERVER_XPORT_INFO_1_CONTAINER), 1972 2: ('Level2', LPSERVER_XPORT_INFO_2_CONTAINER), 1973 3: ('Level3', LPSERVER_XPORT_INFO_3_CONTAINER), 1974 } 1975 1976# 2.2.4.101 SERVER_XPORT_ENUM_STRUCT 1977class SERVER_XPORT_ENUM_STRUCT(NDRSTRUCT): 1978 structure = ( 1979 ('Level', DWORD), 1980 ('XportInfo', SERVER_XPORT_ENUM_UNION), 1981 ) 1982 1983# 2.2.4.102 SERVER_ALIAS_INFO_0 1984class SERVER_ALIAS_INFO_0(NDRSTRUCT): 1985 structure = ( 1986 ('srvai0_alias', LMSTR), 1987 ('srvai0_target', LMSTR), 1988 ('srvai0_default', NDRBOOLEAN), 1989 ('srvai0_reserved', ULONG), 1990 ) 1991 1992class LPSERVER_ALIAS_INFO_0(NDRPOINTER): 1993 referent = ( 1994 ('Data', SERVER_ALIAS_INFO_0), 1995 ) 1996 1997class SERVER_ALIAS_INFO_0_ARRAY(NDRUniConformantArray): 1998 item = SERVER_ALIAS_INFO_0 1999 2000class LPSERVER_ALIAS_INFO_0_ARRAY(NDRPOINTER): 2001 referent = ( 2002 ('Data', SERVER_ALIAS_INFO_0_ARRAY), 2003 ) 2004 2005# 2.2.4.103 SERVER_ALIAS_INFO_0_CONTAINER 2006class SERVER_ALIAS_INFO_0_CONTAINER(NDRSTRUCT): 2007 structure = ( 2008 ('EntriesRead', DWORD), 2009 ('Buffer', LPSERVER_ALIAS_INFO_0_ARRAY), 2010 ) 2011 2012class LPSERVER_ALIAS_INFO_0_CONTAINER(NDRPOINTER): 2013 referent = ( 2014 ('Data', SERVER_ALIAS_INFO_0_CONTAINER), 2015 ) 2016 2017# 2.2.4.104 SERVER_ALIAS_ENUM_STRUCT 2018class SERVER_ALIAS_ENUM_UNION(NDRUNION): 2019 commonHdr = ( 2020 ('tag', DWORD), 2021 ) 2022 2023 union = { 2024 0: ('Level0', LPSERVER_ALIAS_INFO_0_CONTAINER), 2025 } 2026 2027class SERVER_ALIAS_ENUM_STRUCT(NDRSTRUCT): 2028 structure = ( 2029 ('Level', DWORD), 2030 ('ServerAliasInfo', SERVER_ALIAS_ENUM_UNION), 2031 ) 2032 2033# 2.2.4.105 TIME_OF_DAY_INFO 2034class TIME_OF_DAY_INFO(NDRSTRUCT): 2035 structure = ( 2036 ('tod_elapsedt', DWORD), 2037 ('tod_msecs', DWORD), 2038 ('tod_hours', DWORD), 2039 ('tod_mins', DWORD), 2040 ('tod_secs', DWORD), 2041 ('tod_hunds', DWORD), 2042 ('tod_timezone', DWORD), 2043 ('tod_tinterval', DWORD), 2044 ('tod_day', DWORD), 2045 ('tod_month', DWORD), 2046 ('tod_year', DWORD), 2047 ('tod_weekday', DWORD), 2048 ) 2049 2050class LPTIME_OF_DAY_INFO(NDRPOINTER): 2051 referent = ( 2052 ('Data', TIME_OF_DAY_INFO), 2053 ) 2054 2055# 2.2.4.106 ADT_SECURITY_DESCRIPTOR 2056class ADT_SECURITY_DESCRIPTOR(NDRSTRUCT): 2057 structure = ( 2058 ('Length', DWORD), 2059 ('Buffer', PNDRUniConformantArray), 2060 ) 2061 2062class PADT_SECURITY_DESCRIPTOR(NDRPOINTER): 2063 referent = ( 2064 ('Data', ADT_SECURITY_DESCRIPTOR), 2065 ) 2066 2067# 2.2.4.107 NET_DFS_ENTRY_ID 2068class NET_DFS_ENTRY_ID(NDRSTRUCT): 2069 structure = ( 2070 ('Uid', GUID), 2071 ('Prefix', LPWSTR), 2072 ) 2073 2074class NET_DFS_ENTRY_ID_ARRAY(NDRUniConformantArray): 2075 item = NET_DFS_ENTRY_ID 2076 2077class LPNET_DFS_ENTRY_ID_ARRAY(NDRPOINTER): 2078 referent = ( 2079 ('Data', NET_DFS_ENTRY_ID_ARRAY), 2080 ) 2081 2082# 2.2.4.108 NET_DFS_ENTRY_ID_CONTAINER 2083class NET_DFS_ENTRY_ID_CONTAINER(NDRSTRUCT): 2084 structure = ( 2085 ('Count', DWORD), 2086 ('Buffer', LPNET_DFS_ENTRY_ID_ARRAY), 2087 ) 2088 2089# 2.2.4.109 DFS_SITENAME_INFO 2090class DFS_SITENAME_INFO(NDRSTRUCT): 2091 structure = ( 2092 ('SiteFlags', DWORD), 2093 ('SiteName', LPWSTR), 2094 ) 2095 2096# 2.2.4.110 DFS_SITELIST_INFO 2097class DFS_SITENAME_INFO_ARRAY(NDRUniConformantArray): 2098 item = DFS_SITENAME_INFO 2099 2100class DFS_SITELIST_INFO(NDRSTRUCT): 2101 structure = ( 2102 ('cSites', DWORD), 2103 ('Site', DFS_SITENAME_INFO_ARRAY), 2104 ) 2105 2106class LPDFS_SITELIST_INFO(NDRPOINTER): 2107 referent = ( 2108 ('Data', DFS_SITELIST_INFO), 2109 ) 2110 2111# 2.2.3 Unions 2112# 2.2.3.3 FILE_INFO 2113class FILE_INFO(NDRUNION): 2114 commonHdr = ( 2115 ('tag', DWORD), 2116 ) 2117 2118 union = { 2119 2: ('FileInfo2', LPFILE_INFO_2), 2120 3: ('FileInfo3', LPFILE_INFO_3), 2121 } 2122 2123# 2.2.3.6 SHARE_INFO 2124class SHARE_INFO(NDRUNION): 2125 commonHdr = ( 2126 ('tag', DWORD), 2127 ) 2128 2129 union = { 2130 0: ('ShareInfo0', LPSHARE_INFO_0), 2131 1: ('ShareInfo1', LPSHARE_INFO_1), 2132 2: ('ShareInfo2', LPSHARE_INFO_2), 2133 502: ('ShareInfo502', LPSHARE_INFO_502), 2134 1004: ('ShareInfo1004', LPSHARE_INFO_1004), 2135 1006: ('ShareInfo1006', LPSHARE_INFO_1006), 2136 1501: ('ShareInfo1501', LPSHARE_INFO_1501), 2137 1005: ('ShareInfo1005', LPSHARE_INFO_1005), 2138 501: ('ShareInfo501', LPSHARE_INFO_501), 2139 503: ('ShareInfo503', LPSHARE_INFO_503), 2140 } 2141 2142# 2.2.3.7 SERVER_INFO 2143class SERVER_INFO(NDRUNION): 2144 commonHdr = ( 2145 ('tag', DWORD), 2146 ) 2147 2148 union = { 2149 100: ('ServerInfo100', LPSERVER_INFO_100), 2150 101: ('ServerInfo101', LPSERVER_INFO_101), 2151 102: ('ServerInfo102', LPSERVER_INFO_102), 2152 103: ('ServerInfo103', LPSERVER_INFO_103), 2153 502: ('ServerInfo502', LPSERVER_INFO_502), 2154 503: ('ServerInfo503', LPSERVER_INFO_503), 2155 599: ('ServerInfo599', LPSERVER_INFO_599), 2156 1005: ('ServerInfo1005', LPSERVER_INFO_1005), 2157 1107: ('ServerInfo1107', LPSERVER_INFO_1107), 2158 1010: ('ServerInfo1010', LPSERVER_INFO_1010), 2159 1016: ('ServerInfo1016', LPSERVER_INFO_1016), 2160 1017: ('ServerInfo1017', LPSERVER_INFO_1017), 2161 1018: ('ServerInfo1018', LPSERVER_INFO_1018), 2162 1501: ('ServerInfo1501', LPSERVER_INFO_1501), 2163 1502: ('ServerInfo1502', LPSERVER_INFO_1502), 2164 1503: ('ServerInfo1503', LPSERVER_INFO_1503), 2165 1506: ('ServerInfo1506', LPSERVER_INFO_1506), 2166 1510: ('ServerInfo1510', LPSERVER_INFO_1510), 2167 1511: ('ServerInfo1511', LPSERVER_INFO_1511), 2168 1512: ('ServerInfo1512', LPSERVER_INFO_1512), 2169 1513: ('ServerInfo1513', LPSERVER_INFO_1513), 2170 1514: ('ServerInfo1514', LPSERVER_INFO_1514), 2171 1515: ('ServerInfo1515', LPSERVER_INFO_1515), 2172 1516: ('ServerInfo1516', LPSERVER_INFO_1516), 2173 1518: ('ServerInfo1518', LPSERVER_INFO_1518), 2174 1523: ('ServerInfo1523', LPSERVER_INFO_1523), 2175 1528: ('ServerInfo1528', LPSERVER_INFO_1528), 2176 1529: ('ServerInfo1529', LPSERVER_INFO_1529), 2177 1530: ('ServerInfo1530', LPSERVER_INFO_1530), 2178 1533: ('ServerInfo1533', LPSERVER_INFO_1533), 2179 1534: ('ServerInfo1534', LPSERVER_INFO_1534), 2180 1535: ('ServerInfo1535', LPSERVER_INFO_1535), 2181 1536: ('ServerInfo1536', LPSERVER_INFO_1536), 2182 1538: ('ServerInfo1538', LPSERVER_INFO_1538), 2183 1539: ('ServerInfo1539', LPSERVER_INFO_1539), 2184 1540: ('ServerInfo1540', LPSERVER_INFO_1540), 2185 1541: ('ServerInfo1541', LPSERVER_INFO_1541), 2186 1542: ('ServerInfo1542', LPSERVER_INFO_1542), 2187 1543: ('ServerInfo1543', LPSERVER_INFO_1543), 2188 1544: ('ServerInfo1544', LPSERVER_INFO_1544), 2189 1545: ('ServerInfo1545', LPSERVER_INFO_1545), 2190 1546: ('ServerInfo1546', LPSERVER_INFO_1546), 2191 1547: ('ServerInfo1547', LPSERVER_INFO_1547), 2192 1548: ('ServerInfo1548', LPSERVER_INFO_1548), 2193 1549: ('ServerInfo1549', LPSERVER_INFO_1549), 2194 1550: ('ServerInfo1550', LPSERVER_INFO_1550), 2195 1552: ('ServerInfo1552', LPSERVER_INFO_1552), 2196 1553: ('ServerInfo1553', LPSERVER_INFO_1553), 2197 1554: ('ServerInfo1554', LPSERVER_INFO_1554), 2198 1555: ('ServerInfo1555', LPSERVER_INFO_1555), 2199 1556: ('ServerInfo1556', LPSERVER_INFO_1556), 2200 } 2201 2202# 2.2.3.9 TRANSPORT_INFO 2203class TRANSPORT_INFO(NDRUNION): 2204 commonHdr = ( 2205 ('tag', DWORD), 2206 ) 2207 2208 union = { 2209 0: ('Transport0', SERVER_TRANSPORT_INFO_0), 2210 1: ('Transport1', SERVER_TRANSPORT_INFO_1), 2211 2: ('Transport2', SERVER_TRANSPORT_INFO_2), 2212 3: ('Transport3', SERVER_TRANSPORT_INFO_3), 2213 } 2214 2215# 2.2.3.10 SERVER_ALIAS_INFO 2216class SERVER_ALIAS_INFO(NDRUNION): 2217 commonHdr = ( 2218 ('tag', DWORD), 2219 ) 2220 2221 union = { 2222 0: ('ServerAliasInfo0', LPSERVER_ALIAS_INFO_0), 2223 } 2224 2225 2226################################################################################ 2227# RPC CALLS 2228################################################################################ 2229# 3.1.4.1 NetrConnectionEnum (Opnum 8) 2230class NetrConnectionEnum(NDRCALL): 2231 opnum = 8 2232 structure = ( 2233 ('ServerName', PSRVSVC_HANDLE), 2234 ('Qualifier', LPWSTR), 2235 ('InfoStruct', CONNECT_ENUM_STRUCT), 2236 ('PreferedMaximumLength', DWORD), 2237 ('ResumeHandle', LPLONG), 2238 ) 2239 2240class NetrConnectionEnumResponse(NDRCALL): 2241 structure = ( 2242 ('InfoStruct',CONNECT_ENUM_STRUCT), 2243 ('TotalEntries',DWORD), 2244 ('ResumeHandle',LPLONG), 2245 ('ErrorCode',ULONG), 2246 ) 2247 2248# 3.1.4.2 NetrFileEnum (Opnum 9) 2249class NetrFileEnum(NDRCALL): 2250 opnum = 9 2251 structure = ( 2252 ('ServerName', PSRVSVC_HANDLE), 2253 ('BasePath', LPWSTR), 2254 ('UserName', LPWSTR), 2255 ('InfoStruct', FILE_ENUM_STRUCT), 2256 ('PreferedMaximumLength', DWORD), 2257 ('ResumeHandle', LPLONG), 2258 ) 2259 2260class NetrFileEnumResponse(NDRCALL): 2261 structure = ( 2262 ('InfoStruct',FILE_ENUM_STRUCT), 2263 ('TotalEntries',DWORD), 2264 ('ResumeHandle',LPLONG), 2265 ('ErrorCode',ULONG), 2266 ) 2267 2268# 3.1.4.3 NetrFileGetInfo (Opnum 10) 2269class NetrFileGetInfo(NDRCALL): 2270 opnum = 10 2271 structure = ( 2272 ('ServerName', PSRVSVC_HANDLE), 2273 ('FileId', DWORD), 2274 ('Level', DWORD), 2275 ) 2276 2277class NetrFileGetInfoResponse(NDRCALL): 2278 structure = ( 2279 ('InfoStruct',FILE_INFO), 2280 ('ErrorCode',ULONG), 2281 ) 2282 2283# 3.1.4.4 NetrFileClose (Opnum 11) 2284class NetrFileClose(NDRCALL): 2285 opnum = 11 2286 structure = ( 2287 ('ServerName', PSRVSVC_HANDLE), 2288 ('FileId', DWORD), 2289 ) 2290 2291class NetrFileCloseResponse(NDRCALL): 2292 structure = ( 2293 ('ErrorCode',ULONG), 2294 ) 2295 2296# 3.1.4.5 NetrSessionEnum (Opnum 12) 2297class NetrSessionEnum(NDRCALL): 2298 opnum = 12 2299 structure = ( 2300 ('ServerName', PSRVSVC_HANDLE), 2301 ('ClientName', LPWSTR), 2302 ('UserName', LPWSTR), 2303 ('InfoStruct', SESSION_ENUM_STRUCT), 2304 ('PreferedMaximumLength', DWORD), 2305 ('ResumeHandle', LPLONG), 2306 ) 2307 2308class NetrSessionEnumResponse(NDRCALL): 2309 structure = ( 2310 ('InfoStruct',SESSION_ENUM_STRUCT), 2311 ('TotalEntries',DWORD), 2312 ('ResumeHandle',LPLONG), 2313 ('ErrorCode',ULONG), 2314 ) 2315 2316# 3.1.4.6 NetrSessionDel (Opnum 13) 2317class NetrSessionDel(NDRCALL): 2318 opnum = 13 2319 structure = ( 2320 ('ServerName', PSRVSVC_HANDLE), 2321 ('ClientName', LPWSTR), 2322 ('UserName', LPWSTR), 2323 ) 2324 2325class NetrSessionDelResponse(NDRCALL): 2326 structure = ( 2327 ('ErrorCode',ULONG), 2328 ) 2329 2330# 3.1.4.7 NetrShareAdd (Opnum 14) 2331class NetrShareAdd(NDRCALL): 2332 opnum = 14 2333 structure = ( 2334 ('ServerName', PSRVSVC_HANDLE), 2335 ('Level', DWORD), 2336 ('InfoStruct', SHARE_INFO), 2337 ('ParmErr', LPLONG), 2338 ) 2339 2340class NetrShareAddResponse(NDRCALL): 2341 structure = ( 2342 ('ParmErr', LPLONG), 2343 ('ErrorCode',ULONG), 2344 ) 2345 2346# 3.1.4.8 NetrShareEnum (Opnum 15) 2347class NetrShareEnum(NDRCALL): 2348 opnum = 15 2349 structure = ( 2350 ('ServerName', PSRVSVC_HANDLE), 2351 ('InfoStruct', SHARE_ENUM_STRUCT), 2352 ('PreferedMaximumLength', DWORD), 2353 ('ResumeHandle', LPLONG), 2354 ) 2355 2356class NetrShareEnumResponse(NDRCALL): 2357 structure = ( 2358 ('InfoStruct', SHARE_ENUM_STRUCT), 2359 ('TotalEntries',DWORD), 2360 ('ResumeHandle',LPLONG), 2361 ('ErrorCode',ULONG), 2362 ) 2363 2364# 3.1.4.9 NetrShareEnumSticky (Opnum 36) 2365class NetrShareEnumSticky(NDRCALL): 2366 opnum = 36 2367 structure = ( 2368 ('ServerName', PSRVSVC_HANDLE), 2369 ('InfoStruct', SHARE_ENUM_STRUCT), 2370 ('PreferedMaximumLength', DWORD), 2371 ('ResumeHandle', LPLONG), 2372 ) 2373 2374class NetrShareEnumStickyResponse(NDRCALL): 2375 structure = ( 2376 ('InfoStruct', SHARE_ENUM_STRUCT), 2377 ('TotalEntries',DWORD), 2378 ('ResumeHandle',LPLONG), 2379 ('ErrorCode',ULONG), 2380 ) 2381 2382# 3.1.4.10 NetrShareGetInfo (Opnum 16) 2383class NetrShareGetInfo(NDRCALL): 2384 opnum = 16 2385 structure = ( 2386 ('ServerName', PSRVSVC_HANDLE), 2387 ('NetName', WSTR), 2388 ('Level', DWORD), 2389 ) 2390 2391class NetrShareGetInfoResponse(NDRCALL): 2392 structure = ( 2393 ('InfoStruct', SHARE_INFO), 2394 ('ErrorCode',ULONG), 2395 ) 2396 2397# 3.1.4.11 NetrShareSetInfo (Opnum 17) 2398class NetrShareSetInfo(NDRCALL): 2399 opnum = 17 2400 structure = ( 2401 ('ServerName', PSRVSVC_HANDLE), 2402 ('NetName', WSTR), 2403 ('Level', DWORD), 2404 ('ShareInfo', SHARE_INFO), 2405 ('ParmErr', LPLONG), 2406 ) 2407 2408class NetrShareSetInfoResponse(NDRCALL): 2409 structure = ( 2410 ('ParmErr', LPLONG), 2411 ('ErrorCode',ULONG), 2412 ) 2413 2414# 3.1.4.12 NetrShareDel (Opnum 18) 2415class NetrShareDel(NDRCALL): 2416 opnum = 18 2417 structure = ( 2418 ('ServerName', PSRVSVC_HANDLE), 2419 ('NetName', WSTR), 2420 ('Reserved', DWORD), 2421 ) 2422 2423class NetrShareDelResponse(NDRCALL): 2424 structure = ( 2425 ('ErrorCode',ULONG), 2426 ) 2427 2428# 3.1.4.13 NetrShareDelSticky (Opnum 19) 2429class NetrShareDelSticky(NDRCALL): 2430 opnum = 19 2431 structure = ( 2432 ('ServerName', PSRVSVC_HANDLE), 2433 ('NetName', WSTR), 2434 ('Reserved', DWORD), 2435 ) 2436 2437class NetrShareDelStickyResponse(NDRCALL): 2438 structure = ( 2439 ('ErrorCode',ULONG), 2440 ) 2441 2442# 3.1.4.14 NetrShareDelStart (Opnum 37) 2443class NetrShareDelStart(NDRCALL): 2444 opnum = 37 2445 structure = ( 2446 ('ServerName', PSRVSVC_HANDLE), 2447 ('NetName', WSTR), 2448 ('Reserved', DWORD), 2449 ) 2450 2451class NetrShareDelStartResponse(NDRCALL): 2452 structure = ( 2453 ('ContextHandle',SHARE_DEL_HANDLE), 2454 ('ErrorCode',ULONG), 2455 ) 2456 2457# 3.1.4.15 NetrShareDelCommit (Opnum 38) 2458class NetrShareDelCommit(NDRCALL): 2459 opnum = 38 2460 structure = ( 2461 ('ContextHandle',SHARE_DEL_HANDLE), 2462 ) 2463 2464class NetrShareDelCommitResponse(NDRCALL): 2465 structure = ( 2466 ('ErrorCode',ULONG), 2467 ) 2468 2469# 3.1.4.16 NetrShareCheck (Opnum 20) 2470class NetrShareCheck(NDRCALL): 2471 opnum = 20 2472 structure = ( 2473 ('ServerName', PSRVSVC_HANDLE), 2474 ('Device', WSTR), 2475 ) 2476 2477class NetrShareCheckResponse(NDRCALL): 2478 structure = ( 2479 ('Type',DWORD), 2480 ('ErrorCode',ULONG), 2481 ) 2482 2483# 3.1.4.17 NetrServerGetInfo (Opnum 21) 2484class NetrServerGetInfo(NDRCALL): 2485 opnum = 21 2486 structure = ( 2487 ('ServerName', PSRVSVC_HANDLE), 2488 ('Level', DWORD), 2489 ) 2490 2491class NetrServerGetInfoResponse(NDRCALL): 2492 structure = ( 2493 ('InfoStruct', SERVER_INFO), 2494 ('ErrorCode',ULONG), 2495 ) 2496 2497# 3.1.4.18 NetrServerSetInfo (Opnum 22) 2498class NetrServerSetInfo(NDRCALL): 2499 opnum = 22 2500 structure = ( 2501 ('ServerName', PSRVSVC_HANDLE), 2502 ('Level', DWORD), 2503 ('InfoStruct', SERVER_INFO), 2504 ) 2505 2506class NetrServerSetInfoResponse(NDRCALL): 2507 structure = ( 2508 ('ParmErr', LPLONG), 2509 ('ErrorCode',ULONG), 2510 ) 2511 2512# 3.1.4.19 NetrServerDiskEnum (Opnum 23) 2513class NetrServerDiskEnum(NDRCALL): 2514 opnum = 23 2515 structure = ( 2516 ('ServerName', PSRVSVC_HANDLE), 2517 ('Level', DWORD), 2518 ('DiskInfoStruct', DISK_ENUM_CONTAINER), 2519 ('PreferedMaximumLength', DWORD), 2520 ('ResumeHandle', LPLONG), 2521 ) 2522 2523class NetrServerDiskEnumResponse(NDRCALL): 2524 structure = ( 2525 ('DiskInfoStruct', DISK_ENUM_CONTAINER), 2526 ('TotalEntries', DWORD), 2527 ('ResumeHandle', LPLONG), 2528 ('ErrorCode',ULONG), 2529 ) 2530 2531# 3.1.4.20 NetrServerStatisticsGet (Opnum 24) 2532class NetrServerStatisticsGet(NDRCALL): 2533 opnum = 24 2534 structure = ( 2535 ('ServerName', PSRVSVC_HANDLE), 2536 ('Service', LPWSTR), 2537 ('Level', DWORD), 2538 ('Options', DWORD), 2539 ) 2540 2541class NetrServerStatisticsGetResponse(NDRCALL): 2542 structure = ( 2543 ('InfoStruct', LPSTAT_SERVER_0), 2544 ('ErrorCode',ULONG), 2545 ) 2546 2547# 3.1.4.21 NetrRemoteTOD (Opnum 28) 2548class NetrRemoteTOD(NDRCALL): 2549 opnum = 28 2550 structure = ( 2551 ('ServerName', PSRVSVC_HANDLE), 2552 ) 2553 2554class NetrRemoteTODResponse(NDRCALL): 2555 structure = ( 2556 ('BufferPtr', LPTIME_OF_DAY_INFO), 2557 ('ErrorCode',ULONG), 2558 ) 2559 2560# 3.1.4.22 NetrServerTransportAdd (Opnum 25) 2561class NetrServerTransportAdd(NDRCALL): 2562 opnum = 25 2563 structure = ( 2564 ('ServerName', PSRVSVC_HANDLE), 2565 ('Level', DWORD), 2566 ('Buffer', SERVER_TRANSPORT_INFO_0), 2567 ) 2568 2569class NetrServerTransportAddResponse(NDRCALL): 2570 structure = ( 2571 ('ErrorCode',ULONG), 2572 ) 2573 2574# 3.1.4.23 NetrServerTransportAddEx (Opnum 41) 2575class NetrServerTransportAddEx(NDRCALL): 2576 opnum = 41 2577 structure = ( 2578 ('ServerName', PSRVSVC_HANDLE), 2579 ('Level', DWORD), 2580 ('Buffer', TRANSPORT_INFO), 2581 ) 2582 2583class NetrServerTransportAddExResponse(NDRCALL): 2584 structure = ( 2585 ('ErrorCode',ULONG), 2586 ) 2587 2588# 3.1.4.24 NetrServerTransportEnum (Opnum 26) 2589class NetrServerTransportEnum(NDRCALL): 2590 opnum = 26 2591 structure = ( 2592 ('ServerName', PSRVSVC_HANDLE), 2593 ('InfoStruct', SERVER_XPORT_ENUM_STRUCT), 2594 ('PreferedMaximumLength', DWORD), 2595 ('ResumeHandle', LPLONG), 2596 ) 2597 2598class NetrServerTransportEnumResponse(NDRCALL): 2599 structure = ( 2600 ('InfoStruct', SERVER_XPORT_ENUM_STRUCT), 2601 ('TotalEntries', DWORD), 2602 ('ResumeHandle', LPLONG), 2603 ('ErrorCode',ULONG), 2604 ) 2605 2606# 3.1.4.25 NetrServerTransportDel (Opnum 27) 2607class NetrServerTransportDel(NDRCALL): 2608 opnum = 27 2609 structure = ( 2610 ('ServerName', PSRVSVC_HANDLE), 2611 ('Level', DWORD), 2612 ('Buffer', SERVER_TRANSPORT_INFO_0), 2613 ) 2614 2615class NetrServerTransportDelResponse(NDRCALL): 2616 structure = ( 2617 ('ErrorCode',ULONG), 2618 ) 2619 2620# 3.1.4.26 NetrServerTransportDelEx (Opnum 53) 2621class NetrServerTransportDelEx(NDRCALL): 2622 opnum = 53 2623 structure = ( 2624 ('ServerName', PSRVSVC_HANDLE), 2625 ('Level', DWORD), 2626 ('Buffer', TRANSPORT_INFO), 2627 ) 2628 2629class NetrServerTransportDelExResponse(NDRCALL): 2630 structure = ( 2631 ('ErrorCode',ULONG), 2632 ) 2633 2634# 3.1.4.27 NetrpGetFileSecurity (Opnum 39) 2635class NetrpGetFileSecurity(NDRCALL): 2636 opnum = 39 2637 structure = ( 2638 ('ServerName', PSRVSVC_HANDLE), 2639 ('ShareName', LPWSTR), 2640 ('lpFileName', WSTR), 2641 ('RequestedInformation', SECURITY_INFORMATION), 2642 ) 2643 2644class NetrpGetFileSecurityResponse(NDRCALL): 2645 structure = ( 2646 ('SecurityDescriptor', PADT_SECURITY_DESCRIPTOR), 2647 ('ErrorCode',ULONG), 2648 ) 2649 2650# 3.1.4.28 NetrpSetFileSecurity (Opnum 40) 2651class NetrpSetFileSecurity(NDRCALL): 2652 opnum = 40 2653 structure = ( 2654 ('ServerName', PSRVSVC_HANDLE), 2655 ('ShareName', LPWSTR), 2656 ('lpFileName', WSTR), 2657 ('SecurityInformation', SECURITY_INFORMATION), 2658 ('SecurityDescriptor', ADT_SECURITY_DESCRIPTOR), 2659 ) 2660 2661class NetrpSetFileSecurityResponse(NDRCALL): 2662 structure = ( 2663 ('ErrorCode',ULONG), 2664 ) 2665 2666# 3.1.4.29 NetprPathType (Opnum 30) 2667class NetprPathType(NDRCALL): 2668 opnum = 30 2669 structure = ( 2670 ('ServerName', PSRVSVC_HANDLE), 2671 ('PathName', WSTR), 2672 ('Flags', DWORD), 2673 ) 2674 2675class NetprPathTypeResponse(NDRCALL): 2676 structure = ( 2677 ('PathType', DWORD), 2678 ('ErrorCode',ULONG), 2679 ) 2680 2681# 3.1.4.30 NetprPathCanonicalize (Opnum 31) 2682class NetprPathCanonicalize(NDRCALL): 2683 opnum = 31 2684 structure = ( 2685 ('ServerName', PSRVSVC_HANDLE), 2686 ('PathName', WSTR), 2687 ('OutbufLen', DWORD), 2688 ('Prefix', WSTR), 2689 ('PathType', DWORD), 2690 ('Flags', DWORD), 2691 ) 2692 2693class NetprPathCanonicalizeResponse(NDRCALL): 2694 structure = ( 2695 ('Outbuf', NDRUniConformantArray), 2696 ('PathType', DWORD), 2697 ('ErrorCode',ULONG), 2698 ) 2699 2700# 3.1.4.31 NetprPathCompare (Opnum 32) 2701class NetprPathCompare(NDRCALL): 2702 opnum = 32 2703 structure = ( 2704 ('ServerName', PSRVSVC_HANDLE), 2705 ('PathName1', WSTR), 2706 ('PathName2', WSTR), 2707 ('PathType', DWORD), 2708 ('Flags', DWORD), 2709 ) 2710 2711class NetprPathCompareResponse(NDRCALL): 2712 structure = ( 2713 ('ErrorCode',ULONG), 2714 ) 2715 2716# 3.1.4.32 NetprNameValidate (Opnum 33) 2717class NetprNameValidate(NDRCALL): 2718 opnum = 33 2719 structure = ( 2720 ('ServerName', PSRVSVC_HANDLE), 2721 ('Name', WSTR), 2722 ('NameType', DWORD), 2723 ('Flags', DWORD), 2724 ) 2725 2726class NetprNameValidateResponse(NDRCALL): 2727 structure = ( 2728 ('ErrorCode',ULONG), 2729 ) 2730 2731# 3.1.4.33 NetprNameCanonicalize (Opnum 34) 2732class NetprNameCanonicalize(NDRCALL): 2733 opnum = 34 2734 structure = ( 2735 ('ServerName', PSRVSVC_HANDLE), 2736 ('Name', WSTR), 2737 ('OutbufLen', DWORD), 2738 ('NameType', DWORD), 2739 ('Flags', DWORD), 2740 ) 2741 2742class NetprNameCanonicalizeResponse(NDRCALL): 2743 structure = ( 2744 ('Outbuf', NDRUniConformantArray), 2745 ('NameType', DWORD), 2746 ('ErrorCode',ULONG), 2747 ) 2748 2749# 3.1.4.34 NetprNameCompare (Opnum 35) 2750class NetprNameCompare(NDRCALL): 2751 opnum = 35 2752 structure = ( 2753 ('ServerName', PSRVSVC_HANDLE), 2754 ('Name1', WSTR), 2755 ('Name2', WSTR), 2756 ('NameType', DWORD), 2757 ('Flags', DWORD), 2758 ) 2759 2760class NetprNameCompareResponse(NDRCALL): 2761 structure = ( 2762 ('ErrorCode',ULONG), 2763 ) 2764 2765# 3.1.4.35 NetrDfsGetVersion (Opnum 43) 2766class NetrDfsGetVersion(NDRCALL): 2767 opnum = 43 2768 structure = ( 2769 ('ServerName', PSRVSVC_HANDLE), 2770 ) 2771 2772class NetrDfsGetVersionResponse(NDRCALL): 2773 structure = ( 2774 ('Version', DWORD), 2775 ('ErrorCode',ULONG), 2776 ) 2777 2778# 3.1.4.36 NetrDfsCreateLocalPartition (Opnum 44) 2779class NetrDfsCreateLocalPartition(NDRCALL): 2780 opnum = 44 2781 structure = ( 2782 ('ServerName', PSRVSVC_HANDLE), 2783 ('ShareName', WSTR), 2784 ('EntryUid', GUID), 2785 ('EntryPrefix', WSTR), 2786 ('ShortName', WSTR), 2787 ('RelationInfo', NET_DFS_ENTRY_ID_CONTAINER), 2788 ('Force', DWORD), 2789 ) 2790 2791class NetrDfsCreateLocalPartitionResponse(NDRCALL): 2792 structure = ( 2793 ('ErrorCode',ULONG), 2794 ) 2795 2796# 3.1.4.37 NetrDfsDeleteLocalPartition (Opnum 45) 2797class NetrDfsDeleteLocalPartition(NDRCALL): 2798 opnum = 45 2799 structure = ( 2800 ('ServerName', PSRVSVC_HANDLE), 2801 ('Uid', GUID), 2802 ('Prefix', WSTR), 2803 ) 2804 2805class NetrDfsDeleteLocalPartitionResponse(NDRCALL): 2806 structure = ( 2807 ('ErrorCode',ULONG), 2808 ) 2809 2810# 3.1.4.38 NetrDfsSetLocalVolumeState (Opnum 46) 2811class NetrDfsSetLocalVolumeState(NDRCALL): 2812 opnum = 46 2813 structure = ( 2814 ('ServerName', PSRVSVC_HANDLE), 2815 ('Uid', GUID), 2816 ('Prefix', WSTR), 2817 ('State', DWORD), 2818 ) 2819 2820class NetrDfsSetLocalVolumeStateResponse(NDRCALL): 2821 structure = ( 2822 ('ErrorCode',ULONG), 2823 ) 2824 2825# 3.1.4.39 NetrDfsCreateExitPoint (Opnum 48) 2826class NetrDfsCreateExitPoint(NDRCALL): 2827 opnum = 48 2828 structure = ( 2829 ('ServerName', PSRVSVC_HANDLE), 2830 ('Uid', GUID), 2831 ('Prefix', WSTR), 2832 ('Type', DWORD), 2833 ('ShortPrefixLen', DWORD), 2834 ) 2835 2836class NetrDfsCreateExitPointResponse(NDRCALL): 2837 structure = ( 2838 ('ShortPrefix',WCHAR_ARRAY), 2839 ('ErrorCode',ULONG), 2840 ) 2841 2842# 3.1.4.40 NetrDfsModifyPrefix (Opnum 50) 2843class NetrDfsModifyPrefix(NDRCALL): 2844 opnum = 50 2845 structure = ( 2846 ('ServerName', PSRVSVC_HANDLE), 2847 ('Uid', GUID), 2848 ('Prefix', WSTR), 2849 ) 2850 2851class NetrDfsModifyPrefixResponse(NDRCALL): 2852 structure = ( 2853 ('ErrorCode',ULONG), 2854 ) 2855 2856# 3.1.4.41 NetrDfsDeleteExitPoint (Opnum 49) 2857class NetrDfsDeleteExitPoint(NDRCALL): 2858 opnum = 49 2859 structure = ( 2860 ('ServerName', PSRVSVC_HANDLE), 2861 ('Uid', GUID), 2862 ('Prefix', WSTR), 2863 ('Type', DWORD), 2864 ) 2865 2866class NetrDfsDeleteExitPointResponse(NDRCALL): 2867 structure = ( 2868 ('ErrorCode',ULONG), 2869 ) 2870 2871# 3.1.4.42 NetrDfsFixLocalVolume (Opnum 51) 2872class NetrDfsFixLocalVolume(NDRCALL): 2873 opnum = 51 2874 structure = ( 2875 ('ServerName', PSRVSVC_HANDLE), 2876 ('VolumeName', WSTR), 2877 ('EntryType', DWORD), 2878 ('ServiceType', DWORD), 2879 ('StgId', WSTR), 2880 ('EntryUid', GUID), 2881 ('EntryPrefix', WSTR), 2882 ('RelationInfo', NET_DFS_ENTRY_ID_CONTAINER), 2883 ('CreateDisposition', DWORD), 2884 ) 2885 2886class NetrDfsFixLocalVolumeResponse(NDRCALL): 2887 structure = ( 2888 ('ErrorCode',ULONG), 2889 ) 2890 2891# 3.1.4.43 NetrDfsManagerReportSiteInfo (Opnum 52) 2892class NetrDfsManagerReportSiteInfo(NDRCALL): 2893 opnum = 52 2894 structure = ( 2895 ('ServerName', PSRVSVC_HANDLE), 2896 ('ppSiteInfo', LPDFS_SITELIST_INFO), 2897 ) 2898 2899class NetrDfsManagerReportSiteInfoResponse(NDRCALL): 2900 structure = ( 2901 ('ppSiteInfo', LPDFS_SITELIST_INFO), 2902 ('ErrorCode',ULONG), 2903 ) 2904 2905# 3.1.4.44 NetrServerAliasAdd (Opnum 54) 2906class NetrServerAliasAdd(NDRCALL): 2907 opnum = 54 2908 structure = ( 2909 ('ServerName', PSRVSVC_HANDLE), 2910 ('Level', DWORD), 2911 ('InfoStruct', SERVER_ALIAS_INFO), 2912 ) 2913 2914class NetrServerAliasAddResponse(NDRCALL): 2915 structure = ( 2916 ('ErrorCode',ULONG), 2917 ) 2918 2919# 3.1.4.45 NetrServerAliasEnum (Opnum 55) 2920class NetrServerAliasEnum(NDRCALL): 2921 opnum = 55 2922 structure = ( 2923 ('ServerName', PSRVSVC_HANDLE), 2924 ('InfoStruct', SERVER_ALIAS_ENUM_STRUCT), 2925 ('PreferedMaximumLength', DWORD), 2926 ('ResumeHandle', LPLONG), 2927 ) 2928 2929class NetrServerAliasEnumResponse(NDRCALL): 2930 structure = ( 2931 ('InfoStruct',SERVER_ALIAS_ENUM_STRUCT), 2932 ('TotalEntries',DWORD), 2933 ('ResumeHandle',LPLONG), 2934 ('ErrorCode',ULONG), 2935 ) 2936 2937# 3.1.4.46 NetrServerAliasDel (Opnum 56) 2938class NetrServerAliasDel(NDRCALL): 2939 opnum = 56 2940 structure = ( 2941 ('ServerName', PSRVSVC_HANDLE), 2942 ('Level', DWORD), 2943 ('InfoStruct', SERVER_ALIAS_INFO), 2944 ) 2945 2946class NetrServerAliasDelResponse(NDRCALL): 2947 structure = ( 2948 ('ErrorCode',ULONG), 2949 ) 2950 2951# 3.1.4.47 NetrShareDelEx (Opnum 57) 2952class NetrShareDelEx(NDRCALL): 2953 opnum = 57 2954 structure = ( 2955 ('ServerName', PSRVSVC_HANDLE), 2956 ('Level', DWORD), 2957 ('ShareInfo', SHARE_INFO), 2958 ) 2959 2960class NetrShareDelExResponse(NDRCALL): 2961 structure = ( 2962 ('ErrorCode',ULONG), 2963 ) 2964 2965################################################################################ 2966# OPNUMs and their corresponding structures 2967################################################################################ 2968OPNUMS = { 2969 8 : (NetrConnectionEnum, NetrConnectionEnumResponse), 2970 9 : (NetrFileEnum, NetrFileEnumResponse), 297110 : (NetrFileGetInfo, NetrFileGetInfoResponse), 297211 : (NetrFileClose, NetrFileCloseResponse), 297312 : (NetrSessionEnum, NetrSessionEnumResponse), 297413 : (NetrSessionDel, NetrSessionDelResponse), 297514 : (NetrShareAdd, NetrShareAddResponse), 297615 : (NetrShareEnum, NetrShareEnumResponse), 297716 : (NetrShareGetInfo, NetrShareGetInfoResponse), 297817 : (NetrShareSetInfo, NetrShareSetInfoResponse), 297918 : (NetrShareDel, NetrShareDelResponse), 298019 : (NetrShareDelSticky, NetrShareDelStickyResponse), 298120 : (NetrShareCheck, NetrShareCheckResponse), 298221 : (NetrServerGetInfo, NetrServerGetInfoResponse), 298322 : (NetrServerSetInfo, NetrServerSetInfoResponse), 298423 : (NetrServerDiskEnum, NetrServerDiskEnumResponse), 298524 : (NetrServerStatisticsGet, NetrServerStatisticsGetResponse), 298625 : (NetrServerTransportAdd, NetrServerTransportAddResponse), 298726 : (NetrServerTransportEnum, NetrServerTransportEnumResponse), 298827 : (NetrServerTransportDel, NetrServerTransportDelResponse), 298928 : (NetrRemoteTOD, NetrRemoteTODResponse), 299030 : (NetprPathType, NetprPathTypeResponse), 299131 : (NetprPathCanonicalize, NetprPathCanonicalizeResponse), 299232 : (NetprPathCompare, NetprPathCompareResponse), 299333 : (NetprNameValidate, NetprNameValidateResponse), 299434 : (NetprNameCanonicalize, NetprNameCanonicalizeResponse), 299535 : (NetprNameCompare, NetprNameCompareResponse), 299636 : (NetrShareEnumSticky, NetrShareEnumStickyResponse), 299737 : (NetrShareDelStart, NetrShareDelStartResponse), 299838 : (NetrShareDelCommit, NetrShareDelCommitResponse), 299939 : (NetrpGetFileSecurity, NetrpGetFileSecurityResponse), 300040 : (NetrpSetFileSecurity, NetrpSetFileSecurityResponse), 300141 : (NetrServerTransportAddEx, NetrServerTransportAddExResponse), 300243 : (NetrDfsGetVersion, NetrDfsGetVersionResponse), 300344 : (NetrDfsCreateLocalPartition, NetrDfsCreateLocalPartitionResponse), 300445 : (NetrDfsDeleteLocalPartition, NetrDfsDeleteLocalPartitionResponse), 300546 : (NetrDfsSetLocalVolumeState, NetrDfsSetLocalVolumeStateResponse), 300648 : (NetrDfsCreateExitPoint, NetrDfsCreateExitPointResponse), 300749 : (NetrDfsDeleteExitPoint, NetrDfsDeleteExitPointResponse), 300850 : (NetrDfsModifyPrefix, NetrDfsModifyPrefixResponse), 300951 : (NetrDfsFixLocalVolume, NetrDfsFixLocalVolumeResponse), 301052 : (NetrDfsManagerReportSiteInfo, NetrDfsManagerReportSiteInfoResponse), 301153 : (NetrServerTransportDelEx, NetrServerTransportDelExResponse), 301254 : (NetrServerAliasAdd, NetrServerAliasAddResponse), 301355 : (NetrServerAliasEnum, NetrServerAliasEnumResponse), 301456 : (NetrServerAliasDel, NetrServerAliasDelResponse), 301557 : (NetrShareDelEx, NetrShareDelExResponse), 3016} 3017 3018################################################################################ 3019# HELPER FUNCTIONS 3020################################################################################ 3021def hNetrConnectionEnum(dce, qualifier, level, resumeHandle = 0, preferedMaximumLength = 0xffffffff): 3022 request = NetrConnectionEnum() 3023 request['ServerName'] = NULL 3024 request['Qualifier'] = qualifier 3025 request['InfoStruct']['Level'] = level 3026 request['InfoStruct']['ConnectInfo']['tag'] = level 3027 request['PreferedMaximumLength'] = preferedMaximumLength 3028 request['ResumeHandle'] = resumeHandle 3029 return dce.request(request) 3030 3031def hNetrFileEnum(dce, basePath, userName, level, resumeHandle = 0, preferedMaximumLength = 0xffffffff): 3032 request = NetrFileEnum() 3033 request['ServerName'] = NULL 3034 request['BasePath'] = basePath 3035 request['UserName'] = userName 3036 request['InfoStruct']['Level'] = level 3037 request['InfoStruct']['FileInfo']['tag'] = level 3038 request['PreferedMaximumLength'] = preferedMaximumLength 3039 request['ResumeHandle'] = resumeHandle 3040 return dce.request(request) 3041 3042def hNetrFileGetInfo(dce, fileId, level): 3043 request = NetrFileGetInfo() 3044 request['ServerName'] = NULL 3045 request['FileId'] = fileId 3046 request['Level'] = level 3047 return dce.request(request) 3048 3049def hNetrFileClose(dce, fileId): 3050 request = NetrFileClose() 3051 request['ServerName'] = NULL 3052 request['FileId'] = fileId 3053 return dce.request(request) 3054 3055def hNetrSessionEnum(dce, clientName, userName, level, resumeHandle = 0, preferedMaximumLength = 0xffffffff): 3056 request = NetrSessionEnum() 3057 request['ServerName'] = NULL 3058 request['ClientName'] = clientName 3059 request['UserName'] = userName 3060 request['InfoStruct']['Level'] = level 3061 request['InfoStruct']['SessionInfo']['tag'] = level 3062 request['InfoStruct']['SessionInfo']['Level%d'%level]['Buffer'] = NULL 3063 request['PreferedMaximumLength'] = preferedMaximumLength 3064 request['ResumeHandle'] = resumeHandle 3065 3066 return dce.request(request) 3067 3068def hNetrSessionDel(dce, clientName, userName): 3069 request = NetrSessionDel() 3070 request['ServerName'] = NULL 3071 request['ClientName'] = clientName 3072 request['UserName'] = userName 3073 return dce.request(request) 3074 3075def hNetrShareAdd(dce, level, infoStruct): 3076 request = NetrShareAdd() 3077 request['ServerName'] = NULL 3078 request['Level'] = level 3079 request['InfoStruct']['tag'] = level 3080 request['InfoStruct']['ShareInfo%d'%level] = infoStruct 3081 return dce.request(request) 3082 3083def hNetrShareDel(dce, netName): 3084 request = NetrShareDel() 3085 request['ServerName'] = NULL 3086 request['NetName'] = netName 3087 return dce.request(request) 3088 3089def hNetrShareEnum(dce, level, resumeHandle = 0, preferedMaximumLength = 0xffffffff): 3090 request = NetrShareEnum() 3091 request['ServerName'] = '\x00' 3092 request['PreferedMaximumLength'] = preferedMaximumLength 3093 request['ResumeHandle'] = resumeHandle 3094 request['InfoStruct']['Level'] = level 3095 request['InfoStruct']['ShareInfo']['tag'] = level 3096 request['InfoStruct']['ShareInfo']['Level%d'%level]['Buffer'] = NULL 3097 3098 return dce.request(request) 3099 3100def hNetrShareEnumSticky(dce, level, resumeHandle = 0, preferedMaximumLength = 0xffffffff): 3101 request = NetrShareEnumSticky() 3102 request['ServerName'] = NULL 3103 request['PreferedMaximumLength'] = preferedMaximumLength 3104 request['ResumeHandle'] = resumeHandle 3105 request['InfoStruct']['Level'] = level 3106 request['InfoStruct']['ShareInfo']['tag'] = level 3107 request['InfoStruct']['ShareInfo']['Level%d'%level]['Buffer'] = NULL 3108 3109 return dce.request(request) 3110 3111def hNetrShareGetInfo(dce, netName, level): 3112 request = NetrShareGetInfo() 3113 request['ServerName'] = NULL 3114 request['NetName'] = netName 3115 request['Level'] = level 3116 return dce.request(request) 3117 3118def hNetrShareSetInfo(dce, netName, level, shareInfo): 3119 request = NetrShareSetInfo() 3120 request['ServerName'] = NULL 3121 request['NetName'] = netName 3122 request['Level'] = level 3123 request['ShareInfo']['tag'] = level 3124 request['ShareInfo']['ShareInfo%d'%level] = shareInfo 3125 3126 return dce.request(request) 3127 3128def hNetrShareDelSticky(dce, netName): 3129 request = NetrShareDelSticky() 3130 request['ServerName'] = NULL 3131 request['NetName'] = netName 3132 return dce.request(request) 3133 3134# Sacala la h a estos 2, y tira todos los test cases juntos 3135def hNetrShareDelStart(dce, netName): 3136 request = NetrShareDelStart() 3137 request['ServerName'] = NULL 3138 request['NetName'] = netName 3139 return dce.request(request) 3140 3141def hNetrShareDelCommit(dce, contextHandle): 3142 request = NetrShareDelCommit() 3143 request['ContextHandle'] = contextHandle 3144 return dce.request(request) 3145 3146def hNetrShareCheck(dce, device): 3147 request = NetrShareCheck() 3148 request['ServerName'] = NULL 3149 request['Device'] = device 3150 return dce.request(request) 3151 3152def hNetrServerGetInfo(dce, level): 3153 request = NetrServerGetInfo() 3154 request['ServerName'] = NULL 3155 request['Level'] = level 3156 return dce.request(request) 3157 3158def hNetrServerDiskEnum(dce, level, resumeHandle = 0, preferedMaximumLength = 0xffffffff): 3159 request = NetrServerDiskEnum() 3160 request['ServerName'] = NULL 3161 request['PreferedMaximumLength'] = preferedMaximumLength 3162 request['ResumeHandle'] = resumeHandle 3163 request['Level'] = level 3164 request['DiskInfoStruct']['Buffer'] = NULL 3165 return dce.request(request) 3166 3167def hNetrServerStatisticsGet(dce, service, level, options): 3168 request = NetrServerStatisticsGet() 3169 request['ServerName'] = NULL 3170 request['Service'] = service 3171 request['Level'] = level 3172 request['Options'] = options 3173 return dce.request(request) 3174 3175def hNetrRemoteTOD(dce): 3176 request = NetrRemoteTOD() 3177 request['ServerName'] = NULL 3178 return dce.request(request) 3179 3180def hNetrServerTransportEnum(dce, level, resumeHandle = 0, preferedMaximumLength = 0xffffffff): 3181 request = NetrServerTransportEnum() 3182 request['ServerName'] = NULL 3183 request['PreferedMaximumLength'] = preferedMaximumLength 3184 request['ResumeHandle'] = resumeHandle 3185 request['InfoStruct']['Level'] = level 3186 request['InfoStruct']['XportInfo']['tag'] = level 3187 request['InfoStruct']['XportInfo']['Level%d' % level]['Buffer'] = NULL 3188 return dce.request(request) 3189 3190def hNetrpGetFileSecurity(dce, shareName, lpFileName, requestedInformation): 3191 request = NetrpGetFileSecurity() 3192 request['ServerName'] = NULL 3193 request['ShareName'] = shareName 3194 request['lpFileName'] = lpFileName 3195 request['RequestedInformation'] = requestedInformation 3196 retVal = dce.request(request) 3197 return ''.join(retVal['SecurityDescriptor']['Buffer']) 3198 3199def hNetrpSetFileSecurity(dce, shareName, lpFileName, securityInformation, securityDescriptor): 3200 request = NetrpSetFileSecurity() 3201 request['ServerName'] = NULL 3202 request['ShareName'] = shareName 3203 request['lpFileName'] = lpFileName 3204 request['SecurityInformation'] = securityInformation 3205 request['SecurityDescriptor']['Length'] = len(securityDescriptor) 3206 request['SecurityDescriptor']['Buffer'] = list(securityDescriptor) 3207 return dce.request(request) 3208 3209def hNetprPathType(dce, pathName, flags): 3210 request = NetprPathType() 3211 request['ServerName'] = NULL 3212 request['PathName'] = pathName 3213 request['Flags'] = flags 3214 return dce.request(request) 3215 3216def hNetprPathCanonicalize(dce, pathName, prefix, outbufLen=50, pathType=0, flags=0): 3217 request = NetprPathCanonicalize() 3218 request['ServerName'] = NULL 3219 request['PathName'] = pathName 3220 request['OutbufLen'] = outbufLen 3221 request['Prefix'] = prefix 3222 request['PathType'] = pathType 3223 request['Flags'] = flags 3224 return dce.request(request) 3225 3226def hNetprPathCompare(dce, pathName1, pathName2, pathType=0, flags=0): 3227 request = NetprPathCompare() 3228 request['ServerName'] = NULL 3229 request['PathName1'] = pathName1 3230 request['PathName2'] = pathName2 3231 request['PathType'] = pathType 3232 request['Flags'] = flags 3233 return dce.request(request) 3234 3235def hNetprNameValidate(dce, name, nameType, flags=0): 3236 request = NetprNameValidate() 3237 request['ServerName'] = NULL 3238 request['Name'] = name 3239 request['NameType'] = nameType 3240 request['Flags'] = flags 3241 return dce.request(request) 3242 3243def hNetprNameCanonicalize(dce, name, outbufLen=50, nameType=0, flags=0): 3244 request = NetprNameCanonicalize() 3245 request['ServerName'] = NULL 3246 request['Name'] = name 3247 request['OutbufLen'] = outbufLen 3248 request['NameType'] = nameType 3249 request['Flags'] = flags 3250 return dce.request(request) 3251 3252def hNetprNameCompare(dce, name1, name2, nameType=0, flags=0): 3253 request = NetprNameCompare() 3254 request['ServerName'] = NULL 3255 request['Name1'] = name1 3256 request['Name2'] = name2 3257 request['NameType'] = nameType 3258 request['Flags'] = flags 3259 return dce.request(request) 3260 3261def hNetrDfsGetVersion(dce): 3262 request = NetrDfsGetVersion() 3263 request['ServerName'] = NULL 3264 return dce.request(request) 3265 3266def hNetrServerAliasAdd(dce, level, aliasInfo): 3267 request = NetrServerAliasAdd() 3268 request['ServerName'] = NULL 3269 request['Level'] = level 3270 request['InfoStruct']['tag'] = level 3271 request['InfoStruct']['ServerAliasInfo%d'%level] = aliasInfo 3272 return dce.request(request) 3273 3274def hNetrServerAliasDel(dce, level, aliasInfo): 3275 request = NetrServerAliasDel() 3276 request['ServerName'] = NULL 3277 request['Level'] = level 3278 request['InfoStruct']['tag'] = level 3279 request['InfoStruct']['ServerAliasInfo%d'%level] = aliasInfo 3280 return dce.request(request) 3281 3282def hNetrServerAliasEnum(dce, level, resumeHandle = 0, preferedMaximumLength = 0xffffffff): 3283 request = NetrServerAliasEnum() 3284 request['ServerName'] = NULL 3285 request['InfoStruct']['Level'] = level 3286 request['InfoStruct']['ServerAliasInfo']['tag'] = level 3287 request['InfoStruct']['ServerAliasInfo']['Level%d' % level]['Buffer'] = NULL 3288 request['PreferedMaximumLength'] = preferedMaximumLength 3289 request['ResumeHandle'] = resumeHandle 3290 return dce.request(request) 3291 3292