2 * COPYRIGHT: See COPYING in the top level directory
4 * FILE: reactos/dll/win32/netapi32/srvsvc.c
5 * PURPOSE: Server service interface code
6 * PROGRAMMERS: Eric Kohl <eric.kohl@reactos.org>
9 /* INCLUDES ******************************************************************/
14 WINE_DEFAULT_DEBUG_CHANNEL(netapi32
);
16 /* FUNCTIONS *****************************************************************/
19 SRVSVC_HANDLE_bind(SRVSVC_HANDLE pszSystemName
)
21 handle_t hBinding
= NULL
;
22 LPWSTR pszStringBinding
;
25 TRACE("SRVSVC_HANDLE_bind() called\n");
27 status
= RpcStringBindingComposeW(NULL
,
29 (RPC_WSTR
)pszSystemName
,
35 TRACE("RpcStringBindingCompose returned 0x%x\n", status
);
39 /* Set the binding handle that will be used to bind to the server. */
40 status
= RpcBindingFromStringBindingW(pszStringBinding
,
44 TRACE("RpcBindingFromStringBinding returned 0x%x\n", status
);
47 status
= RpcStringFreeW(&pszStringBinding
);
50 // TRACE("RpcStringFree returned 0x%x\n", status);
58 SRVSVC_HANDLE_unbind(SRVSVC_HANDLE pszSystemName
,
63 TRACE("SRVSVC_HANDLE_unbind() called\n");
65 status
= RpcBindingFree(&hBinding
);
68 TRACE("RpcBindingFree returned 0x%x\n", status
);
76 _In_ LMSTR servername
,
79 NET_API_STATUS status
;
81 TRACE("NetFileClose(%s %lu)\n",
82 debugstr_w(servername
), fileid
);
86 status
= NetrFileClose(servername
,
89 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
91 status
= I_RpcMapWin32Status(RpcExceptionCode());
102 _In_ LMSTR servername
,
106 _Out_ LPBYTE
*bufptr
,
107 _In_ DWORD prefmaxlen
,
108 _Out_ LPDWORD entriesread
,
109 _Out_ LPDWORD totalentries
,
110 _Inout_ PDWORD_PTR resume_handle
)
112 FILE_ENUM_STRUCT EnumStruct
;
113 FILE_INFO_2_CONTAINER Level2Container
= {0, NULL
};
114 FILE_INFO_3_CONTAINER Level3Container
= {0, NULL
};
115 NET_API_STATUS status
;
117 TRACE("NetFileEnum(%s %s %s %lu %p %lu %p %p %p)\n",
118 debugstr_w(servername
), debugstr_w(basepath
), debugstr_w(username
),
119 level
, bufptr
, prefmaxlen
, entriesread
, totalentries
, resume_handle
);
121 if (level
!= 2 && level
!= 3)
122 return ERROR_INVALID_LEVEL
;
124 EnumStruct
.Level
= level
;
128 EnumStruct
.FileInfo
.Level2
= &Level2Container
;
132 EnumStruct
.FileInfo
.Level3
= &Level3Container
;
138 status
= NetrFileEnum(servername
,
144 (PDWORD
)resume_handle
);
149 if (EnumStruct
.FileInfo
.Level2
->Buffer
!= NULL
)
151 *bufptr
= (LPBYTE
)EnumStruct
.FileInfo
.Level2
->Buffer
;
152 *entriesread
= EnumStruct
.FileInfo
.Level2
->EntriesRead
;
157 if (EnumStruct
.FileInfo
.Level3
->Buffer
!= NULL
)
159 *bufptr
= (LPBYTE
)EnumStruct
.FileInfo
.Level3
->Buffer
;
160 *entriesread
= EnumStruct
.FileInfo
.Level3
->EntriesRead
;
165 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
167 status
= I_RpcMapWin32Status(RpcExceptionCode());
178 _In_ LMSTR servername
,
181 _Out_ LPBYTE
*bufptr
)
183 NET_API_STATUS status
;
185 TRACE("NetFileGetInfo(%s %lu %lu %p)\n",
186 debugstr_w(servername
), fileid
, level
, bufptr
);
192 status
= NetrFileGetInfo(servername
,
195 (LPFILE_INFO
)bufptr
);
197 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
199 status
= I_RpcMapWin32Status(RpcExceptionCode());
210 _In_ LPCWSTR UncServerName
,
211 _Out_ LPBYTE
*BufferPtr
)
213 NET_API_STATUS status
;
215 TRACE("NetRemoteTOD(%s %p)\n",
216 debugstr_w(UncServerName
), BufferPtr
);
222 status
= NetrRemoteTOD((SRVSVC_HANDLE
)UncServerName
,
223 (LPTIME_OF_DAY_INFO
*)BufferPtr
);
225 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
227 status
= I_RpcMapWin32Status(RpcExceptionCode());
238 _In_ LMSTR servername
,
240 _Out_ LPBYTE
*bufptr
,
241 _In_ DWORD prefmaxlen
,
242 _Out_ LPDWORD entriesread
,
243 _Out_ LPDWORD totalentries
,
244 _Inout_ LPDWORD resume_handle
)
246 DISK_ENUM_CONTAINER EnumContainer
;
247 NET_API_STATUS status
;
249 TRACE("NetServerDiskEnum(%s %lu %p %lu %p %p %p)\n",
250 debugstr_w(servername
), level
, bufptr
, prefmaxlen
,
251 entriesread
, totalentries
, resume_handle
);
253 EnumContainer
.EntriesRead
= 0;
254 EnumContainer
.Buffer
= NULL
;
258 status
= NetrServerDiskEnum(servername
,
265 if (EnumContainer
.Buffer
!= NULL
)
267 *bufptr
= (LPBYTE
)EnumContainer
.Buffer
;
274 if (EnumContainer
.EntriesRead
> 0)
276 *entriesread
= EnumContainer
.EntriesRead
- 1;
283 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
285 status
= I_RpcMapWin32Status(RpcExceptionCode());
301 NET_API_STATUS status
;
303 TRACE("NetServerGetInfo(%s %lu %p)\n",
304 debugstr_w(servername
), level
, bufptr
);
310 status
= NetrServerGetInfo(servername
,
312 (LPSERVER_INFO
)bufptr
);
314 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
316 status
= I_RpcMapWin32Status(RpcExceptionCode());
328 _In_ LPWSTR servername
,
331 _Out_ LPDWORD parm_err
)
333 NET_API_STATUS status
;
335 TRACE("NetServerSetInfo(%s %lu %p %p)\n",
336 debugstr_w(servername
), level
, buf
, parm_err
);
340 status
= NetrServerSetInfo(servername
,
345 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
347 status
= I_RpcMapWin32Status(RpcExceptionCode());
357 NetServerTransportAdd(
358 _In_ LPWSTR servername
,
362 NET_API_STATUS status
;
364 TRACE("NetServerTransportAdd(%s %lu %p)\n",
365 debugstr_w(servername
), level
, bufptr
);
369 status
= NetrServerTransportAdd(servername
,
371 (LPSERVER_TRANSPORT_INFO_0
)bufptr
);
373 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
375 status
= I_RpcMapWin32Status(RpcExceptionCode());
385 NetServerTransportAddEx(
386 _In_ LPWSTR servername
,
390 NET_API_STATUS status
;
392 TRACE("NetServerTransportAddEx(%s %lu %p)\n",
393 debugstr_w(servername
), level
, bufptr
);
397 status
= NetrServerTransportAddEx(servername
,
399 (LPTRANSPORT_INFO
)bufptr
);
401 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
403 status
= I_RpcMapWin32Status(RpcExceptionCode());
413 NetServerTransportDel(
414 _In_ LPWSTR servername
,
418 NET_API_STATUS status
;
420 TRACE("NetServerTransportDel(%s %lu %p)\n",
421 debugstr_w(servername
), level
, bufptr
);
425 status
= NetrServerTransportDel(servername
,
427 (LPSERVER_TRANSPORT_INFO_0
)bufptr
);
429 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
431 status
= I_RpcMapWin32Status(RpcExceptionCode());
441 NetServerTransportEnum(
442 _In_ LPWSTR servername
,
444 _Out_ LPBYTE
*bufptr
,
445 _In_ DWORD prefmaxlen
,
446 _Out_ LPDWORD entriesread
,
447 _Out_ LPDWORD totalentries
,
448 _Inout_ LPDWORD resume_handle
)
450 SERVER_XPORT_ENUM_STRUCT EnumStruct
;
451 SERVER_XPORT_INFO_0_CONTAINER Level0Container
= {0, NULL
};
452 SERVER_XPORT_INFO_1_CONTAINER Level1Container
= {0, NULL
};
453 NET_API_STATUS status
;
455 TRACE("NetServerTransportEnum(%s %lu %p %lu %p %p %p)\n",
456 debugstr_w(servername
), level
, bufptr
, prefmaxlen
,
457 entriesread
, totalentries
, resume_handle
);
459 EnumStruct
.Level
= level
;
463 EnumStruct
.XportInfo
.Level0
= &Level0Container
;
467 EnumStruct
.XportInfo
.Level1
= &Level1Container
;
473 status
= NetrServerTransportEnum(servername
,
482 if (EnumStruct
.XportInfo
.Level0
->Buffer
!= NULL
)
484 *bufptr
= (LPBYTE
)EnumStruct
.XportInfo
.Level0
->Buffer
;
485 *entriesread
= EnumStruct
.XportInfo
.Level0
->EntriesRead
;
490 if (EnumStruct
.XportInfo
.Level1
->Buffer
!= NULL
)
492 *bufptr
= (LPBYTE
)EnumStruct
.XportInfo
.Level1
->Buffer
;
493 *entriesread
= EnumStruct
.XportInfo
.Level1
->EntriesRead
;
498 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
500 status
= I_RpcMapWin32Status(RpcExceptionCode());
511 _In_ LMSTR servername
,
512 _In_ LMSTR UncClientName
,
515 NET_API_STATUS status
;
517 TRACE("NetSessionDel(%s %s %s)\n",
518 debugstr_w(servername
), debugstr_w(UncClientName
), debugstr_w(username
));
522 status
= NetrSessionDel(servername
,
526 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
528 status
= I_RpcMapWin32Status(RpcExceptionCode());
539 _In_ LMSTR servername
,
540 _In_ LMSTR UncClientName
,
543 _Out_ LPBYTE
*bufptr
,
544 _In_ DWORD prefmaxlen
,
545 _Out_ LPDWORD entriesread
,
546 _Out_ LPDWORD totalentries
,
547 _Inout_ LPDWORD resume_handle
)
549 SESSION_ENUM_STRUCT EnumStruct
;
550 SESSION_INFO_0_CONTAINER Level0Container
= {0, NULL
};
551 SESSION_INFO_1_CONTAINER Level1Container
= {0, NULL
};
552 SESSION_INFO_2_CONTAINER Level2Container
= {0, NULL
};
553 SESSION_INFO_10_CONTAINER Level10Container
= {0, NULL
};
554 SESSION_INFO_502_CONTAINER Level502Container
= {0, NULL
};
555 NET_API_STATUS status
;
557 TRACE("NetSessionEnum(%s %s %s %lu %p %lu %p %p %p)\n",
558 debugstr_w(servername
), debugstr_w(UncClientName
), debugstr_w(username
),
559 level
, bufptr
, prefmaxlen
, entriesread
, totalentries
, resume_handle
);
561 if (level
> 2 && level
!= 10 && level
!= 502)
562 return ERROR_INVALID_LEVEL
;
564 if (UncClientName
== NULL
|| username
== NULL
)
565 return ERROR_INVALID_PARAMETER
;
570 EnumStruct
.Level
= level
;
574 EnumStruct
.SessionInfo
.Level0
= &Level0Container
;
578 EnumStruct
.SessionInfo
.Level1
= &Level1Container
;
582 EnumStruct
.SessionInfo
.Level2
= &Level2Container
;
586 EnumStruct
.SessionInfo
.Level10
= &Level10Container
;
590 EnumStruct
.SessionInfo
.Level502
= &Level502Container
;
596 status
= NetrSessionEnum(servername
,
607 if (EnumStruct
.SessionInfo
.Level0
->Buffer
!= NULL
)
609 *bufptr
= (LPBYTE
)EnumStruct
.SessionInfo
.Level0
->Buffer
;
610 *entriesread
= EnumStruct
.SessionInfo
.Level0
->EntriesRead
;
615 if (EnumStruct
.SessionInfo
.Level1
->Buffer
!= NULL
)
617 *bufptr
= (LPBYTE
)EnumStruct
.SessionInfo
.Level1
->Buffer
;
618 *entriesread
= EnumStruct
.SessionInfo
.Level1
->EntriesRead
;
623 if (EnumStruct
.SessionInfo
.Level2
->Buffer
!= NULL
)
625 *bufptr
= (LPBYTE
)EnumStruct
.SessionInfo
.Level2
->Buffer
;
626 *entriesread
= EnumStruct
.SessionInfo
.Level2
->EntriesRead
;
631 if (EnumStruct
.SessionInfo
.Level10
->Buffer
!= NULL
)
633 *bufptr
= (LPBYTE
)EnumStruct
.SessionInfo
.Level10
->Buffer
;
634 *entriesread
= EnumStruct
.SessionInfo
.Level10
->EntriesRead
;
639 if (EnumStruct
.SessionInfo
.Level502
->Buffer
!= NULL
)
641 *bufptr
= (LPBYTE
)EnumStruct
.SessionInfo
.Level502
->Buffer
;
642 *entriesread
= EnumStruct
.SessionInfo
.Level502
->EntriesRead
;
647 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
649 status
= I_RpcMapWin32Status(RpcExceptionCode());
660 _In_ LMSTR servername
,
661 _In_ LMSTR UncClientName
,
664 _Out_ LPBYTE
*bufptr
)
666 SESSION_ENUM_STRUCT EnumStruct
;
667 SESSION_INFO_0_CONTAINER Level0Container
= {0, NULL
};
668 SESSION_INFO_1_CONTAINER Level1Container
= {0, NULL
};
669 SESSION_INFO_2_CONTAINER Level2Container
= {0, NULL
};
670 SESSION_INFO_10_CONTAINER Level10Container
= {0, NULL
};
671 DWORD dwTotalEntries
;
672 NET_API_STATUS status
;
674 TRACE("NetSessionGetInfo(%s %s %s %lu %p)\n",
675 debugstr_w(servername
), debugstr_w(UncClientName
),
676 debugstr_w(username
), level
, bufptr
);
678 if (level
> 2 && level
!= 10)
679 return ERROR_INVALID_LEVEL
;
681 if (UncClientName
== NULL
|| username
== NULL
)
682 return ERROR_INVALID_PARAMETER
;
686 EnumStruct
.Level
= level
;
690 EnumStruct
.SessionInfo
.Level0
= &Level0Container
;
694 EnumStruct
.SessionInfo
.Level1
= &Level1Container
;
698 EnumStruct
.SessionInfo
.Level2
= &Level2Container
;
702 EnumStruct
.SessionInfo
.Level10
= &Level10Container
;
708 status
= NetrSessionEnum(servername
,
712 MAX_PREFERRED_LENGTH
, //(DWORD)-1,
719 if (EnumStruct
.SessionInfo
.Level0
->Buffer
!= NULL
)
720 *bufptr
= (LPBYTE
)EnumStruct
.SessionInfo
.Level0
->Buffer
;
724 if (EnumStruct
.SessionInfo
.Level1
->Buffer
!= NULL
)
725 *bufptr
= (LPBYTE
)EnumStruct
.SessionInfo
.Level1
->Buffer
;
729 if (EnumStruct
.SessionInfo
.Level2
->Buffer
!= NULL
)
730 *bufptr
= (LPBYTE
)EnumStruct
.SessionInfo
.Level2
->Buffer
;
734 if (EnumStruct
.SessionInfo
.Level10
->Buffer
!= NULL
)
735 *bufptr
= (LPBYTE
)EnumStruct
.SessionInfo
.Level10
->Buffer
;
739 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
741 status
= I_RpcMapWin32Status(RpcExceptionCode());
752 _In_ LMSTR servername
,
755 _Out_ LPDWORD parm_err
)
757 NET_API_STATUS status
;
759 TRACE("NetShareAdd(%s %lu %p %p)\n",
760 debugstr_w(servername
), level
, buf
, parm_err
);
762 if (level
!= 2 && level
!= 502 && level
!= 503)
763 return ERROR_INVALID_LEVEL
;
767 status
= NetrShareAdd(servername
,
772 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
774 status
= I_RpcMapWin32Status(RpcExceptionCode());
785 _In_ LMSTR servername
,
789 NET_API_STATUS status
;
791 TRACE("NetShareCheck(%s %s %p)\n",
792 debugstr_w(servername
), debugstr_w(device
), type
);
796 status
= NetrShareCheck(servername
,
800 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
802 status
= I_RpcMapWin32Status(RpcExceptionCode());
813 _In_ LMSTR servername
,
817 NET_API_STATUS status
;
819 TRACE("NetShareDel(%s %s %lu)\n",
820 debugstr_w(servername
), debugstr_w(netname
), reserved
);
822 if (netname
== NULL
|| (*netname
== 0) || reserved
!= 0)
823 return ERROR_INVALID_PARAMETER
;
827 status
= NetrShareDel(servername
,
831 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
833 status
= I_RpcMapWin32Status(RpcExceptionCode());
844 _In_ LMSTR servername
,
848 NET_API_STATUS status
;
850 TRACE("NetShareDelSticky(%s %s %lu)\n",
851 debugstr_w(servername
), debugstr_w(netname
), reserved
);
853 if (netname
== NULL
|| (*netname
== 0) || reserved
!= 0)
854 return ERROR_INVALID_PARAMETER
;
858 status
= NetrShareDelSticky(servername
,
862 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
864 status
= I_RpcMapWin32Status(RpcExceptionCode());
875 _In_ LMSTR servername
,
877 _Out_ LPBYTE
*bufptr
,
878 _In_ DWORD prefmaxlen
,
879 _Out_ LPDWORD entriesread
,
880 _Out_ LPDWORD totalentries
,
881 _Inout_ LPDWORD resume_handle
)
883 SHARE_ENUM_STRUCT EnumStruct
;
884 SHARE_INFO_0_CONTAINER Level0Container
= {0, NULL
};
885 SHARE_INFO_1_CONTAINER Level1Container
= {0, NULL
};
886 SHARE_INFO_2_CONTAINER Level2Container
= {0, NULL
};
887 SHARE_INFO_502_CONTAINER Level502Container
= {0, NULL
};
888 NET_API_STATUS status
;
890 TRACE("NetShareEnum(%s %lu %p %lu %p %p %p)\n",
891 debugstr_w(servername
), level
, bufptr
, prefmaxlen
,
892 entriesread
, totalentries
, resume_handle
);
894 if (level
> 2 && level
!= 502)
895 return ERROR_INVALID_LEVEL
;
901 EnumStruct
.Level
= level
;
905 EnumStruct
.ShareInfo
.Level0
= &Level0Container
;
909 EnumStruct
.ShareInfo
.Level1
= &Level1Container
;
913 EnumStruct
.ShareInfo
.Level2
= &Level2Container
;
917 EnumStruct
.ShareInfo
.Level502
= &Level502Container
;
923 status
= NetrShareEnum(servername
,
932 if (EnumStruct
.ShareInfo
.Level0
->Buffer
!= NULL
)
934 *bufptr
= (LPBYTE
)EnumStruct
.ShareInfo
.Level0
->Buffer
;
935 *entriesread
= EnumStruct
.ShareInfo
.Level0
->EntriesRead
;
940 if (EnumStruct
.ShareInfo
.Level1
->Buffer
!= NULL
)
942 *bufptr
= (LPBYTE
)EnumStruct
.ShareInfo
.Level1
->Buffer
;
943 *entriesread
= EnumStruct
.ShareInfo
.Level1
->EntriesRead
;
948 if (EnumStruct
.ShareInfo
.Level2
->Buffer
!= NULL
)
950 *bufptr
= (LPBYTE
)EnumStruct
.ShareInfo
.Level2
->Buffer
;
951 *entriesread
= EnumStruct
.ShareInfo
.Level2
->EntriesRead
;
956 if (EnumStruct
.ShareInfo
.Level502
->Buffer
!= NULL
)
958 *bufptr
= (LPBYTE
)EnumStruct
.ShareInfo
.Level502
->Buffer
;
959 *entriesread
= EnumStruct
.ShareInfo
.Level502
->EntriesRead
;
964 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
966 status
= I_RpcMapWin32Status(RpcExceptionCode());
977 _In_ LMSTR servername
,
979 _Out_ LPBYTE
*bufptr
,
980 _In_ DWORD prefmaxlen
,
981 _Out_ LPDWORD entriesread
,
982 _Out_ LPDWORD totalentries
,
983 _Inout_ LPDWORD resume_handle
)
985 SHARE_ENUM_STRUCT EnumStruct
;
986 SHARE_INFO_0_CONTAINER Level0Container
= {0, NULL
};
987 SHARE_INFO_1_CONTAINER Level1Container
= {0, NULL
};
988 SHARE_INFO_2_CONTAINER Level2Container
= {0, NULL
};
989 SHARE_INFO_502_CONTAINER Level502Container
= {0, NULL
};
990 NET_API_STATUS status
;
992 TRACE("NetShareEnumSticky(%s %lu %p %lu %p %p %p)\n",
993 debugstr_w(servername
), level
, bufptr
, prefmaxlen
,
994 entriesread
, totalentries
, resume_handle
);
996 if (level
> 2 && level
!= 502)
997 return ERROR_INVALID_LEVEL
;
1003 EnumStruct
.Level
= level
;
1007 EnumStruct
.ShareInfo
.Level0
= &Level0Container
;
1011 EnumStruct
.ShareInfo
.Level1
= &Level1Container
;
1015 EnumStruct
.ShareInfo
.Level2
= &Level2Container
;
1019 EnumStruct
.ShareInfo
.Level502
= &Level502Container
;
1025 status
= NetrShareEnum(servername
,
1026 (LPSHARE_ENUM_STRUCT
)&EnumStruct
,
1034 if (EnumStruct
.ShareInfo
.Level0
->Buffer
!= NULL
)
1036 *bufptr
= (LPBYTE
)EnumStruct
.ShareInfo
.Level0
->Buffer
;
1037 *entriesread
= EnumStruct
.ShareInfo
.Level0
->EntriesRead
;
1042 if (EnumStruct
.ShareInfo
.Level1
->Buffer
!= NULL
)
1044 *bufptr
= (LPBYTE
)EnumStruct
.ShareInfo
.Level1
->Buffer
;
1045 *entriesread
= EnumStruct
.ShareInfo
.Level1
->EntriesRead
;
1050 if (EnumStruct
.ShareInfo
.Level2
->Buffer
!= NULL
)
1052 *bufptr
= (LPBYTE
)EnumStruct
.ShareInfo
.Level2
->Buffer
;
1053 *entriesread
= EnumStruct
.ShareInfo
.Level2
->EntriesRead
;
1058 if (EnumStruct
.ShareInfo
.Level502
->Buffer
!= NULL
)
1060 *bufptr
= (LPBYTE
)EnumStruct
.ShareInfo
.Level502
->Buffer
;
1061 *entriesread
= EnumStruct
.ShareInfo
.Level502
->EntriesRead
;
1066 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
1068 status
= I_RpcMapWin32Status(RpcExceptionCode());
1079 _In_ LMSTR servername
,
1082 _Out_ LPBYTE
*bufptr
)
1084 NET_API_STATUS status
;
1086 TRACE("NetShareGetInfo(%s %s %lu %p)\n",
1087 debugstr_w(servername
), debugstr_w(netname
), level
, bufptr
);
1089 if (level
> 2 && level
!= 502 && level
!= 1005)
1090 return ERROR_INVALID_LEVEL
;
1092 if (netname
== NULL
|| *netname
== 0)
1093 return ERROR_INVALID_PARAMETER
;
1099 status
= NetrShareGetInfo(servername
,
1102 (LPSHARE_INFO
)bufptr
);
1104 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
1106 status
= I_RpcMapWin32Status(RpcExceptionCode());
1117 _In_ LPWSTR servername
,
1118 _In_ LPWSTR netname
,
1121 _Out_ LPDWORD parm_err
)
1123 NET_API_STATUS status
;
1125 TRACE("NetShareSetInfo(%s %s %lu %p %p)\n",
1126 debugstr_w(servername
), debugstr_w(netname
), level
, buf
, parm_err
);
1128 if (level
!= 2 && level
!= 502 && level
!= 503 && level
!= 1004 &&
1129 level
!= 1005 && level
!= 1006 && level
!= 1501)
1130 return ERROR_INVALID_LEVEL
;
1134 status
= NetrShareSetInfo(servername
,
1140 RpcExcept(EXCEPTION_EXECUTE_HANDLER
)
1142 status
= I_RpcMapWin32Status(RpcExceptionCode());