/// <summary> /// Add a UPnPDevice to this device /// </summary> /// <param name="device">Device</param> public void AddDevice(UPnPDevice device) { device.ExpirationTimeout = this.ExpirationTimeout; device.parent = this; device.IsRoot = false; SetInterfaceToHost(device); UPnPDevice[] temp = new UPnPDevice[EmbeddedDevices.Length + 1]; Array.Copy(EmbeddedDevices, 0, temp, 0, EmbeddedDevices.Length); temp[EmbeddedDevices.Length] = device; Array.Sort(temp, new UPnPDeviceComparer_Type()); EmbeddedDevices = temp; // Special Processing if (ControlPointOnly == false) { device.AddSubVirtualDirectory(device.UniqueDeviceName); this.AddVirtualDirectory(device.UniqueDeviceName, new UPnPDevice.VirtualDirectoryHandler(device.HandleParent_Header), new UPnPDevice.VirtualDirectoryHandler(device.HandleParent)); } else { this.AddVirtualDirectory(device.UniqueDeviceName, null, new UPnPDevice.VirtualDirectoryHandler(device.EventProcesser)); ProcessDevice_EVENTCALLBACK(this); } }