1 /* 2 * ReactOS Services 3 * Copyright (C) 2015 ReactOS Team 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 2 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License along 16 * with this program; if not, write to the Free Software Foundation, Inc., 17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 */ 19 /* 20 * COPYRIGHT: See COPYING in the top level directory 21 * PROJECT: ReactOS Services 22 * FILE: base/services/srvsvc/rpcserver.c 23 * PURPOSE: Server service 24 * PROGRAMMER: Eric Kohl 25 */ 26 27 /* INCLUDES *****************************************************************/ 28 29 #include "precomp.h" 30 31 #include "ndk/kefuncs.h" 32 #include "ndk/rtlfuncs.h" 33 #include "winerror.h" 34 #include "lmerr.h" 35 36 WINE_DEFAULT_DEBUG_CHANNEL(srvsvc); 37 38 /* FUNCTIONS *****************************************************************/ 39 40 DWORD 41 WINAPI 42 RpcThreadRoutine( 43 LPVOID lpParameter) 44 { 45 RPC_STATUS Status; 46 47 Status = RpcServerUseProtseqEpW(L"ncacn_np", 20, L"\\pipe\\srvsvc", NULL); 48 if (Status != RPC_S_OK) 49 { 50 ERR("RpcServerUseProtseqEpW() failed (Status %lx)\n", Status); 51 return 0; 52 } 53 54 Status = RpcServerRegisterIf(srvsvc_v3_0_s_ifspec, NULL, NULL); 55 if (Status != RPC_S_OK) 56 { 57 ERR("RpcServerRegisterIf() failed (Status %lx)\n", Status); 58 return 0; 59 } 60 61 Status = RpcServerListen(1, RPC_C_LISTEN_MAX_CALLS_DEFAULT, FALSE); 62 if (Status != RPC_S_OK) 63 { 64 ERR("RpcServerListen() failed (Status %lx)\n", Status); 65 } 66 67 return 0; 68 } 69 70 71 void __RPC_FAR * __RPC_USER midl_user_allocate(SIZE_T len) 72 { 73 return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len); 74 } 75 76 77 void __RPC_USER midl_user_free(void __RPC_FAR * ptr) 78 { 79 HeapFree(GetProcessHeap(), 0, ptr); 80 } 81 82 83 void __RPC_USER SHARE_DEL_HANDLE_rundown(SHARE_DEL_HANDLE hClientHandle) 84 { 85 } 86 87 88 /* Function 0 */ 89 void 90 __stdcall 91 Opnum0NotUsedOnWire(void) 92 { 93 UNIMPLEMENTED; 94 } 95 96 97 /* Function 1 */ 98 void 99 __stdcall 100 Opnum1NotUsedOnWire(void) 101 { 102 UNIMPLEMENTED; 103 } 104 105 106 /* Function 2 */ 107 void 108 __stdcall 109 Opnum2NotUsedOnWire(void) 110 { 111 UNIMPLEMENTED; 112 } 113 114 115 /* Function 3 */ 116 void 117 __stdcall 118 Opnum3NotUsedOnWire(void) 119 { 120 UNIMPLEMENTED; 121 } 122 123 124 /* Function 4 */ 125 void 126 __stdcall 127 Opnum4NotUsedOnWire(void) 128 { 129 UNIMPLEMENTED; 130 } 131 132 /* Function 5 */ 133 void 134 __stdcall 135 Opnum5NotUsedOnWire(void) 136 { 137 UNIMPLEMENTED; 138 } 139 140 141 /* Function 6 */ 142 void 143 __stdcall 144 Opnum6NotUsedOnWire(void) 145 { 146 UNIMPLEMENTED; 147 } 148 149 150 /* Function 7 */ 151 void 152 __stdcall 153 Opnum7NotUsedOnWire(void) 154 { 155 UNIMPLEMENTED; 156 } 157 158 159 /* Function 8 */ 160 NET_API_STATUS 161 __stdcall 162 NetrConnectionEnum( 163 SRVSVC_HANDLE ServerName, 164 WCHAR *Qualifier, 165 LPCONNECT_ENUM_STRUCT InfoStruct, 166 DWORD PreferedMaximumLength, 167 DWORD *TotalEntries, 168 DWORD *ResumeHandle) 169 { 170 UNIMPLEMENTED; 171 return 0; 172 } 173 174 175 /* Function 9 */ 176 NET_API_STATUS 177 __stdcall 178 NetrFileEnum( 179 SRVSVC_HANDLE ServerName, 180 WCHAR *BasePath, 181 WCHAR *UserName, 182 PFILE_ENUM_STRUCT InfoStruct, 183 DWORD PreferedMaximumLength, 184 DWORD *TotalEntries, 185 DWORD *ResumeHandle) 186 { 187 UNIMPLEMENTED; 188 return 0; 189 } 190 191 192 /* Function 10 */ 193 NET_API_STATUS 194 __stdcall 195 NetrFileGetInfo( 196 SRVSVC_HANDLE ServerName, 197 DWORD FileId, 198 DWORD Level, 199 LPFILE_INFO InfoStruct) 200 { 201 UNIMPLEMENTED; 202 return 0; 203 } 204 205 206 /* Function 11 */ 207 NET_API_STATUS 208 __stdcall 209 NetrFileClose( 210 SRVSVC_HANDLE ServerName, 211 DWORD FileId) 212 { 213 UNIMPLEMENTED; 214 return 0; 215 } 216 217 218 /* Function 12 */ 219 NET_API_STATUS 220 __stdcall 221 NetrSessionEnum( 222 SRVSVC_HANDLE ServerName, 223 WCHAR *ClientName, 224 WCHAR *UserName, 225 PSESSION_ENUM_STRUCT InfoStruct, 226 DWORD PreferedMaximumLength, 227 DWORD *TotalEntries, 228 DWORD *ResumeHandle) 229 { 230 UNIMPLEMENTED; 231 return 0; 232 } 233 234 235 /* Function 13 */ 236 NET_API_STATUS 237 __stdcall 238 NetrSessionDel( 239 SRVSVC_HANDLE ServerName, 240 WCHAR *ClientName, 241 WCHAR *UserName) 242 { 243 UNIMPLEMENTED; 244 return ERROR_CALL_NOT_IMPLEMENTED; 245 } 246 247 248 /* Function 14 */ 249 NET_API_STATUS 250 __stdcall 251 NetrShareAdd( 252 SRVSVC_HANDLE ServerName, 253 DWORD Level, 254 LPSHARE_INFO InfoStruct, 255 DWORD *ParmErr) 256 { 257 UNIMPLEMENTED; 258 return ERROR_CALL_NOT_IMPLEMENTED; 259 } 260 261 262 /* Function 15 */ 263 NET_API_STATUS 264 __stdcall 265 NetrShareEnum( 266 SRVSVC_HANDLE ServerName, 267 LPSHARE_ENUM_STRUCT InfoStruct, 268 DWORD PreferedMaximumLength, 269 DWORD *TotalEntries, 270 DWORD *ResumeHandle) 271 { 272 UNIMPLEMENTED; 273 return ERROR_CALL_NOT_IMPLEMENTED; 274 } 275 276 277 /* Function 16 */ 278 NET_API_STATUS 279 __stdcall 280 NetrShareGetInfo( 281 SRVSVC_HANDLE ServerName, 282 WCHAR *NetName, 283 DWORD Level, 284 LPSHARE_INFO InfoStruct) 285 { 286 UNIMPLEMENTED; 287 return ERROR_CALL_NOT_IMPLEMENTED; 288 } 289 290 291 /* Function 17 */ 292 NET_API_STATUS 293 __stdcall 294 NetrShareSetInfo( 295 SRVSVC_HANDLE ServerName, 296 WCHAR *NetName, 297 DWORD Level, 298 LPSHARE_INFO ShareInfo, 299 DWORD *ParmErr) 300 { 301 UNIMPLEMENTED; 302 return ERROR_CALL_NOT_IMPLEMENTED; 303 } 304 305 306 /* Function 18 */ 307 NET_API_STATUS 308 __stdcall 309 NetrShareDel( 310 SRVSVC_HANDLE ServerName, 311 WCHAR *NetName, 312 DWORD Reserved) 313 { 314 UNIMPLEMENTED; 315 return ERROR_CALL_NOT_IMPLEMENTED; 316 } 317 318 319 /* Function 19 */ 320 NET_API_STATUS 321 __stdcall 322 NetrShareDelSticky( 323 SRVSVC_HANDLE ServerName, 324 WCHAR *NetName, 325 DWORD Reserved) 326 { 327 UNIMPLEMENTED; 328 return ERROR_CALL_NOT_IMPLEMENTED; 329 } 330 331 332 /* Function 20 */ 333 NET_API_STATUS 334 __stdcall 335 NetrShareCheck( 336 SRVSVC_HANDLE ServerName, 337 WCHAR *Device, 338 DWORD *Type) 339 { 340 UNIMPLEMENTED; 341 return ERROR_CALL_NOT_IMPLEMENTED; 342 } 343 344 345 /* Function 21 */ 346 NET_API_STATUS 347 __stdcall 348 NetrServerGetInfo( 349 SRVSVC_HANDLE ServerName, 350 DWORD Level, 351 LPSERVER_INFO InfoStruct) 352 { 353 UNIMPLEMENTED; 354 return ERROR_CALL_NOT_IMPLEMENTED; 355 } 356 357 358 /* Function 22 */ 359 NET_API_STATUS 360 __stdcall 361 NetrServerSetInfo( 362 SRVSVC_HANDLE ServerName, 363 DWORD Level, 364 LPSERVER_INFO ServerInfo, 365 DWORD *ParmErr) 366 { 367 UNIMPLEMENTED; 368 return ERROR_CALL_NOT_IMPLEMENTED; 369 } 370 371 372 /* Function 23 */ 373 NET_API_STATUS 374 __stdcall 375 NetrServerDiskEnum( 376 SRVSVC_HANDLE ServerName, 377 DWORD Level, 378 DISK_ENUM_CONTAINER *DiskInfoStruct, 379 DWORD PreferedMaximumLength, 380 DWORD *TotalEntries, 381 DWORD *ResumeHandle) 382 { 383 UNIMPLEMENTED; 384 return ERROR_CALL_NOT_IMPLEMENTED; 385 } 386 387 388 /* Function 24 */ 389 NET_API_STATUS 390 __stdcall 391 NetrServerStatisticsGet( 392 SRVSVC_HANDLE ServerName, 393 WCHAR *Service, 394 DWORD Level, 395 DWORD Options, 396 LPSTAT_SERVER_0 *InfoStruct) 397 { 398 PSTAT_SERVER_0 pStatBuffer; 399 400 TRACE("NetrServerStatisticsGet(%p %p %lu 0x%lx %p)\n", 401 ServerName, Service, Level, Options, InfoStruct); 402 403 if (Level != 0) 404 return ERROR_INVALID_LEVEL; 405 406 if (Options != 0) 407 return ERROR_INVALID_PARAMETER; 408 409 pStatBuffer = midl_user_allocate(sizeof(STAT_SERVER_0)); 410 if (pStatBuffer == NULL) 411 return ERROR_NOT_ENOUGH_MEMORY; 412 413 ZeroMemory(pStatBuffer, sizeof(STAT_SERVER_0)); 414 415 // FIXME: Return the actual statistcs data! 416 417 *InfoStruct = pStatBuffer; 418 419 return NERR_Success; 420 } 421 422 423 /* Function 25 */ 424 NET_API_STATUS 425 __stdcall 426 NetrServerTransportAdd( 427 SRVSVC_HANDLE ServerName, 428 DWORD Level, 429 LPSERVER_TRANSPORT_INFO_0 Buffer) 430 { 431 UNIMPLEMENTED; 432 return ERROR_CALL_NOT_IMPLEMENTED; 433 } 434 435 436 /* Function 26 */ 437 NET_API_STATUS 438 __stdcall 439 NetrServerTransportEnum( 440 SRVSVC_HANDLE ServerName, 441 LPSERVER_XPORT_ENUM_STRUCT InfoStruct, 442 DWORD PreferedMaximumLength, 443 DWORD *TotalEntries, 444 DWORD *ResumeHandle) 445 { 446 UNIMPLEMENTED; 447 return ERROR_CALL_NOT_IMPLEMENTED; 448 } 449 450 451 /* Function 27 */ 452 NET_API_STATUS 453 __stdcall 454 NetrServerTransportDel( 455 SRVSVC_HANDLE ServerName, 456 DWORD Level, 457 LPSERVER_TRANSPORT_INFO_0 Buffer) 458 { 459 UNIMPLEMENTED; 460 return ERROR_CALL_NOT_IMPLEMENTED; 461 } 462 463 464 /* Function 28 */ 465 NET_API_STATUS 466 __stdcall 467 NetrRemoteTOD( 468 SRVSVC_HANDLE ServerName, 469 LPTIME_OF_DAY_INFO *BufferPtr) 470 { 471 SYSTEMTIME SystemTime; 472 LARGE_INTEGER Time; 473 TIME_ZONE_INFORMATION TimeZoneInfo; 474 DWORD TimeZoneId; 475 LPTIME_OF_DAY_INFO lpTod; 476 477 TRACE("NetrRemoteTOD(%p %p)\n", ServerName, BufferPtr); 478 479 *BufferPtr = midl_user_allocate(sizeof(TIME_OF_DAY_INFO)); 480 if (*BufferPtr == NULL) 481 return ERROR_NOT_ENOUGH_MEMORY; 482 483 lpTod = *BufferPtr; 484 485 /* Set the seconds since 1970 */ 486 NtQuerySystemTime(&Time); 487 RtlTimeToSecondsSince1970(&Time, 488 &lpTod->tod_elapsedt); 489 490 /* Set the tick count */ 491 lpTod->tod_msecs = GetTickCount(); 492 493 /* Set the timezone */ 494 TimeZoneId = GetTimeZoneInformation(&TimeZoneInfo); 495 496 switch (TimeZoneId) 497 { 498 case TIME_ZONE_ID_UNKNOWN: 499 lpTod->tod_timezone = TimeZoneInfo.Bias; 500 break; 501 502 case TIME_ZONE_ID_STANDARD: 503 lpTod->tod_timezone = TimeZoneInfo.Bias + TimeZoneInfo.StandardBias; 504 break; 505 506 case TIME_ZONE_ID_DAYLIGHT: 507 lpTod->tod_timezone = TimeZoneInfo.Bias + TimeZoneInfo.DaylightBias; 508 break; 509 510 default: 511 lpTod->tod_timezone = 0; 512 } 513 514 /* Set the ??? */ 515 lpTod->tod_tinterval = 310; 516 517 /* Set the date and time */ 518 GetSystemTime(&SystemTime); 519 lpTod->tod_hours = SystemTime.wHour; 520 lpTod->tod_mins = SystemTime.wMinute; 521 lpTod->tod_secs = SystemTime.wSecond; 522 lpTod->tod_hunds = SystemTime.wMilliseconds / 10; 523 lpTod->tod_day = SystemTime.wDay; 524 lpTod->tod_month = SystemTime.wMonth; 525 lpTod->tod_year = SystemTime.wYear; 526 lpTod->tod_weekday = SystemTime.wDayOfWeek; 527 528 return NERR_Success; 529 } 530 531 532 /* Function 29 */ 533 void 534 __stdcall 535 Opnum29NotUsedOnWire(void) 536 { 537 UNIMPLEMENTED; 538 } 539 540 541 /* Function 30 */ 542 NET_API_STATUS 543 __stdcall 544 NetprPathType( 545 SRVSVC_HANDLE ServerName, 546 WCHAR *PathName, 547 DWORD *PathType, 548 DWORD Flags) 549 { 550 UNIMPLEMENTED; 551 return ERROR_CALL_NOT_IMPLEMENTED; 552 } 553 554 555 /* Function 31 */ 556 NET_API_STATUS 557 __stdcall 558 NetprPathCanonicalize( 559 SRVSVC_HANDLE ServerName, 560 WCHAR *PathName, 561 unsigned char *Outbuf, 562 DWORD OutbufLen, 563 WCHAR *Prefix, 564 DWORD *PathType, 565 DWORD Flags) 566 { 567 UNIMPLEMENTED; 568 return ERROR_CALL_NOT_IMPLEMENTED; 569 } 570 571 572 /* Function 32 */ 573 long 574 __stdcall 575 NetprPathCompare( 576 SRVSVC_HANDLE ServerName, 577 WCHAR *PathName1, 578 WCHAR *PathName2, 579 DWORD PathType, 580 DWORD Flags) 581 { 582 UNIMPLEMENTED; 583 return ERROR_CALL_NOT_IMPLEMENTED; 584 } 585 586 587 /* Function 33 */ 588 NET_API_STATUS 589 __stdcall 590 NetprNameValidate( 591 SRVSVC_HANDLE ServerName, 592 WCHAR * Name, 593 DWORD NameType, 594 DWORD Flags) 595 { 596 UNIMPLEMENTED; 597 return ERROR_CALL_NOT_IMPLEMENTED; 598 } 599 600 601 /* Function 34 */ 602 NET_API_STATUS 603 __stdcall 604 NetprNameCanonicalize( 605 SRVSVC_HANDLE ServerName, 606 WCHAR *Name, 607 WCHAR *Outbuf, 608 DWORD OutbufLen, 609 DWORD NameType, 610 DWORD Flags) 611 { 612 UNIMPLEMENTED; 613 return ERROR_CALL_NOT_IMPLEMENTED; 614 } 615 616 617 /* Function 35 */ 618 long 619 __stdcall 620 NetprNameCompare( 621 SRVSVC_HANDLE ServerName, 622 WCHAR *Name1, 623 WCHAR *Name2, 624 DWORD NameType, 625 DWORD Flags) 626 { 627 UNIMPLEMENTED; 628 return ERROR_CALL_NOT_IMPLEMENTED; 629 } 630 631 632 /* Function 36 */ 633 NET_API_STATUS 634 __stdcall 635 NetrShareEnumSticky( 636 SRVSVC_HANDLE ServerName, 637 LPSHARE_ENUM_STRUCT InfoStruct, 638 DWORD PreferedMaximumLength, 639 DWORD *TotalEntries, 640 DWORD *ResumeHandle) 641 { 642 UNIMPLEMENTED; 643 return ERROR_CALL_NOT_IMPLEMENTED; 644 } 645 646 647 /* Function 37 */ 648 NET_API_STATUS 649 __stdcall 650 NetrShareDelStart( 651 SRVSVC_HANDLE ServerName, 652 WCHAR *NetName, 653 DWORD Reserved, 654 PSHARE_DEL_HANDLE ContextHandle) 655 { 656 UNIMPLEMENTED; 657 return ERROR_CALL_NOT_IMPLEMENTED; 658 } 659 660 661 /* Function 38 */ 662 NET_API_STATUS 663 __stdcall 664 NetrShareDelCommit( 665 PSHARE_DEL_HANDLE ContextHandle) 666 { 667 UNIMPLEMENTED; 668 return ERROR_CALL_NOT_IMPLEMENTED; 669 } 670 671 672 /* Function 39 */ 673 DWORD 674 __stdcall 675 NetrpGetFileSecurity( 676 SRVSVC_HANDLE ServerName, 677 WCHAR *ShareName, 678 WCHAR *lpFileName, 679 SECURITY_INFORMATION RequestedInformation, 680 PADT_SECURITY_DESCRIPTOR *SecurityDescriptor) 681 { 682 UNIMPLEMENTED; 683 return ERROR_CALL_NOT_IMPLEMENTED; 684 } 685 686 687 /* Function 40 */ 688 DWORD 689 __stdcall 690 NetrpSetFileSecurity( 691 SRVSVC_HANDLE ServerName, 692 WCHAR *ShareName, 693 WCHAR *lpFileName, 694 SECURITY_INFORMATION SecurityInformation, 695 PADT_SECURITY_DESCRIPTOR SecurityDescriptor) 696 { 697 UNIMPLEMENTED; 698 return ERROR_CALL_NOT_IMPLEMENTED; 699 } 700 701 702 /* Function 41 */ 703 NET_API_STATUS 704 __stdcall 705 NetrServerTransportAddEx( 706 SRVSVC_HANDLE ServerName, 707 DWORD Level, 708 LPTRANSPORT_INFO Buffer) 709 { 710 UNIMPLEMENTED; 711 return ERROR_CALL_NOT_IMPLEMENTED; 712 } 713 714 715 /* Function 42 */ 716 void 717 __stdcall 718 Opnum42NotUsedOnWire(void) 719 { 720 UNIMPLEMENTED; 721 } 722 723 724 /* Function 43 */ 725 NET_API_STATUS 726 __stdcall 727 NetrDfsGetVersion( 728 SRVSVC_HANDLE ServerName, 729 DWORD *Version) 730 { 731 UNIMPLEMENTED; 732 return ERROR_CALL_NOT_IMPLEMENTED; 733 } 734 735 736 /* Function 44 */ 737 NET_API_STATUS 738 __stdcall 739 NetrDfsCreateLocalPartition( 740 SRVSVC_HANDLE ServerName, 741 WCHAR *ShareName, 742 GUID *EntryUid, 743 WCHAR *EntryPrefix, 744 WCHAR *ShortName, 745 LPNET_DFS_ENTRY_ID_CONTAINER RelationInfo, 746 int Force) 747 { 748 UNIMPLEMENTED; 749 return ERROR_CALL_NOT_IMPLEMENTED; 750 } 751 752 753 /* Function 45 */ 754 NET_API_STATUS 755 __stdcall 756 NetrDfsDeleteLocalPartition( 757 SRVSVC_HANDLE ServerName, 758 GUID *Uid, 759 WCHAR *Prefix) 760 { 761 UNIMPLEMENTED; 762 return ERROR_CALL_NOT_IMPLEMENTED; 763 } 764 765 766 /* Function 46 */ 767 NET_API_STATUS 768 __stdcall 769 NetrDfsSetLocalVolumeState( 770 SRVSVC_HANDLE ServerName, 771 GUID *Uid, 772 WCHAR *Prefix, 773 unsigned long State) 774 { 775 UNIMPLEMENTED; 776 return ERROR_CALL_NOT_IMPLEMENTED; 777 } 778 779 780 /* Function 47 */ 781 void 782 __stdcall 783 Opnum47NotUsedOnWire(void) 784 { 785 UNIMPLEMENTED; 786 } 787 788 789 /* Function 48 */ 790 NET_API_STATUS 791 __stdcall 792 NetrDfsCreateExitPoint( 793 SRVSVC_HANDLE ServerName, 794 GUID *Uid, 795 WCHAR *Prefix, 796 unsigned long Type, 797 DWORD ShortPrefixLen, 798 WCHAR *ShortPrefix) 799 { 800 UNIMPLEMENTED; 801 return ERROR_CALL_NOT_IMPLEMENTED; 802 } 803 804 805 /* Function 49 */ 806 NET_API_STATUS 807 __stdcall 808 NetrDfsDeleteExitPoint( 809 SRVSVC_HANDLE ServerName, 810 GUID *Uid, 811 WCHAR *Prefix, 812 unsigned long Type) 813 { 814 UNIMPLEMENTED; 815 return ERROR_CALL_NOT_IMPLEMENTED; 816 } 817 818 819 /* Function 50 */ 820 NET_API_STATUS 821 __stdcall 822 NetrDfsModifyPrefix( 823 SRVSVC_HANDLE ServerName, 824 GUID *Uid, 825 WCHAR *Prefix) 826 { 827 UNIMPLEMENTED; 828 return ERROR_CALL_NOT_IMPLEMENTED; 829 } 830 831 832 /* Function 51 */ 833 NET_API_STATUS 834 __stdcall 835 NetrDfsFixLocalVolume( 836 SRVSVC_HANDLE ServerName, 837 WCHAR *VolumeName, 838 unsigned long EntryType, 839 unsigned long ServiceType, 840 WCHAR *StgId, 841 GUID *EntryUid, 842 WCHAR *EntryPrefix, 843 LPNET_DFS_ENTRY_ID_CONTAINER RelationInfo, 844 unsigned long CreateDisposition) 845 { 846 UNIMPLEMENTED; 847 return ERROR_CALL_NOT_IMPLEMENTED; 848 } 849 850 851 /* Function 52 */ 852 NET_API_STATUS 853 __stdcall 854 NetrDfsManagerReportSiteInfo( 855 SRVSVC_HANDLE ServerName, 856 LPDFS_SITELIST_INFO *ppSiteInfo) 857 { 858 UNIMPLEMENTED; 859 return ERROR_CALL_NOT_IMPLEMENTED; 860 } 861 862 863 /* Function 53 */ 864 NET_API_STATUS 865 __stdcall 866 NetrServerTransportDelEx( 867 SRVSVC_HANDLE ServerName, 868 DWORD Level, 869 LPTRANSPORT_INFO Buffer) 870 { 871 UNIMPLEMENTED; 872 return ERROR_CALL_NOT_IMPLEMENTED; 873 } 874 875 /* EOF */ 876