/// <summary> /// The NetrShareGetInfo method retrieves information about a particular shared resource on the server from the ShareList. /// </summary> /// <param name="ServerName">A string that identifies the server. If this parameter is NULL, the local computer is used.</param> /// <param name="NetName">The name of the share to return information for.</param> /// <param name="Level">Specifies the information level of the data. This parameter MUST be one of the following values.</param> /// <param name="InfoStruct">Its contents are determined by the value of the Level parameter, as shown in the preceding table.</param> /// <returns>The method returns 0x00000000 (NERR_Success) to indicate success; otherwise, it returns a nonzero error code.</returns> public uint NetrShareGetInfo(string ServerName, string NetName, SHARE_ENUM_STRUCT_LEVEL Level, out SHARE_INFO?InfoStruct) { /* * NET_API_STATUS NetrShareGetInfo( * [in, string, unique] SRVSVC_HANDLE ServerName, * [in, string] WCHAR* NetName, * [in] DWORD Level, * [out, switch_is(Level)] LPSHARE_INFO InfoStruct * ); */ Int3264[] paramList; uint retVal = 0; InfoStruct = null; using (SafeIntPtr pServerName = Marshal.StringToHGlobalUni(ServerName), pNetName = Marshal.StringToHGlobalUni(NetName)) { paramList = new Int3264[] { pServerName, pNetName, (uint)Level, IntPtr.Zero, // out value IntPtr.Zero // return value }; using (RpceInt3264Collection outParamList = RpceCall(paramList, (ushort)SRVS_OPNUM.NetrShareGetInfo)) { retVal = outParamList[paramList.Length - 1].ToUInt32(); if (retVal == (uint)Win32ErrorCode_32.ERROR_SUCCESS) { InfoStruct = TypeMarshal.ToStruct <SHARE_INFO>(outParamList[3], Level, null, null); } } } return(retVal); }
/// <summary> /// The NetrShareSetInfo method sets the parameters of a shared resource in a ShareList. /// </summary> /// <param name="ServerName">A string that identifies the server. If this parameter is NULL, the local computer is used.</param> /// <param name="NetName">The name of the share to return information for.</param> /// <param name="Level">Specifies the information level of the data. This parameter MUST be one of the following values.</param> /// <param name="InfoStruct">Its contents are determined by the value of the Level parameter, as shown in the preceding table. /// This parameter MUST NOT contain a null value. </param> /// <param name="ParmErr">An integer value that receives the index of the first member of the share information /// structure that caused the ERROR_INVALID_PARAMETER error, if it occurs</param> /// <returns>The method returns 0x00000000 (NERR_Success) to indicate success; otherwise, it returns a nonzero error code.</returns> public uint NetrShareSetInfo(string ServerName, string NetName, SHARE_ENUM_STRUCT_LEVEL Level, SHARE_INFO InfoStruct, ref uint?ParmErr) { /* * NET_API_STATUS NetrShareSetInfo( * [in, string, unique] SRVSVC_HANDLE ServerName, * [in, string] WCHAR* NetName, * [in] DWORD Level, * [in, switch_is(Level)] LPSHARE_INFO ShareInfo, * [in, out, unique] DWORD* ParmErr * ); */ Int3264[] paramList; uint retVal = 0; using (SafeIntPtr pServerName = Marshal.StringToHGlobalUni(ServerName), pNetName = Marshal.StringToHGlobalUni(NetName), pShareInfo = TypeMarshal.ToIntPtr(InfoStruct, Level, null, null), pParmErr = TypeMarshal.ToIntPtr(ParmErr)) { paramList = new Int3264[] { pServerName, pNetName, (uint)Level, pShareInfo, // out value pParmErr, IntPtr.Zero // return value }; using (RpceInt3264Collection outParamList = RpceCall(paramList, (ushort)SRVS_OPNUM.NetrShareSetInfo)) { retVal = outParamList[paramList.Length - 1].ToUInt32(); if (retVal == (uint)Win32ErrorCode_32.ERROR_INVALID_PARAMETER) { ParmErr = TypeMarshal.ToNullableStruct <uint>(outParamList[4]); } } } return(retVal); }
/// <summary> /// The NetrShareSetInfo method sets the parameters of a shared resource in a ShareList. /// </summary> /// <param name="ServerName">A string that identifies the server. If this parameter is NULL, the local computer is used.</param> /// <param name="NetName">The name of the share to return information for.</param> /// <param name="Level">Specifies the information level of the data. This parameter MUST be one of the following values.</param> /// <param name="InfoStruct">Its contents are determined by the value of the Level parameter, as shown in the preceding table. /// This parameter MUST NOT contain a null value. </param> /// <param name="ParmErr">An integer value that receives the index of the first member of the share information /// structure that caused the ERROR_INVALID_PARAMETER error, if it occurs</param> /// <returns>The method returns 0x00000000 (NERR_Success) to indicate success; otherwise, it returns a nonzero error code.</returns> public uint NetrShareSetInfo(string ServerName, string NetName, SHARE_ENUM_STRUCT_LEVEL Level, SHARE_INFO InfoStruct, ref uint? ParmErr) { /* NET_API_STATUS NetrShareSetInfo( [in, string, unique] SRVSVC_HANDLE ServerName, [in, string] WCHAR* NetName, [in] DWORD Level, [in, switch_is(Level)] LPSHARE_INFO ShareInfo, [in, out, unique] DWORD* ParmErr ); */ Int3264[] paramList; uint retVal = 0; using (SafeIntPtr pServerName = Marshal.StringToHGlobalUni(ServerName), pNetName = Marshal.StringToHGlobalUni(NetName), pShareInfo = TypeMarshal.ToIntPtr(InfoStruct, Level, null, null), pParmErr = TypeMarshal.ToIntPtr(ParmErr)) { paramList = new Int3264[]{ pServerName, pNetName, (uint)Level, pShareInfo, // out value pParmErr, IntPtr.Zero // return value }; using (RpceInt3264Collection outParamList = RpceCall(paramList, (ushort)SRVS_OPNUM.NetrShareSetInfo)) { retVal = outParamList[paramList.Length - 1].ToUInt32(); if (retVal == (uint)Win32ErrorCode_32.ERROR_INVALID_PARAMETER) { ParmErr = TypeMarshal.ToNullableStruct<uint>(outParamList[4]); } } } return retVal; }
/// <summary> /// The NetrShareGetInfo method retrieves information about a particular shared resource on the server from the ShareList. /// </summary> /// <param name="ServerName">A string that identifies the server. If this parameter is NULL, the local computer is used.</param> /// <param name="NetName">The name of the share to return information for.</param> /// <param name="Level">Specifies the information level of the data. This parameter MUST be one of the following values.</param> /// <param name="InfoStruct">Its contents are determined by the value of the Level parameter, as shown in the preceding table.</param> /// <returns>The method returns 0x00000000 (NERR_Success) to indicate success; otherwise, it returns a nonzero error code.</returns> public uint NetrShareGetInfo(string ServerName, string NetName, SHARE_ENUM_STRUCT_LEVEL Level, out SHARE_INFO? InfoStruct) { /* NET_API_STATUS NetrShareGetInfo( [in, string, unique] SRVSVC_HANDLE ServerName, [in, string] WCHAR* NetName, [in] DWORD Level, [out, switch_is(Level)] LPSHARE_INFO InfoStruct ); */ Int3264[] paramList; uint retVal = 0; InfoStruct = null; using (SafeIntPtr pServerName = Marshal.StringToHGlobalUni(ServerName), pNetName = Marshal.StringToHGlobalUni(NetName)) { paramList = new Int3264[]{ pServerName, pNetName, (uint)Level, IntPtr.Zero, // out value IntPtr.Zero // return value }; using (RpceInt3264Collection outParamList = RpceCall(paramList, (ushort)SRVS_OPNUM.NetrShareGetInfo)) { retVal = outParamList[paramList.Length - 1].ToUInt32(); if (retVal == (uint)Win32ErrorCode_32.ERROR_SUCCESS) { InfoStruct = TypeMarshal.ToStruct<SHARE_INFO>(outParamList[3], Level, null, null); } } } return retVal; }