// This code is derived from jcifs smb client library // Ported by J. Arturo // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA using SharpCifs.Dcerpc.Ndr; namespace SharpCifs.Dcerpc.Msrpc { public class Srvsvc { public static string GetSyntax() { return "4b324fc8-1670-01d3-1278-5a47bf6ee188:3.0"; } public class ShareInfo0 : NdrObject { public string Netname; /// public override void Encode(NdrBuffer dst) { dst.Align(4); dst.Enc_ndr_referent(Netname, 1); if (Netname != null) { dst = dst.Deferred; dst.Enc_ndr_string(Netname); } } /// public override void Decode(NdrBuffer src) { src.Align(4); int netnamep = src.Dec_ndr_long(); if (netnamep != 0) { src = src.Deferred; Netname = src.Dec_ndr_string(); } } } public class ShareInfoCtr0 : NdrObject { public int Count; public ShareInfo0[] Array; /// public override void Encode(NdrBuffer dst) { dst.Align(4); dst.Enc_ndr_long(Count); dst.Enc_ndr_referent(Array, 1); if (Array != null) { dst = dst.Deferred; int arrays = Count; dst.Enc_ndr_long(arrays); int arrayi = dst.Index; dst.Advance(4 * arrays); dst = dst.Derive(arrayi); for (int i = 0; i < arrays; i++) { Array[i].Encode(dst); } } } /// public override void Decode(NdrBuffer src) { src.Align(4); Count = src.Dec_ndr_long(); int arrayp = src.Dec_ndr_long(); if (arrayp != 0) { src = src.Deferred; int arrays = src.Dec_ndr_long(); int arrayi = src.Index; src.Advance(4 * arrays); if (Array == null) { if (arrays < 0 || arrays > unchecked(0xFFFF)) { throw new NdrException(NdrException.InvalidConformance); } Array = new ShareInfo0[arrays]; } src = src.Derive(arrayi); for (int i = 0; i < arrays; i++) { if (Array[i] == null) { Array[i] = new ShareInfo0(); } Array[i].Decode(src); } } } } public class ShareInfo1 : NdrObject { public string Netname; public int Type; public string Remark; /// public override void Encode(NdrBuffer dst) { dst.Align(4); dst.Enc_ndr_referent(Netname, 1); dst.Enc_ndr_long(Type); dst.Enc_ndr_referent(Remark, 1); if (Netname != null) { dst = dst.Deferred; dst.Enc_ndr_string(Netname); } if (Remark != null) { dst = dst.Deferred; dst.Enc_ndr_string(Remark); } } /// public override void Decode(NdrBuffer src) { src.Align(4); int netnamep = src.Dec_ndr_long(); Type = src.Dec_ndr_long(); int remarkp = src.Dec_ndr_long(); if (netnamep != 0) { src = src.Deferred; Netname = src.Dec_ndr_string(); } if (remarkp != 0) { src = src.Deferred; Remark = src.Dec_ndr_string(); } } } public class ShareInfoCtr1 : NdrObject { public int Count; public ShareInfo1[] Array; /// public override void Encode(NdrBuffer dst) { dst.Align(4); dst.Enc_ndr_long(Count); dst.Enc_ndr_referent(Array, 1); if (Array != null) { dst = dst.Deferred; int arrays = Count; dst.Enc_ndr_long(arrays); int arrayi = dst.Index; dst.Advance(12 * arrays); dst = dst.Derive(arrayi); for (int i = 0; i < arrays; i++) { Array[i].Encode(dst); } } } /// public override void Decode(NdrBuffer src) { src.Align(4); Count = src.Dec_ndr_long(); int arrayp = src.Dec_ndr_long(); if (arrayp != 0) { src = src.Deferred; int arrays = src.Dec_ndr_long(); int arrayi = src.Index; src.Advance(12 * arrays); if (Array == null) { if (arrays < 0 || arrays > unchecked(0xFFFF)) { throw new NdrException(NdrException.InvalidConformance); } Array = new ShareInfo1[arrays]; } src = src.Derive(arrayi); for (int i = 0; i < arrays; i++) { if (Array[i] == null) { Array[i] = new ShareInfo1(); } Array[i].Decode(src); } } } } public class ShareInfo502 : NdrObject { public string Netname; public int Type; public string Remark; public int Permissions; public int MaxUses; public int CurrentUses; public string Path; public string Password; public int SdSize; public byte[] SecurityDescriptor; /// public override void Encode(NdrBuffer dst) { dst.Align(4); dst.Enc_ndr_referent(Netname, 1); dst.Enc_ndr_long(Type); dst.Enc_ndr_referent(Remark, 1); dst.Enc_ndr_long(Permissions); dst.Enc_ndr_long(MaxUses); dst.Enc_ndr_long(CurrentUses); dst.Enc_ndr_referent(Path, 1); dst.Enc_ndr_referent(Password, 1); dst.Enc_ndr_long(SdSize); dst.Enc_ndr_referent(SecurityDescriptor, 1); if (Netname != null) { dst = dst.Deferred; dst.Enc_ndr_string(Netname); } if (Remark != null) { dst = dst.Deferred; dst.Enc_ndr_string(Remark); } if (Path != null) { dst = dst.Deferred; dst.Enc_ndr_string(Path); } if (Password != null) { dst = dst.Deferred; dst.Enc_ndr_string(Password); } if (SecurityDescriptor != null) { dst = dst.Deferred; int securityDescriptors = SdSize; dst.Enc_ndr_long(securityDescriptors); int securityDescriptori = dst.Index; dst.Advance(1 * securityDescriptors); dst = dst.Derive(securityDescriptori); for (int i = 0; i < securityDescriptors; i++) { dst.Enc_ndr_small(SecurityDescriptor[i]); } } } /// public override void Decode(NdrBuffer src) { src.Align(4); int netnamep = src.Dec_ndr_long(); Type = src.Dec_ndr_long(); int remarkp = src.Dec_ndr_long(); Permissions = src.Dec_ndr_long(); MaxUses = src.Dec_ndr_long(); CurrentUses = src.Dec_ndr_long(); int pathp = src.Dec_ndr_long(); int passwordp = src.Dec_ndr_long(); SdSize = src.Dec_ndr_long(); int securityDescriptorp = src.Dec_ndr_long(); if (netnamep != 0) { src = src.Deferred; Netname = src.Dec_ndr_string(); } if (remarkp != 0) { src = src.Deferred; Remark = src.Dec_ndr_string(); } if (pathp != 0) { src = src.Deferred; Path = src.Dec_ndr_string(); } if (passwordp != 0) { src = src.Deferred; Password = src.Dec_ndr_string(); } if (securityDescriptorp != 0) { src = src.Deferred; int securityDescriptors = src.Dec_ndr_long(); int securityDescriptori = src.Index; src.Advance(1 * securityDescriptors); if (SecurityDescriptor == null) { if (securityDescriptors < 0 || securityDescriptors > unchecked(0xFFFF)) { throw new NdrException(NdrException.InvalidConformance); } SecurityDescriptor = new byte[securityDescriptors]; } src = src.Derive(securityDescriptori); for (int i = 0; i < securityDescriptors; i++) { SecurityDescriptor[i] = unchecked((byte)src.Dec_ndr_small()); } } } } public class ShareInfoCtr502 : NdrObject { public int Count; public ShareInfo502[] Array; /// public override void Encode(NdrBuffer dst) { dst.Align(4); dst.Enc_ndr_long(Count); dst.Enc_ndr_referent(Array, 1); if (Array != null) { dst = dst.Deferred; int arrays = Count; dst.Enc_ndr_long(arrays); int arrayi = dst.Index; dst.Advance(40 * arrays); dst = dst.Derive(arrayi); for (int i = 0; i < arrays; i++) { Array[i].Encode(dst); } } } /// public override void Decode(NdrBuffer src) { src.Align(4); Count = src.Dec_ndr_long(); int arrayp = src.Dec_ndr_long(); if (arrayp != 0) { src = src.Deferred; int arrays = src.Dec_ndr_long(); int arrayi = src.Index; src.Advance(40 * arrays); if (Array == null) { if (arrays < 0 || arrays > unchecked(0xFFFF)) { throw new NdrException(NdrException.InvalidConformance); } Array = new ShareInfo502[arrays]; } src = src.Derive(arrayi); for (int i = 0; i < arrays; i++) { if (Array[i] == null) { Array[i] = new ShareInfo502(); } Array[i].Decode(src); } } } } public class ShareEnumAll : DcerpcMessage { public override int GetOpnum() { return unchecked(0x0f); } public int Retval; public string Servername; public int Level; public NdrObject Info; public int Prefmaxlen; public int Totalentries; public int ResumeHandle; public ShareEnumAll(string servername, int level, NdrObject info, int prefmaxlen, int totalentries, int resumeHandle) { this.Servername = servername; this.Level = level; this.Info = info; this.Prefmaxlen = prefmaxlen; this.Totalentries = totalentries; this.ResumeHandle = resumeHandle; } /// public override void Encode_in(NdrBuffer dst) { dst.Enc_ndr_referent(Servername, 1); if (Servername != null) { dst.Enc_ndr_string(Servername); } dst.Enc_ndr_long(Level); int descr = Level; dst.Enc_ndr_long(descr); dst.Enc_ndr_referent(Info, 1); if (Info != null) { dst = dst.Deferred; Info.Encode(dst); } dst.Enc_ndr_long(Prefmaxlen); dst.Enc_ndr_long(ResumeHandle); } /// public override void Decode_out(NdrBuffer src) { Level = src.Dec_ndr_long(); src.Dec_ndr_long(); int infop = src.Dec_ndr_long(); if (infop != 0) { if (Info == null) { Info = new ShareInfoCtr0(); } src = src.Deferred; Info.Decode(src); } Totalentries = src.Dec_ndr_long(); ResumeHandle = src.Dec_ndr_long(); Retval = src.Dec_ndr_long(); } } public class ShareGetInfo : DcerpcMessage { public override int GetOpnum() { return unchecked(0x10); } public int Retval; public string Servername; public string Sharename; public int Level; public NdrObject Info; public ShareGetInfo(string servername, string sharename, int level, NdrObject info ) { this.Servername = servername; this.Sharename = sharename; this.Level = level; this.Info = info; } /// public override void Encode_in(NdrBuffer dst) { dst.Enc_ndr_referent(Servername, 1); if (Servername != null) { dst.Enc_ndr_string(Servername); } dst.Enc_ndr_string(Sharename); dst.Enc_ndr_long(Level); } /// public override void Decode_out(NdrBuffer src) { src.Dec_ndr_long(); int infop = src.Dec_ndr_long(); if (infop != 0) { if (Info == null) { Info = new ShareInfo0(); } src = src.Deferred; Info.Decode(src); } Retval = src.Dec_ndr_long(); } } public class ServerInfo100 : NdrObject { public int PlatformId; public string Name; /// public override void Encode(NdrBuffer dst) { dst.Align(4); dst.Enc_ndr_long(PlatformId); dst.Enc_ndr_referent(Name, 1); if (Name != null) { dst = dst.Deferred; dst.Enc_ndr_string(Name); } } /// public override void Decode(NdrBuffer src) { src.Align(4); PlatformId = src.Dec_ndr_long(); int namep = src.Dec_ndr_long(); if (namep != 0) { src = src.Deferred; Name = src.Dec_ndr_string(); } } } public class ServerGetInfo : DcerpcMessage { public override int GetOpnum() { return unchecked(0x15); } public int Retval; public string Servername; public int Level; public NdrObject Info; public ServerGetInfo(string servername, int level, NdrObject info) { this.Servername = servername; this.Level = level; this.Info = info; } /// public override void Encode_in(NdrBuffer dst) { dst.Enc_ndr_referent(Servername, 1); if (Servername != null) { dst.Enc_ndr_string(Servername); } dst.Enc_ndr_long(Level); } /// public override void Decode_out(NdrBuffer src) { src.Dec_ndr_long(); int infop = src.Dec_ndr_long(); if (infop != 0) { if (Info == null) { Info = new ServerInfo100(); } src = src.Deferred; Info.Decode(src); } Retval = src.Dec_ndr_long(); } } public class TimeOfDayInfo : NdrObject { public int Elapsedt; public int Msecs; public int Hours; public int Mins; public int Secs; public int Hunds; public int Timezone; public int Tinterval; public int Day; public int Month; public int Year; public int Weekday; /// public override void Encode(NdrBuffer dst) { dst.Align(4); dst.Enc_ndr_long(Elapsedt); dst.Enc_ndr_long(Msecs); dst.Enc_ndr_long(Hours); dst.Enc_ndr_long(Mins); dst.Enc_ndr_long(Secs); dst.Enc_ndr_long(Hunds); dst.Enc_ndr_long(Timezone); dst.Enc_ndr_long(Tinterval); dst.Enc_ndr_long(Day); dst.Enc_ndr_long(Month); dst.Enc_ndr_long(Year); dst.Enc_ndr_long(Weekday); } /// public override void Decode(NdrBuffer src) { src.Align(4); Elapsedt = src.Dec_ndr_long(); Msecs = src.Dec_ndr_long(); Hours = src.Dec_ndr_long(); Mins = src.Dec_ndr_long(); Secs = src.Dec_ndr_long(); Hunds = src.Dec_ndr_long(); Timezone = src.Dec_ndr_long(); Tinterval = src.Dec_ndr_long(); Day = src.Dec_ndr_long(); Month = src.Dec_ndr_long(); Year = src.Dec_ndr_long(); Weekday = src.Dec_ndr_long(); } } public class RemoteTod : DcerpcMessage { public override int GetOpnum() { return unchecked(0x1c); } public int Retval; public string Servername; public TimeOfDayInfo Info; public RemoteTod(string servername, TimeOfDayInfo info) { this.Servername = servername; this.Info = info; } /// public override void Encode_in(NdrBuffer dst) { dst.Enc_ndr_referent(Servername, 1); if (Servername != null) { dst.Enc_ndr_string(Servername); } } /// public override void Decode_out(NdrBuffer src) { int infop = src.Dec_ndr_long(); if (infop != 0) { if (Info == null) { Info = new TimeOfDayInfo(); } Info.Decode(src); } Retval = src.Dec_ndr_long(); } } } }