Reactos
at master 992 lines 20 kB view raw
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 36WINE_DEFAULT_DEBUG_CHANNEL(srvsvc); 37 38/* FUNCTIONS *****************************************************************/ 39 40DWORD 41WINAPI 42RpcThreadRoutine( 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 71void __RPC_FAR * __RPC_USER midl_user_allocate(SIZE_T len) 72{ 73 return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len); 74} 75 76 77void __RPC_USER midl_user_free(void __RPC_FAR * ptr) 78{ 79 HeapFree(GetProcessHeap(), 0, ptr); 80} 81 82 83void __RPC_USER SHARE_DEL_HANDLE_rundown(SHARE_DEL_HANDLE hClientHandle) 84{ 85} 86 87 88/* Function 0 */ 89void 90__stdcall 91Opnum0NotUsedOnWire(void) 92{ 93 UNIMPLEMENTED; 94} 95 96 97/* Function 1 */ 98void 99__stdcall 100Opnum1NotUsedOnWire(void) 101{ 102 UNIMPLEMENTED; 103} 104 105 106/* Function 2 */ 107void 108__stdcall 109Opnum2NotUsedOnWire(void) 110{ 111 UNIMPLEMENTED; 112} 113 114 115/* Function 3 */ 116void 117__stdcall 118Opnum3NotUsedOnWire(void) 119{ 120 UNIMPLEMENTED; 121} 122 123 124/* Function 4 */ 125void 126__stdcall 127Opnum4NotUsedOnWire(void) 128{ 129 UNIMPLEMENTED; 130} 131 132/* Function 5 */ 133void 134__stdcall 135Opnum5NotUsedOnWire(void) 136{ 137 UNIMPLEMENTED; 138} 139 140 141/* Function 6 */ 142void 143__stdcall 144Opnum6NotUsedOnWire(void) 145{ 146 UNIMPLEMENTED; 147} 148 149 150/* Function 7 */ 151void 152__stdcall 153Opnum7NotUsedOnWire(void) 154{ 155 UNIMPLEMENTED; 156} 157 158 159/* Function 8 */ 160NET_API_STATUS 161__stdcall 162NetrConnectionEnum( 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 */ 176NET_API_STATUS 177__stdcall 178NetrFileEnum( 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 */ 193NET_API_STATUS 194__stdcall 195NetrFileGetInfo( 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 */ 207NET_API_STATUS 208__stdcall 209NetrFileClose( 210 SRVSVC_HANDLE ServerName, 211 DWORD FileId) 212{ 213 UNIMPLEMENTED; 214 return 0; 215} 216 217 218/* Function 12 */ 219NET_API_STATUS 220__stdcall 221NetrSessionEnum( 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 */ 236NET_API_STATUS 237__stdcall 238NetrSessionDel( 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 */ 249NET_API_STATUS 250__stdcall 251NetrShareAdd( 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 */ 263NET_API_STATUS 264__stdcall 265NetrShareEnum( 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 */ 278NET_API_STATUS 279__stdcall 280NetrShareGetInfo( 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 */ 292NET_API_STATUS 293__stdcall 294NetrShareSetInfo( 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 */ 307NET_API_STATUS 308__stdcall 309NetrShareDel( 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 */ 320NET_API_STATUS 321__stdcall 322NetrShareDelSticky( 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 */ 333NET_API_STATUS 334__stdcall 335NetrShareCheck( 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 */ 346NET_API_STATUS 347__stdcall 348NetrServerGetInfo( 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 */ 440NET_API_STATUS 441__stdcall 442NetrServerSetInfo( 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 */ 454NET_API_STATUS 455__stdcall 456NetrServerDiskEnum( 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 */ 470NET_API_STATUS 471__stdcall 472NetrServerStatisticsGet( 473 SRVSVC_HANDLE ServerName, 474 WCHAR *Service, 475 DWORD Level, 476 DWORD Options, 477 LPSTAT_SERVER_0 *InfoStruct) 478{ 479 SYSTEM_TIMEOFDAY_INFORMATION TimeOfDayInfo; 480 PSTAT_SERVER_0 pStatBuffer = NULL; 481 NTSTATUS Status; 482 483 TRACE("NetrServerStatisticsGet(%p %p %lu 0x%lx %p)\n", 484 ServerName, Service, Level, Options, InfoStruct); 485 486 if (Level != 0) 487 return ERROR_INVALID_LEVEL; 488 489 if (Options != 0) 490 return ERROR_INVALID_PARAMETER; 491 492 pStatBuffer = midl_user_allocate(sizeof(STAT_SERVER_0)); 493 if (pStatBuffer == NULL) 494 return ERROR_NOT_ENOUGH_MEMORY; 495 496 ZeroMemory(pStatBuffer, sizeof(STAT_SERVER_0)); 497 498 /* Query the boot time */ 499 Status = NtQuerySystemInformation(SystemTimeOfDayInformation, 500 &TimeOfDayInfo, 501 sizeof(TimeOfDayInfo), 502 NULL); 503 if (NT_SUCCESS(Status)) 504 { 505 ULONG Seconds = 0; 506 if (RtlTimeToSecondsSince1970(&TimeOfDayInfo.BootTime, &Seconds)) 507 { 508 pStatBuffer->sts0_start = Seconds; 509 } 510 } 511 512 // FIXME: Return the actual statistcs data! 513 514 *InfoStruct = pStatBuffer; 515 516 return NERR_Success; 517} 518 519 520/* Function 25 */ 521NET_API_STATUS 522__stdcall 523NetrServerTransportAdd( 524 SRVSVC_HANDLE ServerName, 525 DWORD Level, 526 LPSERVER_TRANSPORT_INFO_0 Buffer) 527{ 528 UNIMPLEMENTED; 529 return ERROR_CALL_NOT_IMPLEMENTED; 530} 531 532 533/* Function 26 */ 534NET_API_STATUS 535__stdcall 536NetrServerTransportEnum( 537 SRVSVC_HANDLE ServerName, 538 LPSERVER_XPORT_ENUM_STRUCT InfoStruct, 539 DWORD PreferedMaximumLength, 540 DWORD *TotalEntries, 541 DWORD *ResumeHandle) 542{ 543 UNIMPLEMENTED; 544 return ERROR_CALL_NOT_IMPLEMENTED; 545} 546 547 548/* Function 27 */ 549NET_API_STATUS 550__stdcall 551NetrServerTransportDel( 552 SRVSVC_HANDLE ServerName, 553 DWORD Level, 554 LPSERVER_TRANSPORT_INFO_0 Buffer) 555{ 556 UNIMPLEMENTED; 557 return ERROR_CALL_NOT_IMPLEMENTED; 558} 559 560 561/* Function 28 */ 562NET_API_STATUS 563__stdcall 564NetrRemoteTOD( 565 SRVSVC_HANDLE ServerName, 566 LPTIME_OF_DAY_INFO *BufferPtr) 567{ 568 SYSTEMTIME SystemTime; 569 LARGE_INTEGER Time; 570 TIME_ZONE_INFORMATION TimeZoneInfo; 571 DWORD TimeZoneId; 572 LPTIME_OF_DAY_INFO lpTod; 573 574 TRACE("NetrRemoteTOD(%p %p)\n", ServerName, BufferPtr); 575 576 *BufferPtr = midl_user_allocate(sizeof(TIME_OF_DAY_INFO)); 577 if (*BufferPtr == NULL) 578 return ERROR_NOT_ENOUGH_MEMORY; 579 580 lpTod = *BufferPtr; 581 582 /* Set the seconds since 1970 */ 583 NtQuerySystemTime(&Time); 584 RtlTimeToSecondsSince1970(&Time, 585 &lpTod->tod_elapsedt); 586 587 /* Set the tick count */ 588 lpTod->tod_msecs = GetTickCount(); 589 590 /* Set the timezone */ 591 TimeZoneId = GetTimeZoneInformation(&TimeZoneInfo); 592 593 switch (TimeZoneId) 594 { 595 case TIME_ZONE_ID_UNKNOWN: 596 lpTod->tod_timezone = TimeZoneInfo.Bias; 597 break; 598 599 case TIME_ZONE_ID_STANDARD: 600 lpTod->tod_timezone = TimeZoneInfo.Bias + TimeZoneInfo.StandardBias; 601 break; 602 603 case TIME_ZONE_ID_DAYLIGHT: 604 lpTod->tod_timezone = TimeZoneInfo.Bias + TimeZoneInfo.DaylightBias; 605 break; 606 607 default: 608 lpTod->tod_timezone = 0; 609 } 610 611 /* Set the ??? */ 612 lpTod->tod_tinterval = 310; 613 614 /* Set the date and time */ 615 GetSystemTime(&SystemTime); 616 lpTod->tod_hours = SystemTime.wHour; 617 lpTod->tod_mins = SystemTime.wMinute; 618 lpTod->tod_secs = SystemTime.wSecond; 619 lpTod->tod_hunds = SystemTime.wMilliseconds / 10; 620 lpTod->tod_day = SystemTime.wDay; 621 lpTod->tod_month = SystemTime.wMonth; 622 lpTod->tod_year = SystemTime.wYear; 623 lpTod->tod_weekday = SystemTime.wDayOfWeek; 624 625 return NERR_Success; 626} 627 628 629/* Function 29 - Not used on wire */ 630NET_API_STATUS 631__stdcall 632NetrServerSetServiceBits( 633 SRVSVC_HANDLE ServerName, 634 WCHAR *Transport, 635 DWORD ServiceBits, 636 DWORD UpdateImmediately) 637{ 638 FIXME("NetrServerSetServiceBits(%p %s %lx %lu)\n", 639 ServerName, debugstr_w(Transport), ServiceBits, UpdateImmediately); 640 641 /* FIXME: Support Transport */ 642 /* FIXME: Support UpdateImmdiately */ 643 644 dwServiceBits = ServiceBits; 645 646 return NERR_Success; 647} 648 649 650/* Function 30 */ 651NET_API_STATUS 652__stdcall 653NetprPathType( 654 SRVSVC_HANDLE ServerName, 655 WCHAR *PathName, 656 DWORD *PathType, 657 DWORD Flags) 658{ 659 UNIMPLEMENTED; 660 return ERROR_CALL_NOT_IMPLEMENTED; 661} 662 663 664/* Function 31 */ 665NET_API_STATUS 666__stdcall 667NetprPathCanonicalize( 668 SRVSVC_HANDLE ServerName, 669 WCHAR *PathName, 670 unsigned char *Outbuf, 671 DWORD OutbufLen, 672 WCHAR *Prefix, 673 DWORD *PathType, 674 DWORD Flags) 675{ 676 UNIMPLEMENTED; 677 return ERROR_CALL_NOT_IMPLEMENTED; 678} 679 680 681/* Function 32 */ 682long 683__stdcall 684NetprPathCompare( 685 SRVSVC_HANDLE ServerName, 686 WCHAR *PathName1, 687 WCHAR *PathName2, 688 DWORD PathType, 689 DWORD Flags) 690{ 691 UNIMPLEMENTED; 692 return ERROR_CALL_NOT_IMPLEMENTED; 693} 694 695 696/* Function 33 */ 697NET_API_STATUS 698__stdcall 699NetprNameValidate( 700 SRVSVC_HANDLE ServerName, 701 WCHAR * Name, 702 DWORD NameType, 703 DWORD Flags) 704{ 705 UNIMPLEMENTED; 706 return ERROR_CALL_NOT_IMPLEMENTED; 707} 708 709 710/* Function 34 */ 711NET_API_STATUS 712__stdcall 713NetprNameCanonicalize( 714 SRVSVC_HANDLE ServerName, 715 WCHAR *Name, 716 WCHAR *Outbuf, 717 DWORD OutbufLen, 718 DWORD NameType, 719 DWORD Flags) 720{ 721 UNIMPLEMENTED; 722 return ERROR_CALL_NOT_IMPLEMENTED; 723} 724 725 726/* Function 35 */ 727long 728__stdcall 729NetprNameCompare( 730 SRVSVC_HANDLE ServerName, 731 WCHAR *Name1, 732 WCHAR *Name2, 733 DWORD NameType, 734 DWORD Flags) 735{ 736 UNIMPLEMENTED; 737 return ERROR_CALL_NOT_IMPLEMENTED; 738} 739 740 741/* Function 36 */ 742NET_API_STATUS 743__stdcall 744NetrShareEnumSticky( 745 SRVSVC_HANDLE ServerName, 746 LPSHARE_ENUM_STRUCT InfoStruct, 747 DWORD PreferedMaximumLength, 748 DWORD *TotalEntries, 749 DWORD *ResumeHandle) 750{ 751 UNIMPLEMENTED; 752 return ERROR_CALL_NOT_IMPLEMENTED; 753} 754 755 756/* Function 37 */ 757NET_API_STATUS 758__stdcall 759NetrShareDelStart( 760 SRVSVC_HANDLE ServerName, 761 WCHAR *NetName, 762 DWORD Reserved, 763 PSHARE_DEL_HANDLE ContextHandle) 764{ 765 UNIMPLEMENTED; 766 return ERROR_CALL_NOT_IMPLEMENTED; 767} 768 769 770/* Function 38 */ 771NET_API_STATUS 772__stdcall 773NetrShareDelCommit( 774 PSHARE_DEL_HANDLE ContextHandle) 775{ 776 UNIMPLEMENTED; 777 return ERROR_CALL_NOT_IMPLEMENTED; 778} 779 780 781/* Function 39 */ 782DWORD 783__stdcall 784NetrpGetFileSecurity( 785 SRVSVC_HANDLE ServerName, 786 WCHAR *ShareName, 787 WCHAR *lpFileName, 788 SECURITY_INFORMATION RequestedInformation, 789 PADT_SECURITY_DESCRIPTOR *SecurityDescriptor) 790{ 791 UNIMPLEMENTED; 792 return ERROR_CALL_NOT_IMPLEMENTED; 793} 794 795 796/* Function 40 */ 797DWORD 798__stdcall 799NetrpSetFileSecurity( 800 SRVSVC_HANDLE ServerName, 801 WCHAR *ShareName, 802 WCHAR *lpFileName, 803 SECURITY_INFORMATION SecurityInformation, 804 PADT_SECURITY_DESCRIPTOR SecurityDescriptor) 805{ 806 UNIMPLEMENTED; 807 return ERROR_CALL_NOT_IMPLEMENTED; 808} 809 810 811/* Function 41 */ 812NET_API_STATUS 813__stdcall 814NetrServerTransportAddEx( 815 SRVSVC_HANDLE ServerName, 816 DWORD Level, 817 LPTRANSPORT_INFO Buffer) 818{ 819 UNIMPLEMENTED; 820 return ERROR_CALL_NOT_IMPLEMENTED; 821} 822 823 824/* Function 42 - Not used on wire */ 825NET_API_STATUS 826__stdcall 827NetrServerSetServiceBitsEx( 828 SRVSVC_HANDLE ServerName, 829 WCHAR *EmulatedServer, 830 WCHAR *Transport, 831 DWORD ServiceBitsOfInterest, 832 DWORD ServiceBits, 833 DWORD UpdateImmediately) 834{ 835 UNIMPLEMENTED; 836 return ERROR_CALL_NOT_IMPLEMENTED; 837} 838 839 840/* Function 43 */ 841NET_API_STATUS 842__stdcall 843NetrDfsGetVersion( 844 SRVSVC_HANDLE ServerName, 845 DWORD *Version) 846{ 847 UNIMPLEMENTED; 848 return ERROR_CALL_NOT_IMPLEMENTED; 849} 850 851 852/* Function 44 */ 853NET_API_STATUS 854__stdcall 855NetrDfsCreateLocalPartition( 856 SRVSVC_HANDLE ServerName, 857 WCHAR *ShareName, 858 GUID *EntryUid, 859 WCHAR *EntryPrefix, 860 WCHAR *ShortName, 861 LPNET_DFS_ENTRY_ID_CONTAINER RelationInfo, 862 int Force) 863{ 864 UNIMPLEMENTED; 865 return ERROR_CALL_NOT_IMPLEMENTED; 866} 867 868 869/* Function 45 */ 870NET_API_STATUS 871__stdcall 872NetrDfsDeleteLocalPartition( 873 SRVSVC_HANDLE ServerName, 874 GUID *Uid, 875 WCHAR *Prefix) 876{ 877 UNIMPLEMENTED; 878 return ERROR_CALL_NOT_IMPLEMENTED; 879} 880 881 882/* Function 46 */ 883NET_API_STATUS 884__stdcall 885NetrDfsSetLocalVolumeState( 886 SRVSVC_HANDLE ServerName, 887 GUID *Uid, 888 WCHAR *Prefix, 889 unsigned long State) 890{ 891 UNIMPLEMENTED; 892 return ERROR_CALL_NOT_IMPLEMENTED; 893} 894 895 896/* Function 47 - Not used on wire */ 897NET_API_STATUS 898__stdcall 899NetrDfsSetServerInfo(void) 900{ 901 UNIMPLEMENTED; 902 return ERROR_CALL_NOT_IMPLEMENTED; 903} 904 905 906/* Function 48 */ 907NET_API_STATUS 908__stdcall 909NetrDfsCreateExitPoint( 910 SRVSVC_HANDLE ServerName, 911 GUID *Uid, 912 WCHAR *Prefix, 913 unsigned long Type, 914 DWORD ShortPrefixLen, 915 WCHAR *ShortPrefix) 916{ 917 UNIMPLEMENTED; 918 return ERROR_CALL_NOT_IMPLEMENTED; 919} 920 921 922/* Function 49 */ 923NET_API_STATUS 924__stdcall 925NetrDfsDeleteExitPoint( 926 SRVSVC_HANDLE ServerName, 927 GUID *Uid, 928 WCHAR *Prefix, 929 unsigned long Type) 930{ 931 UNIMPLEMENTED; 932 return ERROR_CALL_NOT_IMPLEMENTED; 933} 934 935 936/* Function 50 */ 937NET_API_STATUS 938__stdcall 939NetrDfsModifyPrefix( 940 SRVSVC_HANDLE ServerName, 941 GUID *Uid, 942 WCHAR *Prefix) 943{ 944 UNIMPLEMENTED; 945 return ERROR_CALL_NOT_IMPLEMENTED; 946} 947 948 949/* Function 51 */ 950NET_API_STATUS 951__stdcall 952NetrDfsFixLocalVolume( 953 SRVSVC_HANDLE ServerName, 954 WCHAR *VolumeName, 955 unsigned long EntryType, 956 unsigned long ServiceType, 957 WCHAR *StgId, 958 GUID *EntryUid, 959 WCHAR *EntryPrefix, 960 LPNET_DFS_ENTRY_ID_CONTAINER RelationInfo, 961 unsigned long CreateDisposition) 962{ 963 UNIMPLEMENTED; 964 return ERROR_CALL_NOT_IMPLEMENTED; 965} 966 967 968/* Function 52 */ 969NET_API_STATUS 970__stdcall 971NetrDfsManagerReportSiteInfo( 972 SRVSVC_HANDLE ServerName, 973 LPDFS_SITELIST_INFO *ppSiteInfo) 974{ 975 UNIMPLEMENTED; 976 return ERROR_CALL_NOT_IMPLEMENTED; 977} 978 979 980/* Function 53 */ 981NET_API_STATUS 982__stdcall 983NetrServerTransportDelEx( 984 SRVSVC_HANDLE ServerName, 985 DWORD Level, 986 LPTRANSPORT_INFO Buffer) 987{ 988 UNIMPLEMENTED; 989 return ERROR_CALL_NOT_IMPLEMENTED; 990} 991 992/* EOF */