Пример #1
0
        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);
        }
Пример #2
0
        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
            });
        }