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 WCHAR szComputerName[MAX_COMPUTERNAME_LENGTH + 1]; 354 DWORD dwComputerNameLength, dwSize; 355 PSERVER_INFO pServerInfo = NULL; 356 OSVERSIONINFOW VersionInfo; 357 358 TRACE("NetrServerGetInfo(%p %lu %p)\n", 359 ServerName, Level, InfoStruct); 360 361 dwComputerNameLength = MAX_COMPUTERNAME_LENGTH + 1; 362 GetComputerNameW(szComputerName, &dwComputerNameLength); 363 dwComputerNameLength++; /* include NULL terminator */ 364 365 VersionInfo.dwOSVersionInfoSize = sizeof(VersionInfo); 366 GetVersionExW(&VersionInfo); 367 368 switch (Level) 369 { 370 case 100: 371 dwSize = sizeof(SERVER_INFO_100) + 372 dwComputerNameLength * sizeof(WCHAR); 373 pServerInfo = midl_user_allocate(dwSize); 374 if (pServerInfo == NULL) 375 return ERROR_NOT_ENOUGH_MEMORY; 376 377 pServerInfo->ServerInfo100.sv100_platform_id = PLATFORM_ID_NT; 378 pServerInfo->ServerInfo100.sv100_name = (LPWSTR)((ULONG_PTR)pServerInfo + sizeof(SERVER_INFO_100)); 379 wcscpy(pServerInfo->ServerInfo100.sv100_name, szComputerName); 380 381 *InfoStruct = pServerInfo; 382 break; 383 384 case 101: 385 dwSize = sizeof(SERVER_INFO_101) + 386 dwComputerNameLength * sizeof(WCHAR); 387 pServerInfo = midl_user_allocate(dwSize); 388 if (pServerInfo == NULL) 389 return ERROR_NOT_ENOUGH_MEMORY; 390 391 pServerInfo->ServerInfo101.sv101_platform_id = PLATFORM_ID_NT; 392 pServerInfo->ServerInfo101.sv101_name = (LPWSTR)((ULONG_PTR)pServerInfo + sizeof(SERVER_INFO_101)); 393 wcscpy(pServerInfo->ServerInfo101.sv101_name, szComputerName); 394 395 pServerInfo->ServerInfo101.sv101_version_major = VersionInfo.dwMajorVersion; 396 pServerInfo->ServerInfo101.sv101_version_minor = VersionInfo.dwMinorVersion; 397 pServerInfo->ServerInfo101.sv101_type = dwServiceBits | SV_TYPE_NT; 398 pServerInfo->ServerInfo101.sv101_comment = NULL; /* FIXME */ 399 400 *InfoStruct = pServerInfo; 401 break; 402 403 case 102: 404 dwSize = sizeof(SERVER_INFO_102) + 405 dwComputerNameLength * sizeof(WCHAR); 406 pServerInfo = midl_user_allocate(dwSize); 407 if (pServerInfo == NULL) 408 return ERROR_NOT_ENOUGH_MEMORY; 409 410 pServerInfo->ServerInfo102.sv102_platform_id = PLATFORM_ID_NT; 411 pServerInfo->ServerInfo102.sv102_name = (LPWSTR)((ULONG_PTR)pServerInfo + sizeof(SERVER_INFO_102)); 412 wcscpy(pServerInfo->ServerInfo102.sv102_name, szComputerName); 413 414 pServerInfo->ServerInfo102.sv102_version_major = VersionInfo.dwMajorVersion; 415 pServerInfo->ServerInfo102.sv102_version_minor = VersionInfo.dwMinorVersion; 416 pServerInfo->ServerInfo102.sv102_type = dwServiceBits | SV_TYPE_NT; 417 pServerInfo->ServerInfo102.sv102_comment = NULL; /* FIXME */ 418 419 pServerInfo->ServerInfo102.sv102_users = 0; /* FIXME */ 420 pServerInfo->ServerInfo102.sv102_disc = 0; /* FIXME */ 421 pServerInfo->ServerInfo102.sv102_hidden = SV_VISIBLE; /* FIXME */ 422 pServerInfo->ServerInfo102.sv102_announce = 0; /* FIXME */ 423 pServerInfo->ServerInfo102.sv102_anndelta = 0; /* FIXME */ 424 pServerInfo->ServerInfo102.sv102_licenses = 0; /* FIXME */ 425 pServerInfo->ServerInfo102.sv102_userpath = NULL; /* FIXME */ 426 427 *InfoStruct = pServerInfo; 428 break; 429 430 default: 431 FIXME("level %d unimplemented\n", Level); 432 return ERROR_INVALID_LEVEL; 433 } 434 435 return NERR_Success; 436 } 437 438 439 /* Function 22 */ 440 NET_API_STATUS 441 __stdcall 442 NetrServerSetInfo( 443 SRVSVC_HANDLE ServerName, 444 DWORD Level, 445 LPSERVER_INFO ServerInfo, 446 DWORD *ParmErr) 447 { 448 UNIMPLEMENTED; 449 return ERROR_CALL_NOT_IMPLEMENTED; 450 } 451 452 453 /* Function 23 */ 454 NET_API_STATUS 455 __stdcall 456 NetrServerDiskEnum( 457 SRVSVC_HANDLE ServerName, 458 DWORD Level, 459 DISK_ENUM_CONTAINER *DiskInfoStruct, 460 DWORD PreferedMaximumLength, 461 DWORD *TotalEntries, 462 DWORD *ResumeHandle) 463 { 464 UNIMPLEMENTED; 465 return ERROR_CALL_NOT_IMPLEMENTED; 466 } 467 468 469 /* Function 24 */ 470 NET_API_STATUS 471 __stdcall 472 NetrServerStatisticsGet( 473 SRVSVC_HANDLE ServerName, 474 WCHAR *Service, 475 DWORD Level, 476 DWORD Options, 477 LPSTAT_SERVER_0 *InfoStruct) 478 { 479 PSTAT_SERVER_0 pStatBuffer; 480 481 TRACE("NetrServerStatisticsGet(%p %p %lu 0x%lx %p)\n", 482 ServerName, Service, Level, Options, InfoStruct); 483 484 if (Level != 0) 485 return ERROR_INVALID_LEVEL; 486 487 if (Options != 0) 488 return ERROR_INVALID_PARAMETER; 489 490 pStatBuffer = midl_user_allocate(sizeof(STAT_SERVER_0)); 491 if (pStatBuffer == NULL) 492 return ERROR_NOT_ENOUGH_MEMORY; 493 494 ZeroMemory(pStatBuffer, sizeof(STAT_SERVER_0)); 495 496 // FIXME: Return the actual statistcs data! 497 498 *InfoStruct = pStatBuffer; 499 500 return NERR_Success; 501 } 502 503 504 /* Function 25 */ 505 NET_API_STATUS 506 __stdcall 507 NetrServerTransportAdd( 508 SRVSVC_HANDLE ServerName, 509 DWORD Level, 510 LPSERVER_TRANSPORT_INFO_0 Buffer) 511 { 512 UNIMPLEMENTED; 513 return ERROR_CALL_NOT_IMPLEMENTED; 514 } 515 516 517 /* Function 26 */ 518 NET_API_STATUS 519 __stdcall 520 NetrServerTransportEnum( 521 SRVSVC_HANDLE ServerName, 522 LPSERVER_XPORT_ENUM_STRUCT InfoStruct, 523 DWORD PreferedMaximumLength, 524 DWORD *TotalEntries, 525 DWORD *ResumeHandle) 526 { 527 UNIMPLEMENTED; 528 return ERROR_CALL_NOT_IMPLEMENTED; 529 } 530 531 532 /* Function 27 */ 533 NET_API_STATUS 534 __stdcall 535 NetrServerTransportDel( 536 SRVSVC_HANDLE ServerName, 537 DWORD Level, 538 LPSERVER_TRANSPORT_INFO_0 Buffer) 539 { 540 UNIMPLEMENTED; 541 return ERROR_CALL_NOT_IMPLEMENTED; 542 } 543 544 545 /* Function 28 */ 546 NET_API_STATUS 547 __stdcall 548 NetrRemoteTOD( 549 SRVSVC_HANDLE ServerName, 550 LPTIME_OF_DAY_INFO *BufferPtr) 551 { 552 SYSTEMTIME SystemTime; 553 LARGE_INTEGER Time; 554 TIME_ZONE_INFORMATION TimeZoneInfo; 555 DWORD TimeZoneId; 556 LPTIME_OF_DAY_INFO lpTod; 557 558 TRACE("NetrRemoteTOD(%p %p)\n", ServerName, BufferPtr); 559 560 *BufferPtr = midl_user_allocate(sizeof(TIME_OF_DAY_INFO)); 561 if (*BufferPtr == NULL) 562 return ERROR_NOT_ENOUGH_MEMORY; 563 564 lpTod = *BufferPtr; 565 566 /* Set the seconds since 1970 */ 567 NtQuerySystemTime(&Time); 568 RtlTimeToSecondsSince1970(&Time, 569 &lpTod->tod_elapsedt); 570 571 /* Set the tick count */ 572 lpTod->tod_msecs = GetTickCount(); 573 574 /* Set the timezone */ 575 TimeZoneId = GetTimeZoneInformation(&TimeZoneInfo); 576 577 switch (TimeZoneId) 578 { 579 case TIME_ZONE_ID_UNKNOWN: 580 lpTod->tod_timezone = TimeZoneInfo.Bias; 581 break; 582 583 case TIME_ZONE_ID_STANDARD: 584 lpTod->tod_timezone = TimeZoneInfo.Bias + TimeZoneInfo.StandardBias; 585 break; 586 587 case TIME_ZONE_ID_DAYLIGHT: 588 lpTod->tod_timezone = TimeZoneInfo.Bias + TimeZoneInfo.DaylightBias; 589 break; 590 591 default: 592 lpTod->tod_timezone = 0; 593 } 594 595 /* Set the ??? */ 596 lpTod->tod_tinterval = 310; 597 598 /* Set the date and time */ 599 GetSystemTime(&SystemTime); 600 lpTod->tod_hours = SystemTime.wHour; 601 lpTod->tod_mins = SystemTime.wMinute; 602 lpTod->tod_secs = SystemTime.wSecond; 603 lpTod->tod_hunds = SystemTime.wMilliseconds / 10; 604 lpTod->tod_day = SystemTime.wDay; 605 lpTod->tod_month = SystemTime.wMonth; 606 lpTod->tod_year = SystemTime.wYear; 607 lpTod->tod_weekday = SystemTime.wDayOfWeek; 608 609 return NERR_Success; 610 } 611 612 613 /* Function 29 - Not used on wire */ 614 NET_API_STATUS 615 __stdcall 616 NetrServerSetServiceBits( 617 SRVSVC_HANDLE ServerName, 618 WCHAR *Transport, 619 DWORD ServiceBits, 620 DWORD UpdateImmediately) 621 { 622 FIXME("NetrServerSetServiceBits(%p %s %lx %lu)\n", 623 ServerName, debugstr_w(Transport), ServiceBits, UpdateImmediately); 624 625 /* FIXME: Support Transport */ 626 /* FIXME: Support UpdateImmdiately */ 627 628 dwServiceBits = ServiceBits; 629 630 return NERR_Success; 631 } 632 633 634 /* Function 30 */ 635 NET_API_STATUS 636 __stdcall 637 NetprPathType( 638 SRVSVC_HANDLE ServerName, 639 WCHAR *PathName, 640 DWORD *PathType, 641 DWORD Flags) 642 { 643 UNIMPLEMENTED; 644 return ERROR_CALL_NOT_IMPLEMENTED; 645 } 646 647 648 /* Function 31 */ 649 NET_API_STATUS 650 __stdcall 651 NetprPathCanonicalize( 652 SRVSVC_HANDLE ServerName, 653 WCHAR *PathName, 654 unsigned char *Outbuf, 655 DWORD OutbufLen, 656 WCHAR *Prefix, 657 DWORD *PathType, 658 DWORD Flags) 659 { 660 UNIMPLEMENTED; 661 return ERROR_CALL_NOT_IMPLEMENTED; 662 } 663 664 665 /* Function 32 */ 666 long 667 __stdcall 668 NetprPathCompare( 669 SRVSVC_HANDLE ServerName, 670 WCHAR *PathName1, 671 WCHAR *PathName2, 672 DWORD PathType, 673 DWORD Flags) 674 { 675 UNIMPLEMENTED; 676 return ERROR_CALL_NOT_IMPLEMENTED; 677 } 678 679 680 /* Function 33 */ 681 NET_API_STATUS 682 __stdcall 683 NetprNameValidate( 684 SRVSVC_HANDLE ServerName, 685 WCHAR * Name, 686 DWORD NameType, 687 DWORD Flags) 688 { 689 UNIMPLEMENTED; 690 return ERROR_CALL_NOT_IMPLEMENTED; 691 } 692 693 694 /* Function 34 */ 695 NET_API_STATUS 696 __stdcall 697 NetprNameCanonicalize( 698 SRVSVC_HANDLE ServerName, 699 WCHAR *Name, 700 WCHAR *Outbuf, 701 DWORD OutbufLen, 702 DWORD NameType, 703 DWORD Flags) 704 { 705 UNIMPLEMENTED; 706 return ERROR_CALL_NOT_IMPLEMENTED; 707 } 708 709 710 /* Function 35 */ 711 long 712 __stdcall 713 NetprNameCompare( 714 SRVSVC_HANDLE ServerName, 715 WCHAR *Name1, 716 WCHAR *Name2, 717 DWORD NameType, 718 DWORD Flags) 719 { 720 UNIMPLEMENTED; 721 return ERROR_CALL_NOT_IMPLEMENTED; 722 } 723 724 725 /* Function 36 */ 726 NET_API_STATUS 727 __stdcall 728 NetrShareEnumSticky( 729 SRVSVC_HANDLE ServerName, 730 LPSHARE_ENUM_STRUCT InfoStruct, 731 DWORD PreferedMaximumLength, 732 DWORD *TotalEntries, 733 DWORD *ResumeHandle) 734 { 735 UNIMPLEMENTED; 736 return ERROR_CALL_NOT_IMPLEMENTED; 737 } 738 739 740 /* Function 37 */ 741 NET_API_STATUS 742 __stdcall 743 NetrShareDelStart( 744 SRVSVC_HANDLE ServerName, 745 WCHAR *NetName, 746 DWORD Reserved, 747 PSHARE_DEL_HANDLE ContextHandle) 748 { 749 UNIMPLEMENTED; 750 return ERROR_CALL_NOT_IMPLEMENTED; 751 } 752 753 754 /* Function 38 */ 755 NET_API_STATUS 756 __stdcall 757 NetrShareDelCommit( 758 PSHARE_DEL_HANDLE ContextHandle) 759 { 760 UNIMPLEMENTED; 761 return ERROR_CALL_NOT_IMPLEMENTED; 762 } 763 764 765 /* Function 39 */ 766 DWORD 767 __stdcall 768 NetrpGetFileSecurity( 769 SRVSVC_HANDLE ServerName, 770 WCHAR *ShareName, 771 WCHAR *lpFileName, 772 SECURITY_INFORMATION RequestedInformation, 773 PADT_SECURITY_DESCRIPTOR *SecurityDescriptor) 774 { 775 UNIMPLEMENTED; 776 return ERROR_CALL_NOT_IMPLEMENTED; 777 } 778 779 780 /* Function 40 */ 781 DWORD 782 __stdcall 783 NetrpSetFileSecurity( 784 SRVSVC_HANDLE ServerName, 785 WCHAR *ShareName, 786 WCHAR *lpFileName, 787 SECURITY_INFORMATION SecurityInformation, 788 PADT_SECURITY_DESCRIPTOR SecurityDescriptor) 789 { 790 UNIMPLEMENTED; 791 return ERROR_CALL_NOT_IMPLEMENTED; 792 } 793 794 795 /* Function 41 */ 796 NET_API_STATUS 797 __stdcall 798 NetrServerTransportAddEx( 799 SRVSVC_HANDLE ServerName, 800 DWORD Level, 801 LPTRANSPORT_INFO Buffer) 802 { 803 UNIMPLEMENTED; 804 return ERROR_CALL_NOT_IMPLEMENTED; 805 } 806 807 808 /* Function 42 - Not used on wire */ 809 NET_API_STATUS 810 __stdcall 811 NetrServerSetServiceBitsEx( 812 SRVSVC_HANDLE ServerName, 813 WCHAR *EmulatedServer, 814 WCHAR *Transport, 815 DWORD ServiceBitsOfInterest, 816 DWORD ServiceBits, 817 DWORD UpdateImmediately) 818 { 819 UNIMPLEMENTED; 820 return ERROR_CALL_NOT_IMPLEMENTED; 821 } 822 823 824 /* Function 43 */ 825 NET_API_STATUS 826 __stdcall 827 NetrDfsGetVersion( 828 SRVSVC_HANDLE ServerName, 829 DWORD *Version) 830 { 831 UNIMPLEMENTED; 832 return ERROR_CALL_NOT_IMPLEMENTED; 833 } 834 835 836 /* Function 44 */ 837 NET_API_STATUS 838 __stdcall 839 NetrDfsCreateLocalPartition( 840 SRVSVC_HANDLE ServerName, 841 WCHAR *ShareName, 842 GUID *EntryUid, 843 WCHAR *EntryPrefix, 844 WCHAR *ShortName, 845 LPNET_DFS_ENTRY_ID_CONTAINER RelationInfo, 846 int Force) 847 { 848 UNIMPLEMENTED; 849 return ERROR_CALL_NOT_IMPLEMENTED; 850 } 851 852 853 /* Function 45 */ 854 NET_API_STATUS 855 __stdcall 856 NetrDfsDeleteLocalPartition( 857 SRVSVC_HANDLE ServerName, 858 GUID *Uid, 859 WCHAR *Prefix) 860 { 861 UNIMPLEMENTED; 862 return ERROR_CALL_NOT_IMPLEMENTED; 863 } 864 865 866 /* Function 46 */ 867 NET_API_STATUS 868 __stdcall 869 NetrDfsSetLocalVolumeState( 870 SRVSVC_HANDLE ServerName, 871 GUID *Uid, 872 WCHAR *Prefix, 873 unsigned long State) 874 { 875 UNIMPLEMENTED; 876 return ERROR_CALL_NOT_IMPLEMENTED; 877 } 878 879 880 /* Function 47 - Not used on wire */ 881 NET_API_STATUS 882 __stdcall 883 NetrDfsSetServerInfo(void) 884 { 885 UNIMPLEMENTED; 886 return ERROR_CALL_NOT_IMPLEMENTED; 887 } 888 889 890 /* Function 48 */ 891 NET_API_STATUS 892 __stdcall 893 NetrDfsCreateExitPoint( 894 SRVSVC_HANDLE ServerName, 895 GUID *Uid, 896 WCHAR *Prefix, 897 unsigned long Type, 898 DWORD ShortPrefixLen, 899 WCHAR *ShortPrefix) 900 { 901 UNIMPLEMENTED; 902 return ERROR_CALL_NOT_IMPLEMENTED; 903 } 904 905 906 /* Function 49 */ 907 NET_API_STATUS 908 __stdcall 909 NetrDfsDeleteExitPoint( 910 SRVSVC_HANDLE ServerName, 911 GUID *Uid, 912 WCHAR *Prefix, 913 unsigned long Type) 914 { 915 UNIMPLEMENTED; 916 return ERROR_CALL_NOT_IMPLEMENTED; 917 } 918 919 920 /* Function 50 */ 921 NET_API_STATUS 922 __stdcall 923 NetrDfsModifyPrefix( 924 SRVSVC_HANDLE ServerName, 925 GUID *Uid, 926 WCHAR *Prefix) 927 { 928 UNIMPLEMENTED; 929 return ERROR_CALL_NOT_IMPLEMENTED; 930 } 931 932 933 /* Function 51 */ 934 NET_API_STATUS 935 __stdcall 936 NetrDfsFixLocalVolume( 937 SRVSVC_HANDLE ServerName, 938 WCHAR *VolumeName, 939 unsigned long EntryType, 940 unsigned long ServiceType, 941 WCHAR *StgId, 942 GUID *EntryUid, 943 WCHAR *EntryPrefix, 944 LPNET_DFS_ENTRY_ID_CONTAINER RelationInfo, 945 unsigned long CreateDisposition) 946 { 947 UNIMPLEMENTED; 948 return ERROR_CALL_NOT_IMPLEMENTED; 949 } 950 951 952 /* Function 52 */ 953 NET_API_STATUS 954 __stdcall 955 NetrDfsManagerReportSiteInfo( 956 SRVSVC_HANDLE ServerName, 957 LPDFS_SITELIST_INFO *ppSiteInfo) 958 { 959 UNIMPLEMENTED; 960 return ERROR_CALL_NOT_IMPLEMENTED; 961 } 962 963 964 /* Function 53 */ 965 NET_API_STATUS 966 __stdcall 967 NetrServerTransportDelEx( 968 SRVSVC_HANDLE ServerName, 969 DWORD Level, 970 LPTRANSPORT_INFO Buffer) 971 { 972 UNIMPLEMENTED; 973 return ERROR_CALL_NOT_IMPLEMENTED; 974 } 975 976 /* EOF */ 977