internal static DhcpServerClass GetClass(DhcpServer Server, string Name) { IntPtr classIntoPtr; var query = new DHCP_CLASS_INFO() { ClassName = Name, ClassDataLength = 0, ClassData = IntPtr.Zero }; var result = Api.DhcpGetClassInfo(Server.ipAddress.ToString(), 0, query, out classIntoPtr); if (result != DhcpErrors.SUCCESS) { throw new DhcpServerException("DhcpGetClassInfo", result); } var classInfo = (DHCP_CLASS_INFO)Marshal.PtrToStructure(classIntoPtr, typeof(DHCP_CLASS_INFO)); var dhcpClass = FromNative(Server, classInfo); Api.DhcpRpcFreeMemory(classIntoPtr); return(dhcpClass); }
internal static DhcpServerClass FromNative(DhcpServer Server, DHCP_CLASS_INFO Native) { var data = new byte[Native.ClassDataLength]; Marshal.Copy(Native.ClassData, data, 0, Native.ClassDataLength); return(new DhcpServerClass(Server) { Name = Native.ClassName, Comment = Native.ClassComment, IsVendorClass = Native.IsVendor, Data = data }); }