--- a/.gitignore
+++ b/.gitignore
@@ -1,112 +1,366 @@
-#
-# NOTE! Don't add files that are generated in specific
-# subdirectories here. Add them in the ".gitignore" file
-# in that subdirectory instead.
-#
-# NOTE! Please use 'git ls-files -i --exclude-standard'
-# command after changing this file, to see if there are
-# any tracked files which get ignored after the change.
-#
-# Normal rules
-#
-.*
-*.o
-*.o.*
-*.a
-*.s
-*.ko
-*.so
-*.so.dbg
-*.mod.c
-*.i
-*.lst
-*.symtypes
-*.order
-modules.builtin
-*.elf
-*.bin
-*.gz
-*.bz2
-*.lzma
-*.patch
-*.gcno
-
-#
-# Top-level generic files
-#
-/tags
-/TAGS
-/linux
-/vmlinux
-/vmlinuz
-/System.map
-/Module.markers
-/Module.symvers
-
-#
-# git files that we don't want to ignore even it they are dot-files
-#
-!.gitignore
-!.mailmap
-
-#
-# Generated include files
-#
-include/config
-include/linux/version.h
-include/generated
-
-# stgit generated dirs
-patches-*
-
-# quilt's files
-patches
-series
-
-# cscope files
-cscope.*
-ncscope.*
-
-# gnu global files
-GPATH
-GRTAGS
-GSYMS
-GTAGS
-
-*.orig
-*~
-\#*#
-*.lo
-*.la
-Makefile
-Makefile.in
-aclocal.m4
-autoconfig.h
-autoconfig.h.in
-autom4te.cache/
-build-aux/
-config.log
-config.status
-configure
-libtool
-libupnp.pc
-m4/libtool.m4
-m4/ltoptions.m4
-m4/ltsugar.m4
-m4/ltversion.m4
-m4/lt~obsolete.m4
-stamp-h1
-upnp/inc/stamp-h2
-upnp/inc/upnpconfig.h
-upnp/sample/tv_combo
-upnp/sample/tv_ctrlpt
-upnp/sample/tv_device
-upnp/unittest/unittest
-upnp/unittest/*.pp.c
-docs/doxygen
-
-
-/build/vc10/out.vc9.Win32/Debug
-/build/vc10/out.vc10.Win32
-/build/vc10/out.vc10.x64
-/pthreads
\ No newline at end of file
+#
+# NOTE! Don't add files that are generated in specific
+# subdirectories here. Add them in the ".gitignore" file
+# in that subdirectory instead.
+#
+# NOTE! Please use 'git ls-files -i --exclude-standard'
+# command after changing this file, to see if there are
+# any tracked files which get ignored after the change.
+#
+# Normal rules
+#
+.*
+*.o
+*.o.*
+*.a
+*.s
+*.ko
+*.so
+*.so.dbg
+*.mod.c
+*.i
+*.lst
+*.symtypes
+*.order
+modules.builtin
+*.elf
+*.bin
+*.gz
+*.bz2
+*.lzma
+*.patch
+*.gcno
+
+#
+# Top-level generic files
+#
+/tags
+/TAGS
+/linux
+/vmlinux
+/vmlinuz
+/System.map
+/Module.markers
+/Module.symvers
+
+#
+# git files that we don't want to ignore even it they are dot-files
+#
+!.gitignore
+!.mailmap
+
+#
+# Generated include files
+#
+include/config
+include/linux/version.h
+include/generated
+
+# stgit generated dirs
+patches-*
+
+# quilt's files
+patches
+series
+
+# cscope files
+cscope.*
+ncscope.*
+
+# gnu global files
+GPATH
+GRTAGS
+GSYMS
+GTAGS
+
+*.orig
+*~
+\#*#
+*.lo
+*.la
+Makefile
+Makefile.in
+aclocal.m4
+autoconfig.h
+autoconfig.h.in
+autom4te.cache/
+build-aux/
+config.log
+config.status
+configure
+libtool
+libupnp.pc
+m4/libtool.m4
+m4/ltoptions.m4
+m4/ltsugar.m4
+m4/ltversion.m4
+m4/lt~obsolete.m4
+stamp-h1
+upnp/inc/stamp-h2
+upnp/inc/upnpconfig.h
+upnp/sample/tv_combo
+upnp/sample/tv_ctrlpt
+upnp/sample/tv_device
+upnp/unittest/unittest
+upnp/unittest/*.pp.c
+docs/doxygen
+
+
+/build/vc10/out.vc9.Win32/Debug
+/build/vc10/out.vc10.Win32
+/build/vc10/out.vc10.x64
+/pthreads
+
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+
+#output directories
+DebugDLL/
+Debug/
+ReleaseDLL/
+Release/
+.config/
+# User-specific files
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+*.VC.VC.opendb
+*.VC.db
+*.db
+IUpnpErrFile.txt
+IUpnpInfoFile.txt
+*.rej
+
+# User-specific files (MonoDevelop/Xamarin Studio)
+*.userprefs
+
+# Build results
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+bld/
+[Bb]in/
+[Oo]bj/
+
+# Visual Studio 2015 cache/options directory
+.vs/
+# Uncomment if you have tasks that create the project's static files in wwwroot
+#wwwroot/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+# NUNIT
+*.VisualState.xml
+TestResult.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+# DNX
+project.lock.json
+artifacts/
+
+*_i.c
+*_p.c
+*_i.h
+*.ilk
+*.meta
+*.obj
+*.pch
+*.pdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+*.exe
+*.dll
+*.lib
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opendb
+*.opensdf
+*.sdf
+*.cachefile
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+*.sap
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# JustCode is a .NET coding add-in
+.JustCode
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# NCrunch
+_NCrunch_*
+.*crunch*.local.xml
+nCrunchTemp_*
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+# TODO: Comment the next line if you want to checkin your web deploy settings 
+# but database connection strings (with potential passwords) will be unencrypted
+*.pubxml
+*.publishproj
+
+# NuGet Packages
+*.nupkg
+# The packages folder can be ignored because of Package Restore
+**/packages/*
+# except build/, which is used as an MSBuild target.
+!**/packages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/packages/repositories.config
+# NuGet v3's project.json files produces more ignoreable files
+*.nuget.props
+*.nuget.targets
+
+# Microsoft Azure Build Output
+csx/
+*.build.csdef
+
+# Microsoft Azure Emulator
+ecf/
+rcf/
+
+# Microsoft Azure ApplicationInsights config file
+ApplicationInsights.config
+
+# Windows Store app package directory
+AppPackages/
+BundleArtifacts/
+
+# Visual Studio cache files
+# files ending in .cache can be ignored
+*.[Cc]ache
+# but keep track of directories ending in .cache
+!*.[Cc]ache/
+
+# Others
+ClientBin/
+~$*
+*~
+*.dbmdl
+*.dbproj.schemaview
+*.pfx
+*.publishsettings
+node_modules/
+orleans.codegen.cs
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+
+# SQL Server files
+*.mdf
+*.ldf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# GhostDoc plugin setting file
+*.GhostDoc.xml
+
+# Node.js Tools for Visual Studio
+.ntvs_analysis.dat
+
+# Visual Studio 6 build log
+*.plg
+
+# Visual Studio 6 workspace options file
+*.opt
+
+# Visual Studio LightSwitch build output
+**/*.HTMLClient/GeneratedArtifacts
+**/*.DesktopClient/GeneratedArtifacts
+**/*.DesktopClient/ModelManifest.xml
+**/*.Server/GeneratedArtifacts
+**/*.Server/ModelManifest.xml
+_Pvt_Extensions
+
+# Paket dependency manager
+.paket/paket.exe
+
+# FAKE - F# Make
+.fake/
+
+!config.h
\ No newline at end of file
--- /dev/null
+++ b/MSVC/libupnp.sln
@@ -0,0 +1,139 @@
+﻿
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.25123.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libupnp", "..\build\VS2015\libupnp.vcxproj", "{6227F51A-1498-4C4A-B213-F6FDED605125}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ixml", "..\build\VS2015\ixml.vcxproj", "{9C2C266D-35A3-465F-A297-0E21D54E5C89}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dependencies", "dependencies", "{9A01C9FF-6331-4510-B971-2BCD1CA970FD}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "threadutil", "..\build\VS2015\threadutil.vcxproj", "{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tvcombo", "..\build\VS2015\tvcombo.vcxproj", "{6365804B-22C6-4D5E-91F3-0C052EB55B4F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tvctrlpt", "..\build\VS2015\tvctrlpt.vcxproj", "{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tvdevice", "..\build\VS2015\tvdevice.vcxproj", "{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|x64 = Debug|x64
+		Debug|x86 = Debug|x86
+		DebugDLL|x64 = DebugDLL|x64
+		DebugDLL|x86 = DebugDLL|x86
+		Release|x64 = Release|x64
+		Release|x86 = Release|x86
+		ReleaseDLL|x64 = ReleaseDLL|x64
+		ReleaseDLL|x86 = ReleaseDLL|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Debug|x64.ActiveCfg = Debug|x64
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Debug|x64.Build.0 = Debug|x64
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Debug|x86.ActiveCfg = Debug|Win32
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Debug|x86.Build.0 = Debug|Win32
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.DebugDLL|x64.ActiveCfg = DebugDLL|x64
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.DebugDLL|x64.Build.0 = DebugDLL|x64
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.DebugDLL|x86.ActiveCfg = DebugDLL|Win32
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.DebugDLL|x86.Build.0 = DebugDLL|Win32
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Release|x64.ActiveCfg = Release|x64
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Release|x64.Build.0 = Release|x64
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Release|x86.ActiveCfg = Release|Win32
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Release|x86.Build.0 = Release|Win32
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.ReleaseDLL|x86.ActiveCfg = ReleaseDLL|Win32
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.ReleaseDLL|x86.Build.0 = ReleaseDLL|Win32
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Debug|x64.ActiveCfg = Debug|x64
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Debug|x64.Build.0 = Debug|x64
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Debug|x86.ActiveCfg = Debug|Win32
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Debug|x86.Build.0 = Debug|Win32
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.DebugDLL|x64.ActiveCfg = DebugDLL|x64
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.DebugDLL|x64.Build.0 = DebugDLL|x64
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.DebugDLL|x86.ActiveCfg = DebugDLL|Win32
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.DebugDLL|x86.Build.0 = DebugDLL|Win32
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Release|x64.ActiveCfg = Release|x64
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Release|x64.Build.0 = Release|x64
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Release|x86.ActiveCfg = Release|Win32
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Release|x86.Build.0 = Release|Win32
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.ReleaseDLL|x86.ActiveCfg = ReleaseDLL|Win32
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.ReleaseDLL|x86.Build.0 = ReleaseDLL|Win32
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Debug|x64.ActiveCfg = Debug|x64
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Debug|x64.Build.0 = Debug|x64
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Debug|x86.ActiveCfg = Debug|Win32
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Debug|x86.Build.0 = Debug|Win32
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.DebugDLL|x64.ActiveCfg = DebugDLL|x64
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.DebugDLL|x64.Build.0 = DebugDLL|x64
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.DebugDLL|x86.ActiveCfg = DebugDLL|Win32
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.DebugDLL|x86.Build.0 = DebugDLL|Win32
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Release|x64.ActiveCfg = Release|x64
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Release|x64.Build.0 = Release|x64
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Release|x86.ActiveCfg = Release|Win32
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Release|x86.Build.0 = Release|Win32
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.ReleaseDLL|x86.ActiveCfg = ReleaseDLL|Win32
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.ReleaseDLL|x86.Build.0 = ReleaseDLL|Win32
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Debug|x64.ActiveCfg = Debug|x64
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Debug|x64.Build.0 = Debug|x64
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Debug|x86.ActiveCfg = Debug|Win32
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Debug|x86.Build.0 = Debug|Win32
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.DebugDLL|x64.ActiveCfg = DebugDLL|x64
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.DebugDLL|x64.Build.0 = DebugDLL|x64
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.DebugDLL|x86.ActiveCfg = DebugDLL|Win32
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.DebugDLL|x86.Build.0 = DebugDLL|Win32
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Release|x64.ActiveCfg = Release|x64
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Release|x64.Build.0 = Release|x64
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Release|x86.ActiveCfg = Release|Win32
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Release|x86.Build.0 = Release|Win32
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.ReleaseDLL|x86.ActiveCfg = ReleaseDLL|Win32
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.ReleaseDLL|x86.Build.0 = ReleaseDLL|Win32
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Debug|x64.ActiveCfg = Debug|x64
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Debug|x64.Build.0 = Debug|x64
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Debug|x86.ActiveCfg = Debug|Win32
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Debug|x86.Build.0 = Debug|Win32
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.DebugDLL|x64.ActiveCfg = DebugDLL|x64
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.DebugDLL|x64.Build.0 = DebugDLL|x64
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.DebugDLL|x86.ActiveCfg = DebugDLL|Win32
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.DebugDLL|x86.Build.0 = DebugDLL|Win32
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Release|x64.ActiveCfg = Release|x64
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Release|x64.Build.0 = Release|x64
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Release|x86.ActiveCfg = Release|Win32
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Release|x86.Build.0 = Release|Win32
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.ReleaseDLL|x86.ActiveCfg = ReleaseDLL|Win32
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.ReleaseDLL|x86.Build.0 = ReleaseDLL|Win32
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Debug|x64.ActiveCfg = Debug|x64
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Debug|x64.Build.0 = Debug|x64
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Debug|x86.ActiveCfg = Debug|Win32
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Debug|x86.Build.0 = Debug|Win32
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.DebugDLL|x64.ActiveCfg = DebugDLL|x64
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.DebugDLL|x64.Build.0 = DebugDLL|x64
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.DebugDLL|x86.ActiveCfg = DebugDLL|Win32
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.DebugDLL|x86.Build.0 = DebugDLL|Win32
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Release|x64.ActiveCfg = Release|x64
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Release|x64.Build.0 = Release|x64
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Release|x86.ActiveCfg = Release|Win32
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Release|x86.Build.0 = Release|Win32
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.ReleaseDLL|x86.ActiveCfg = ReleaseDLL|Win32
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.ReleaseDLL|x86.Build.0 = ReleaseDLL|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(NestedProjects) = preSolution
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89} = {9A01C9FF-6331-4510-B971-2BCD1CA970FD}
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D} = {9A01C9FF-6331-4510-B971-2BCD1CA970FD}
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F} = {9A01C9FF-6331-4510-B971-2BCD1CA970FD}
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5} = {9A01C9FF-6331-4510-B971-2BCD1CA970FD}
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A} = {9A01C9FF-6331-4510-B971-2BCD1CA970FD}
+	EndGlobalSection
+EndGlobal
--- a/MSVC/libupnp.sln
+++ b/MSVC/libupnp.sln
@@ -1,139 +1,82 @@
-﻿
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-VisualStudioVersion = 14.0.25123.0
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libupnp", "..\build\VS2015\libupnp.vcxproj", "{6227F51A-1498-4C4A-B213-F6FDED605125}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ixml", "..\build\VS2015\ixml.vcxproj", "{9C2C266D-35A3-465F-A297-0E21D54E5C89}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dependencies", "dependencies", "{9A01C9FF-6331-4510-B971-2BCD1CA970FD}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "threadutil", "..\build\VS2015\threadutil.vcxproj", "{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tvcombo", "..\build\VS2015\tvcombo.vcxproj", "{6365804B-22C6-4D5E-91F3-0C052EB55B4F}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tvctrlpt", "..\build\VS2015\tvctrlpt.vcxproj", "{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tvdevice", "..\build\VS2015\tvdevice.vcxproj", "{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|x64 = Debug|x64
-		Debug|x86 = Debug|x86
-		DebugDLL|x64 = DebugDLL|x64
-		DebugDLL|x86 = DebugDLL|x86
-		Release|x64 = Release|x64
-		Release|x86 = Release|x86
-		ReleaseDLL|x64 = ReleaseDLL|x64
-		ReleaseDLL|x86 = ReleaseDLL|x86
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{6227F51A-1498-4C4A-B213-F6FDED605125}.Debug|x64.ActiveCfg = Debug|x64
-		{6227F51A-1498-4C4A-B213-F6FDED605125}.Debug|x64.Build.0 = Debug|x64
-		{6227F51A-1498-4C4A-B213-F6FDED605125}.Debug|x86.ActiveCfg = Debug|Win32
-		{6227F51A-1498-4C4A-B213-F6FDED605125}.Debug|x86.Build.0 = Debug|Win32
-		{6227F51A-1498-4C4A-B213-F6FDED605125}.DebugDLL|x64.ActiveCfg = DebugDLL|x64
-		{6227F51A-1498-4C4A-B213-F6FDED605125}.DebugDLL|x64.Build.0 = DebugDLL|x64
-		{6227F51A-1498-4C4A-B213-F6FDED605125}.DebugDLL|x86.ActiveCfg = DebugDLL|Win32
-		{6227F51A-1498-4C4A-B213-F6FDED605125}.DebugDLL|x86.Build.0 = DebugDLL|Win32
-		{6227F51A-1498-4C4A-B213-F6FDED605125}.Release|x64.ActiveCfg = Release|x64
-		{6227F51A-1498-4C4A-B213-F6FDED605125}.Release|x64.Build.0 = Release|x64
-		{6227F51A-1498-4C4A-B213-F6FDED605125}.Release|x86.ActiveCfg = Release|Win32
-		{6227F51A-1498-4C4A-B213-F6FDED605125}.Release|x86.Build.0 = Release|Win32
-		{6227F51A-1498-4C4A-B213-F6FDED605125}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64
-		{6227F51A-1498-4C4A-B213-F6FDED605125}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64
-		{6227F51A-1498-4C4A-B213-F6FDED605125}.ReleaseDLL|x86.ActiveCfg = ReleaseDLL|Win32
-		{6227F51A-1498-4C4A-B213-F6FDED605125}.ReleaseDLL|x86.Build.0 = ReleaseDLL|Win32
-		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Debug|x64.ActiveCfg = Debug|x64
-		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Debug|x64.Build.0 = Debug|x64
-		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Debug|x86.ActiveCfg = Debug|Win32
-		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Debug|x86.Build.0 = Debug|Win32
-		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.DebugDLL|x64.ActiveCfg = DebugDLL|x64
-		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.DebugDLL|x64.Build.0 = DebugDLL|x64
-		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.DebugDLL|x86.ActiveCfg = DebugDLL|Win32
-		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.DebugDLL|x86.Build.0 = DebugDLL|Win32
-		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Release|x64.ActiveCfg = Release|x64
-		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Release|x64.Build.0 = Release|x64
-		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Release|x86.ActiveCfg = Release|Win32
-		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Release|x86.Build.0 = Release|Win32
-		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64
-		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64
-		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.ReleaseDLL|x86.ActiveCfg = ReleaseDLL|Win32
-		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.ReleaseDLL|x86.Build.0 = ReleaseDLL|Win32
-		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Debug|x64.ActiveCfg = Debug|x64
-		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Debug|x64.Build.0 = Debug|x64
-		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Debug|x86.ActiveCfg = Debug|Win32
-		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Debug|x86.Build.0 = Debug|Win32
-		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.DebugDLL|x64.ActiveCfg = DebugDLL|x64
-		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.DebugDLL|x64.Build.0 = DebugDLL|x64
-		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.DebugDLL|x86.ActiveCfg = DebugDLL|Win32
-		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.DebugDLL|x86.Build.0 = DebugDLL|Win32
-		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Release|x64.ActiveCfg = Release|x64
-		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Release|x64.Build.0 = Release|x64
-		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Release|x86.ActiveCfg = Release|Win32
-		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Release|x86.Build.0 = Release|Win32
-		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64
-		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64
-		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.ReleaseDLL|x86.ActiveCfg = ReleaseDLL|Win32
-		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.ReleaseDLL|x86.Build.0 = ReleaseDLL|Win32
-		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Debug|x64.ActiveCfg = Debug|x64
-		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Debug|x64.Build.0 = Debug|x64
-		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Debug|x86.ActiveCfg = Debug|Win32
-		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Debug|x86.Build.0 = Debug|Win32
-		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.DebugDLL|x64.ActiveCfg = DebugDLL|x64
-		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.DebugDLL|x64.Build.0 = DebugDLL|x64
-		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.DebugDLL|x86.ActiveCfg = DebugDLL|Win32
-		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.DebugDLL|x86.Build.0 = DebugDLL|Win32
-		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Release|x64.ActiveCfg = Release|x64
-		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Release|x64.Build.0 = Release|x64
-		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Release|x86.ActiveCfg = Release|Win32
-		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Release|x86.Build.0 = Release|Win32
-		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64
-		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64
-		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.ReleaseDLL|x86.ActiveCfg = ReleaseDLL|Win32
-		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.ReleaseDLL|x86.Build.0 = ReleaseDLL|Win32
-		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Debug|x64.ActiveCfg = Debug|x64
-		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Debug|x64.Build.0 = Debug|x64
-		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Debug|x86.ActiveCfg = Debug|Win32
-		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Debug|x86.Build.0 = Debug|Win32
-		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.DebugDLL|x64.ActiveCfg = DebugDLL|x64
-		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.DebugDLL|x64.Build.0 = DebugDLL|x64
-		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.DebugDLL|x86.ActiveCfg = DebugDLL|Win32
-		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.DebugDLL|x86.Build.0 = DebugDLL|Win32
-		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Release|x64.ActiveCfg = Release|x64
-		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Release|x64.Build.0 = Release|x64
-		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Release|x86.ActiveCfg = Release|Win32
-		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Release|x86.Build.0 = Release|Win32
-		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64
-		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64
-		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.ReleaseDLL|x86.ActiveCfg = ReleaseDLL|Win32
-		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.ReleaseDLL|x86.Build.0 = ReleaseDLL|Win32
-		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Debug|x64.ActiveCfg = Debug|x64
-		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Debug|x64.Build.0 = Debug|x64
-		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Debug|x86.ActiveCfg = Debug|Win32
-		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Debug|x86.Build.0 = Debug|Win32
-		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.DebugDLL|x64.ActiveCfg = DebugDLL|x64
-		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.DebugDLL|x64.Build.0 = DebugDLL|x64
-		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.DebugDLL|x86.ActiveCfg = DebugDLL|Win32
-		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.DebugDLL|x86.Build.0 = DebugDLL|Win32
-		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Release|x64.ActiveCfg = Release|x64
-		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Release|x64.Build.0 = Release|x64
-		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Release|x86.ActiveCfg = Release|Win32
-		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Release|x86.Build.0 = Release|Win32
-		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64
-		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64
-		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.ReleaseDLL|x86.ActiveCfg = ReleaseDLL|Win32
-		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.ReleaseDLL|x86.Build.0 = ReleaseDLL|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-	GlobalSection(NestedProjects) = preSolution
-		{9C2C266D-35A3-465F-A297-0E21D54E5C89} = {9A01C9FF-6331-4510-B971-2BCD1CA970FD}
-		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D} = {9A01C9FF-6331-4510-B971-2BCD1CA970FD}
-		{6365804B-22C6-4D5E-91F3-0C052EB55B4F} = {9A01C9FF-6331-4510-B971-2BCD1CA970FD}
-		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5} = {9A01C9FF-6331-4510-B971-2BCD1CA970FD}
-		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A} = {9A01C9FF-6331-4510-B971-2BCD1CA970FD}
-	EndGlobalSection
-EndGlobal
+﻿
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.25420.1
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libupnp", "..\build\VS2015\libupnp.vcxproj", "{6227F51A-1498-4C4A-B213-F6FDED605125}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ixml", "..\build\VS2015\ixml.vcxproj", "{9C2C266D-35A3-465F-A297-0E21D54E5C89}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dependencies", "dependencies", "{9A01C9FF-6331-4510-B971-2BCD1CA970FD}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "threadutil", "..\build\VS2015\threadutil.vcxproj", "{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|x64 = Debug|x64
+		Debug|x86 = Debug|x86
+		DebugDLL|x64 = DebugDLL|x64
+		DebugDLL|x86 = DebugDLL|x86
+		Release|x64 = Release|x64
+		Release|x86 = Release|x86
+		ReleaseDLL|x64 = ReleaseDLL|x64
+		ReleaseDLL|x86 = ReleaseDLL|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Debug|x64.ActiveCfg = Debug|x64
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Debug|x64.Build.0 = Debug|x64
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Debug|x86.ActiveCfg = Debug|Win32
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Debug|x86.Build.0 = Debug|Win32
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.DebugDLL|x64.ActiveCfg = DebugDLL|x64
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.DebugDLL|x64.Build.0 = DebugDLL|x64
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.DebugDLL|x86.ActiveCfg = DebugDLL|Win32
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.DebugDLL|x86.Build.0 = DebugDLL|Win32
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Release|x64.ActiveCfg = Release|x64
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Release|x64.Build.0 = Release|x64
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Release|x86.ActiveCfg = Release|Win32
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Release|x86.Build.0 = Release|Win32
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.ReleaseDLL|x86.ActiveCfg = ReleaseDLL|Win32
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.ReleaseDLL|x86.Build.0 = ReleaseDLL|Win32
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Debug|x64.ActiveCfg = Debug|x64
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Debug|x64.Build.0 = Debug|x64
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Debug|x86.ActiveCfg = Debug|Win32
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Debug|x86.Build.0 = Debug|Win32
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.DebugDLL|x64.ActiveCfg = DebugDLL|x64
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.DebugDLL|x64.Build.0 = DebugDLL|x64
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.DebugDLL|x86.ActiveCfg = DebugDLL|Win32
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.DebugDLL|x86.Build.0 = DebugDLL|Win32
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Release|x64.ActiveCfg = Release|x64
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Release|x64.Build.0 = Release|x64
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Release|x86.ActiveCfg = Release|Win32
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Release|x86.Build.0 = Release|Win32
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.ReleaseDLL|x86.ActiveCfg = ReleaseDLL|Win32
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.ReleaseDLL|x86.Build.0 = ReleaseDLL|Win32
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Debug|x64.ActiveCfg = Debug|x64
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Debug|x64.Build.0 = Debug|x64
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Debug|x86.ActiveCfg = Debug|Win32
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Debug|x86.Build.0 = Debug|Win32
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.DebugDLL|x64.ActiveCfg = DebugDLL|x64
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.DebugDLL|x64.Build.0 = DebugDLL|x64
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.DebugDLL|x86.ActiveCfg = DebugDLL|Win32
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.DebugDLL|x86.Build.0 = DebugDLL|Win32
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Release|x64.ActiveCfg = Release|x64
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Release|x64.Build.0 = Release|x64
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Release|x86.ActiveCfg = Release|Win32
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Release|x86.Build.0 = Release|Win32
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.ReleaseDLL|x86.ActiveCfg = ReleaseDLL|Win32
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.ReleaseDLL|x86.Build.0 = ReleaseDLL|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(NestedProjects) = preSolution
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89} = {9A01C9FF-6331-4510-B971-2BCD1CA970FD}
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D} = {9A01C9FF-6331-4510-B971-2BCD1CA970FD}
+	EndGlobalSection
+EndGlobal
--- /dev/null
+++ b/build/VS2015/ixml.vcxproj
@@ -0,0 +1,361 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DebugDLL|Win32">
+      <Configuration>DebugDLL</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DebugDLL|x64">
+      <Configuration>DebugDLL</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseDLL|Win32">
+      <Configuration>ReleaseDLL</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseDLL|x64">
+      <Configuration>ReleaseDLL</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{9C2C266D-35A3-465F-A297-0E21D54E5C89}</ProjectGuid>
+    <RootNamespace>ixml</RootNamespace>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <PlatformToolset>v140</PlatformToolset>
+    <CharacterSet>NotSet</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <PlatformToolset>v140</PlatformToolset>
+    <CharacterSet>NotSet</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <PlatformToolset>v140</PlatformToolset>
+    <CharacterSet>NotSet</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <PlatformToolset>v140</PlatformToolset>
+    <CharacterSet>NotSet</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <PlatformToolset>v140</PlatformToolset>
+    <CharacterSet>NotSet</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <PlatformToolset>v140</PlatformToolset>
+    <CharacterSet>NotSet</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <PlatformToolset>v140</PlatformToolset>
+    <CharacterSet>NotSet</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <PlatformToolset>v140</PlatformToolset>
+    <CharacterSet>NotSet</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>14.0.24730.2</_ProjectFileVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|Win32'">
+    <OutDir>$(SolutionDir)\x86\</OutDir>
+    <IntDir>$(SolutionDir)\x86\tmp\$(ProjectName)\</IntDir>
+    <EnableManagedIncrementalBuild>true</EnableManagedIncrementalBuild>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|x64'">
+    <OutDir>$(SolutionDir)\$(Platform)\</OutDir>
+    <IntDir>$(SolutionDir)\$(Platform)\tmp\$(ProjectName)\</IntDir>
+    <EnableManagedIncrementalBuild>true</EnableManagedIncrementalBuild>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">
+    <OutDir>$(SolutionDir)\x86\</OutDir>
+    <IntDir>$(SolutionDir)\x86\tmp\$(ProjectName)\</IntDir>
+    <EnableManagedIncrementalBuild>true</EnableManagedIncrementalBuild>
+    <TargetName>$(ProjectName)</TargetName>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'">
+    <OutDir>$(SolutionDir)\$(Platform)\</OutDir>
+    <IntDir>$(SolutionDir)\$(Platform)\tmp\$(ProjectName)\</IntDir>
+    <EnableManagedIncrementalBuild>true</EnableManagedIncrementalBuild>
+    <TargetName>$(ProjectName)</TargetName>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <OutDir>$(SolutionDir)\x86\</OutDir>
+    <IntDir>$(SolutionDir)\x86\tmp\$(ProjectName)\</IntDir>
+    <EnableManagedIncrementalBuild>true</EnableManagedIncrementalBuild>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <OutDir>$(SolutionDir)\$(Platform)\</OutDir>
+    <IntDir>$(SolutionDir)\$(Platform)\tmp\$(ProjectName)\</IntDir>
+    <EnableManagedIncrementalBuild>true</EnableManagedIncrementalBuild>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <OutDir>$(SolutionDir)\x86\</OutDir>
+    <IntDir>$(SolutionDir)\x86\tmp\$(ProjectName)\</IntDir>
+    <EnableManagedIncrementalBuild>true</EnableManagedIncrementalBuild>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <OutDir>$(ProjectDir)..\..\MSVC\$(Platform)\</OutDir>
+    <IntDir>$(ProjectDir)..\..\MSVC\$(Platform)\tmp\$(ProjectName)\</IntDir>
+    <EnableManagedIncrementalBuild>true</EnableManagedIncrementalBuild>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\ixml\inc;..\..\ixml\src\inc;..\inc;..\..\upnp\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_TIMESPEC_DEFINED;DEBUG;WIN32;_USRDLL;LIBUPNP_EXPORTS;UPNP_USE_MSVCPP;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL;_SCL_SECURE_NO_WARNINGS;_SCL_SECURE_NO_DEPRECATE;_AFX_SECURE_NO_WARNINGS;_AFX_SECURE_NO_DEPRECATE;_SECURE_ATL;_ATL_NO_COM_SUPPORT;_ATL_SECURE_NO_WARNINGS;_ATL_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeaderOutputFile />
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4244;4267;4311;4477;4996;</DisableSpecificWarnings>
+    </ClCompile>
+    <Lib>
+      <AdditionalLibraryDirectories>$(OutDir);$(OutDir)..\lib;$(OutDir)..\bin;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\ixml\inc;..\..\ixml\src\inc;..\inc;..\..\upnp\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_TIMESPEC_DEFINED;DEBUG;WIN32;_USRDLL;LIBUPNP_EXPORTS;UPNP_USE_MSVCPP;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL;_SCL_SECURE_NO_WARNINGS;_SCL_SECURE_NO_DEPRECATE;_AFX_SECURE_NO_WARNINGS;_AFX_SECURE_NO_DEPRECATE;_SECURE_ATL;_ATL_NO_COM_SUPPORT;_ATL_SECURE_NO_WARNINGS;_ATL_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeaderOutputFile />
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4244;4267;4311;4477;4996;</DisableSpecificWarnings>
+    </ClCompile>
+    <Lib>
+      <AdditionalLibraryDirectories>$(OutDir);$(OutDir)..\lib;$(OutDir)..\bin;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>..\..\ixml\inc;..\..\ixml\src\inc;..\inc;..\..\upnp\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_TIMESPEC_DEFINED;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBUPNP_EXPORTS;UPNP_USE_MSVCPP;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL;_SCL_SECURE_NO_WARNINGS;_SCL_SECURE_NO_DEPRECATE;_AFX_SECURE_NO_WARNINGS;_AFX_SECURE_NO_DEPRECATE;_SECURE_ATL;_ATL_NO_COM_SUPPORT;_ATL_SECURE_NO_WARNINGS;_ATL_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile />
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4244;4267;4311;4477;4996;</DisableSpecificWarnings>
+    </ClCompile>
+    <Lib>
+      <AdditionalLibraryDirectories>$(OutDir);$(OutDir)..\lib;$(OutDir)..\bin;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>..\..\ixml\inc;..\..\ixml\src\inc;..\inc;..\..\upnp\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_TIMESPEC_DEFINED;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBUPNP_EXPORTS;UPNP_USE_MSVCPP;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL;_SCL_SECURE_NO_WARNINGS;_SCL_SECURE_NO_DEPRECATE;_AFX_SECURE_NO_WARNINGS;_AFX_SECURE_NO_DEPRECATE;_SECURE_ATL;_ATL_NO_COM_SUPPORT;_ATL_SECURE_NO_WARNINGS;_ATL_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile />
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4244;4267;4311;4477;4996;</DisableSpecificWarnings>
+    </ClCompile>
+    <Lib>
+      <AdditionalLibraryDirectories>$(OutDir);$(OutDir)..\lib;$(OutDir)..\bin;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\ixml\inc;..\..\ixml\src\inc;..\inc;..\..\upnp\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_TIMESPEC_DEFINED;DEBUG;WIN32;PTW32_STATIC_LIB;UPNP_STATIC_LIB;UPNP_USE_MSVCPP;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL;_SCL_SECURE_NO_WARNINGS;_SCL_SECURE_NO_DEPRECATE;_AFX_SECURE_NO_WARNINGS;_AFX_SECURE_NO_DEPRECATE;_SECURE_ATL;_ATL_NO_COM_SUPPORT;_ATL_SECURE_NO_WARNINGS;_ATL_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <PrecompiledHeaderOutputFile />
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4244;4267;4311;4477;4996;</DisableSpecificWarnings>
+    </ClCompile>
+    <Lib>
+      <AdditionalLibraryDirectories>$(OutDir);$(OutDir)..\lib;$(OutDir)..\bin;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\ixml\inc;..\..\ixml\src\inc;..\inc;..\..\upnp\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_TIMESPEC_DEFINED;DEBUG;WIN32;PTW32_STATIC_LIB;UPNP_STATIC_LIB;UPNP_USE_MSVCPP;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL;_SCL_SECURE_NO_WARNINGS;_SCL_SECURE_NO_DEPRECATE;_AFX_SECURE_NO_WARNINGS;_AFX_SECURE_NO_DEPRECATE;_SECURE_ATL;_ATL_NO_COM_SUPPORT;_ATL_SECURE_NO_WARNINGS;_ATL_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <PrecompiledHeaderOutputFile />
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4244;4267;4311;4477;4996;</DisableSpecificWarnings>
+    </ClCompile>
+    <Lib>
+      <AdditionalLibraryDirectories>$(OutDir);$(OutDir)..\lib;$(OutDir)..\bin;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>..\..\ixml\inc;..\..\ixml\src\inc;..\inc;..\..\upnp\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_TIMESPEC_DEFINED;WIN32;NDEBUG;RELEASE;_WINDOWS;PTW32_STATIC_LIB;UPNP_STATIC_LIB;UPNP_USE_MSVCPP;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL;_SCL_SECURE_NO_WARNINGS;_SCL_SECURE_NO_DEPRECATE;_AFX_SECURE_NO_WARNINGS;_AFX_SECURE_NO_DEPRECATE;_SECURE_ATL;_ATL_NO_COM_SUPPORT;_ATL_SECURE_NO_WARNINGS;_ATL_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile />
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4244;4267;4311;4477;4996;</DisableSpecificWarnings>
+    </ClCompile>
+    <Lib>
+      <AdditionalLibraryDirectories>$(OutDir);$(OutDir)..\lib;$(OutDir)..\bin;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>..\..\ixml\inc;..\..\ixml\src\inc;..\inc;..\..\upnp\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_TIMESPEC_DEFINED;WIN32;NDEBUG;RELEASE;_WINDOWS;PTW32_STATIC_LIB;UPNP_STATIC_LIB;UPNP_USE_MSVCPP;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL;_SCL_SECURE_NO_WARNINGS;_SCL_SECURE_NO_DEPRECATE;_AFX_SECURE_NO_WARNINGS;_AFX_SECURE_NO_DEPRECATE;_SECURE_ATL;_ATL_NO_COM_SUPPORT;_ATL_SECURE_NO_WARNINGS;_ATL_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile />
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4244;4267;4311;4477;4996;</DisableSpecificWarnings>
+    </ClCompile>
+    <Lib>
+      <AdditionalLibraryDirectories>$(OutDir);$(OutDir)..\lib;$(OutDir)..\bin;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\ixml\src\attr.c" />
+    <ClCompile Include="..\..\ixml\src\document.c" />
+    <ClCompile Include="..\..\ixml\src\element.c" />
+    <ClCompile Include="..\..\ixml\src\ixml.c" />
+    <ClCompile Include="..\..\ixml\src\ixmldebug.c" />
+    <ClCompile Include="..\..\ixml\src\ixmlmembuf.c" />
+    <ClCompile Include="..\..\ixml\src\ixmlparser.c" />
+    <ClCompile Include="..\..\ixml\src\namedNodeMap.c" />
+    <ClCompile Include="..\..\ixml\src\node.c" />
+    <ClCompile Include="..\..\ixml\src\nodeList.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\ixml\inc\ixml.h" />
+    <ClInclude Include="..\..\ixml\inc\ixmldebug.h" />
+    <ClInclude Include="..\..\ixml\src\inc\ixmlmembuf.h" />
+    <ClInclude Include="..\..\ixml\src\inc\ixmlparser.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
--- /dev/null
+++ b/build/VS2015/ixml.vcxproj.filters
@@ -0,0 +1,59 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\ixml\src\attr.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\ixml\src\document.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\ixml\src\element.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\ixml\src\ixml.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\ixml\src\ixmldebug.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\ixml\src\ixmlmembuf.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\ixml\src\ixmlparser.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\ixml\src\namedNodeMap.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\ixml\src\node.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\ixml\src\nodeList.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\ixml\inc\ixml.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\ixml\inc\ixmldebug.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\ixml\src\inc\ixmlmembuf.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\ixml\src\inc\ixmlparser.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+</Project>
\ No newline at end of file
--- /dev/null
+++ b/build/VS2015/libupnp.sln
@@ -0,0 +1,130 @@
+﻿
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.24720.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libupnp", "libupnp.vcxproj", "{6227F51A-1498-4C4A-B213-F6FDED605125}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ixml", "ixml.vcxproj", "{9C2C266D-35A3-465F-A297-0E21D54E5C89}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "threadutil", "threadutil.vcxproj", "{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tvctrlpt", "tvctrlpt.vcxproj", "{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tvdevice", "tvdevice.vcxproj", "{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tvcombo", "tvcombo.vcxproj", "{6365804B-22C6-4D5E-91F3-0C052EB55B4F}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug Lib|Win32 = Debug Lib|Win32
+		Debug Lib|x64 = Debug Lib|x64
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Release Lib|Win32 = Release Lib|Win32
+		Release Lib|x64 = Release Lib|x64
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Debug Lib|Win32.ActiveCfg = Debug Lib|Win32
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Debug Lib|Win32.Build.0 = Debug Lib|Win32
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Debug Lib|x64.ActiveCfg = Debug Lib|x64
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Debug Lib|x64.Build.0 = Debug Lib|x64
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Debug|Win32.ActiveCfg = Debug|Win32
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Debug|Win32.Build.0 = Debug|Win32
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Debug|x64.ActiveCfg = Debug|x64
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Debug|x64.Build.0 = Debug|x64
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Release Lib|Win32.ActiveCfg = Release Lib|Win32
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Release Lib|Win32.Build.0 = Release Lib|Win32
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Release Lib|x64.ActiveCfg = Release Lib|x64
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Release Lib|x64.Build.0 = Release Lib|x64
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Release|Win32.ActiveCfg = Release|Win32
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Release|Win32.Build.0 = Release|Win32
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Release|x64.ActiveCfg = Release|x64
+		{6227F51A-1498-4C4A-B213-F6FDED605125}.Release|x64.Build.0 = Release|x64
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Debug Lib|Win32.ActiveCfg = Debug Lib|Win32
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Debug Lib|Win32.Build.0 = Debug Lib|Win32
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Debug Lib|x64.ActiveCfg = Debug Lib|x64
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Debug Lib|x64.Build.0 = Debug Lib|x64
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Debug|Win32.ActiveCfg = Debug|Win32
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Debug|Win32.Build.0 = Debug|Win32
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Debug|x64.ActiveCfg = Debug|x64
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Debug|x64.Build.0 = Debug|x64
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Release Lib|Win32.ActiveCfg = Release Lib|Win32
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Release Lib|Win32.Build.0 = Release Lib|Win32
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Release Lib|x64.ActiveCfg = Release Lib|x64
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Release Lib|x64.Build.0 = Release Lib|x64
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Release|Win32.ActiveCfg = Release|Win32
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Release|Win32.Build.0 = Release|Win32
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Release|x64.ActiveCfg = Release|x64
+		{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Release|x64.Build.0 = Release|x64
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Debug Lib|Win32.ActiveCfg = Debug Lib|Win32
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Debug Lib|Win32.Build.0 = Debug Lib|Win32
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Debug Lib|x64.ActiveCfg = Debug Lib|x64
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Debug Lib|x64.Build.0 = Debug Lib|x64
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Debug|Win32.ActiveCfg = Debug|Win32
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Debug|Win32.Build.0 = Debug|Win32
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Debug|x64.ActiveCfg = Debug|x64
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Debug|x64.Build.0 = Debug|x64
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Release Lib|Win32.ActiveCfg = Release Lib|Win32
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Release Lib|Win32.Build.0 = Release Lib|Win32
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Release Lib|x64.ActiveCfg = Release Lib|x64
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Release Lib|x64.Build.0 = Release Lib|x64
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Release|Win32.ActiveCfg = Release|Win32
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Release|Win32.Build.0 = Release|Win32
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Release|x64.ActiveCfg = Release|x64
+		{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Release|x64.Build.0 = Release|x64
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Debug Lib|Win32.ActiveCfg = Debug Lib|Win32
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Debug Lib|Win32.Build.0 = Debug Lib|Win32
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Debug Lib|x64.ActiveCfg = Debug Lib|x64
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Debug Lib|x64.Build.0 = Debug Lib|x64
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Debug|Win32.ActiveCfg = Debug|Win32
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Debug|Win32.Build.0 = Debug|Win32
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Debug|x64.ActiveCfg = Debug|x64
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Debug|x64.Build.0 = Debug|x64
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Release Lib|Win32.ActiveCfg = Release Lib|Win32
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Release Lib|Win32.Build.0 = Release Lib|Win32
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Release Lib|x64.ActiveCfg = Release Lib|x64
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Release Lib|x64.Build.0 = Release Lib|x64
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Release|Win32.ActiveCfg = Release|Win32
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Release|Win32.Build.0 = Release|Win32
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Release|x64.ActiveCfg = Release|x64
+		{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Release|x64.Build.0 = Release|x64
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Debug Lib|Win32.ActiveCfg = Debug Lib|Win32
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Debug Lib|Win32.Build.0 = Debug Lib|Win32
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Debug Lib|x64.ActiveCfg = Debug Lib|x64
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Debug Lib|x64.Build.0 = Debug Lib|x64
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Debug|Win32.ActiveCfg = Debug|Win32
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Debug|Win32.Build.0 = Debug|Win32
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Debug|x64.ActiveCfg = Debug|x64
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Debug|x64.Build.0 = Debug|x64
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Release Lib|Win32.ActiveCfg = Release Lib|Win32
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Release Lib|Win32.Build.0 = Release Lib|Win32
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Release Lib|x64.ActiveCfg = Release Lib|x64
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Release Lib|x64.Build.0 = Release Lib|x64
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Release|Win32.ActiveCfg = Release|Win32
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Release|Win32.Build.0 = Release|Win32
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Release|x64.ActiveCfg = Release|x64
+		{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Release|x64.Build.0 = Release|x64
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Debug Lib|Win32.ActiveCfg = Debug Lib|Win32
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Debug Lib|Win32.Build.0 = Debug Lib|Win32
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Debug Lib|x64.ActiveCfg = Debug Lib|x64
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Debug Lib|x64.Build.0 = Debug Lib|x64
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Debug|Win32.ActiveCfg = Debug|Win32
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Debug|Win32.Build.0 = Debug|Win32
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Debug|x64.ActiveCfg = Debug|x64
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Debug|x64.Build.0 = Debug|x64
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Release Lib|Win32.ActiveCfg = Release Lib|Win32
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Release Lib|Win32.Build.0 = Release Lib|Win32
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Release Lib|x64.ActiveCfg = Release Lib|x64
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Release Lib|x64.Build.0 = Release Lib|x64
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Release|Win32.ActiveCfg = Release|Win32
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Release|Win32.Build.0 = Release|Win32
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Release|x64.ActiveCfg = Release|x64
+		{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Release|x64.Build.0 = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
--- /dev/null
+++ b/build/VS2015/libupnp.vcxproj
@@ -0,0 +1,768 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DebugDLL|Win32">
+      <Configuration>DebugDLL</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DebugDLL|x64">
+      <Configuration>DebugDLL</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseDLL|Win32">
+      <Configuration>ReleaseDLL</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseDLL|x64">
+      <Configuration>ReleaseDLL</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{6227F51A-1498-4C4A-B213-F6FDED605125}</ProjectGuid>
+    <RootNamespace>libupnp</RootNamespace>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <PlatformToolset>v140</PlatformToolset>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>NotSet</CharacterSet>
+    <WholeProgramOptimization>false</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <PlatformToolset>v140</PlatformToolset>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>NotSet</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <PlatformToolset>v140</PlatformToolset>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>NotSet</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <PlatformToolset>v140</PlatformToolset>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>NotSet</CharacterSet>
+    <WholeProgramOptimization>false</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <PlatformToolset>v140</PlatformToolset>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>NotSet</CharacterSet>
+    <WholeProgramOptimization>false</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <PlatformToolset>v140</PlatformToolset>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>NotSet</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <PlatformToolset>v140</PlatformToolset>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>NotSet</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <PlatformToolset>v140</PlatformToolset>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>NotSet</CharacterSet>
+    <WholeProgramOptimization>false</WholeProgramOptimization>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>14.0.24730.2</_ProjectFileVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">
+    <OutDir>$(SolutionDir)\x86\</OutDir>
+    <IntDir>$(SolutionDir)\x86\tmp\$(ProjectName)\</IntDir>
+    <LinkIncremental>false</LinkIncremental>
+    <TargetName>libupnp</TargetName>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'">
+    <OutDir>$(SolutionDir)\$(Platform)\</OutDir>
+    <IntDir>$(SolutionDir)\$(Platform)\tmp\$(ProjectName)\</IntDir>
+    <LinkIncremental>false</LinkIncremental>
+    <TargetName>libupnp</TargetName>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|Win32'">
+    <OutDir>$(SolutionDir)\x86\</OutDir>
+    <IntDir>$(SolutionDir)\x86\tmp\$(ProjectName)\</IntDir>
+    <LinkIncremental>false</LinkIncremental>
+    <TargetExt>.dll</TargetExt>
+    <TargetName>libupnpd</TargetName>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|x64'">
+    <OutDir>$(SolutionDir)\$(Platform)\</OutDir>
+    <IntDir>$(SolutionDir)\$(Platform)\tmp\$(ProjectName)\</IntDir>
+    <LinkIncremental>false</LinkIncremental>
+    <TargetName>libupnpd</TargetName>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <OutDir>$(SolutionDir)\x86\</OutDir>
+    <IntDir>$(SolutionDir)\x86\tmp\$(ProjectName)\</IntDir>
+    <TargetName>libupnpd</TargetName>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <OutDir>$(SolutionDir)\$(Platform)\</OutDir>
+    <IntDir>$(SolutionDir)\$(Platform)\tmp\$(ProjectName)\</IntDir>
+    <TargetName>libupnpd</TargetName>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <OutDir>$(SolutionDir)\x86\</OutDir>
+    <IntDir>$(SolutionDir)\x86\tmp\$(ProjectName)\</IntDir>
+    <TargetName>libupnp</TargetName>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <OutDir>$(ProjectDir)..\..\MSVC\$(Platform)\</OutDir>
+    <IntDir>$(ProjectDir)..\..\MSVC\$(Platform)\tmp\$(ProjectName)\</IntDir>
+    <TargetName>libupnp</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>Win32</TargetEnvironment>
+      <TypeLibraryName>.\Release/libupnp.tlb</TypeLibraryName>
+      <HeaderFileName />
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <WholeProgramOptimization>false</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>..\inc;..\msvc;..\..\upnp\inc;..\..\upnp\src\inc;..\..\ixml\inc;..\..\ixml\src\inc;..\..\threadutil\inc;..\..\pthreads;..\..\pthreads\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_TIMESPEC_DEFINED;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBUPNP_EXPORTS;UPNP_USE_MSVCPP;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL;_SCL_SECURE_NO_WARNINGS;_SCL_SECURE_NO_DEPRECATE;_AFX_SECURE_NO_WARNINGS;_AFX_SECURE_NO_DEPRECATE;_SECURE_ATL;_ATL_NO_COM_SUPPORT;_ATL_SECURE_NO_WARNINGS;_ATL_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile />
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <BrowseInformation />
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4244;4267;4311;4477;4996;</DisableSpecificWarnings>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0407</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>pthreadvc2.lib;ws2_32.lib;iphlpapi.lib;ixml.lib;threadutil.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)$(TargetName).dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\pthreads\;..\..\pthreads\lib;$(OutDir)..\lib;$(OutDir)..\bin;$(OutDir)%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention />
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <Bscmake>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <OutputFile>.\Release/libupnp.bsc</OutputFile>
+    </Bscmake>
+    <PostBuildEvent>
+      <Command>mkdir $(SolutionDir)..\..\include
+mkdir $(SolutionDir)..\..\include\upnp
+xcopy /S /Y $(SolutionDir)..\upnp\inc\*.h $(SolutionDir)..\..\include\upnp
+xcopy /S /Y $(SolutionDir)..\build\inc\*.h $(SolutionDir)..\..\include\upnp
+xcopy /S /Y $(SolutionDir)..\ixml\src\inc\*.h $(SolutionDir)..\..\include\upnp
+xcopy /S /Y $(SolutionDir)..\ixml\inc\*.h $(SolutionDir)..\..\include\upnp
+mkdir $(SolutionDir)..\..\lib
+mkdir $(SolutionDir)..\..\lib\x86
+xcopy /S /Y $(OutDir)libupnp.lib $(SolutionDir)..\..\lib\x86
+mkdir $(SolutionDir)..\..\bin
+mkdir $(SolutionDir)..\..\bin\x86
+xcopy /S /Y $(OutDir)libupnp.dll $(SolutionDir)..\..\bin\x86
+xcopy /S /Y $(OutDir)libupnp.dll $(SolutionDir)..\upnp\sample</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\Release/libupnp.tlb</TypeLibraryName>
+      <HeaderFileName />
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <WholeProgramOptimization>false</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>..\inc;..\msvc;..\..\upnp\inc;..\..\upnp\src\inc;..\..\ixml\inc;..\..\ixml\src\inc;..\..\threadutil\inc;..\..\pthreads;..\..\pthreads\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_TIMESPEC_DEFINED;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBUPNP_EXPORTS;UPNP_USE_MSVCPP;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL;_SCL_SECURE_NO_WARNINGS;_SCL_SECURE_NO_DEPRECATE;_AFX_SECURE_NO_WARNINGS;_AFX_SECURE_NO_DEPRECATE;_SECURE_ATL;_ATL_NO_COM_SUPPORT;_ATL_SECURE_NO_WARNINGS;_ATL_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile />
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <BrowseInformation />
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4244;4267;4311;4477;4996;</DisableSpecificWarnings>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0407</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>pthreadvc2.lib;ws2_32.lib;iphlpapi.lib;ixml.lib;threadutil.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)$(TargetName).dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\pthreads\;..\..\pthreads\lib;$(OutDir)..\lib;$(OutDir)..\bin;$(OutDir)%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention />
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+    <Bscmake>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <OutputFile>.\Release/libupnp.bsc</OutputFile>
+    </Bscmake>
+    <PostBuildEvent>
+      <Command>mkdir $(SolutionDir)..\..\include
+mkdir $(SolutionDir)..\..\include\upnp
+xcopy /S /Y $(SolutionDir)..\upnp\inc\*.h $(SolutionDir)..\..\include\upnp
+xcopy /S /Y $(SolutionDir)..\build\inc\*.h $(SolutionDir)..\..\include\upnp
+xcopy /S /Y $(SolutionDir)..\ixml\src\inc\*.h $(SolutionDir)..\..\include\upnp
+xcopy /S /Y $(SolutionDir)..\ixml\inc\*.h $(SolutionDir)..\..\include\upnp
+mkdir $(SolutionDir)..\..\lib
+mkdir $(SolutionDir)..\..\lib\x64
+xcopy /S /Y $(OutDir)libupnp.lib $(SolutionDir)..\..\lib\x64
+mkdir $(SolutionDir)..\..\bin
+mkdir $(SolutionDir)..\..\bin\x64
+xcopy /S /Y $(OutDir)libupnp.dll $(SolutionDir)..\..\bin\x64
+xcopy /S /Y $(OutDir)libupnp.dll $(SolutionDir)..\upnp\sample</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|Win32'">
+    <Midl>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>Win32</TargetEnvironment>
+      <TypeLibraryName>.\Debug/libupnp.tlb</TypeLibraryName>
+      <HeaderFileName />
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\inc;..\msvc;..\..\upnp\inc;..\..\upnp\src\inc;..\..\ixml\inc;..\..\ixml\src\inc;..\..\threadutil\inc;..\..\pthreads;..\..\pthreads\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_TIMESPEC_DEFINED;WIN32;_USRDLL;LIBUPNP_EXPORTS;UPNP_USE_MSVCPP;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL;_SCL_SECURE_NO_WARNINGS;_SCL_SECURE_NO_DEPRECATE;_AFX_SECURE_NO_WARNINGS;_AFX_SECURE_NO_DEPRECATE;_SECURE_ATL;_ATL_NO_COM_SUPPORT;_ATL_SECURE_NO_WARNINGS;_ATL_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeaderOutputFile />
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <BrowseInformation />
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4244;4267;4311;4477;4996;</DisableSpecificWarnings>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0407</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>pthreadvc2.lib;ws2_32.lib;iphlpapi.lib;ixml.lib;threadutil.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)$(TargetName).dll</OutputFile>
+      <SuppressStartupBanner>false</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\pthreads\;..\..\pthreads\lib;$(OutDir)..\lib;$(OutDir)..\bin;$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention />
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <Bscmake>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <OutputFile>$(OutDir)libupnp.bsc</OutputFile>
+    </Bscmake>
+    <ProjectReference>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+    </ProjectReference>
+    <PostBuildEvent>
+      <Command>mkdir $(SolutionDir)..\..\include
+mkdir $(SolutionDir)..\..\include\upnp
+xcopy /S /Y $(SolutionDir)..\upnp\inc\*.h $(SolutionDir)..\..\include\upnp
+xcopy /S /Y $(SolutionDir)..\build\inc\*.h $(SolutionDir)..\..\include\upnp
+xcopy /S /Y $(SolutionDir)..\ixml\src\inc\*.h $(SolutionDir)..\..\include\upnp
+xcopy /S /Y $(SolutionDir)..\ixml\inc\*.h $(SolutionDir)..\..\include\upnp
+mkdir $(SolutionDir)..\..\lib
+mkdir $(SolutionDir)..\..\lib\x86
+xcopy /S /Y $(OutDir)libupnpd.lib $(SolutionDir)..\..\lib\x86
+mkdir $(SolutionDir)..\..\bin
+mkdir $(SolutionDir)..\..\bin\x86
+xcopy /S /Y $(OutDir)libupnpd.dll $(SolutionDir)..\..\bin\x86
+xcopy /S /Y $(OutDir)libupnpd.dll $(SolutionDir)..\upnp\sample</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|x64'">
+    <Midl>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\Debug/libupnp.tlb</TypeLibraryName>
+      <HeaderFileName />
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\inc;..\msvc;..\..\upnp\inc;..\..\upnp\src\inc;..\..\ixml\inc;..\..\ixml\src\inc;..\..\threadutil\inc;..\..\pthreads;..\..\pthreads\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_TIMESPEC_DEFINED;DEBUG;WIN32;_USRDLL;LIBUPNP_EXPORTS;UPNP_USE_MSVCPP;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL;_SCL_SECURE_NO_WARNINGS;_SCL_SECURE_NO_DEPRECATE;_AFX_SECURE_NO_WARNINGS;_AFX_SECURE_NO_DEPRECATE;_SECURE_ATL;_ATL_NO_COM_SUPPORT;_ATL_SECURE_NO_WARNINGS;_ATL_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeaderOutputFile />
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <BrowseInformation />
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4244;4267;4311;4477;4996;</DisableSpecificWarnings>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0407</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>pthreadvc2.lib;ws2_32.lib;iphlpapi.lib;ixml.lib;threadutil.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)$(TargetName).dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>..\..\pthreads\;..\..\pthreads\lib;$(OutDir)..\lib;$(OutDir)..\bin;$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention />
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+    <Bscmake>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <OutputFile>$(OutDir)libupnp.bsc</OutputFile>
+    </Bscmake>
+    <PostBuildEvent>
+      <Command>mkdir $(SolutionDir)..\..\include
+mkdir $(SolutionDir)..\..\include\upnp
+xcopy /S /Y $(SolutionDir)..\upnp\inc\*.h $(SolutionDir)..\..\include\upnp
+xcopy /S /Y $(SolutionDir)..\build\inc\*.h $(SolutionDir)..\..\include\upnp
+xcopy /S /Y $(SolutionDir)..\ixml\src\inc\*.h $(SolutionDir)..\..\include\upnp
+xcopy /S /Y $(SolutionDir)..\ixml\inc\*.h $(SolutionDir)..\..\include\upnp
+mkdir $(SolutionDir)..\..\lib
+mkdir $(SolutionDir)..\..\lib\x64
+xcopy /S /Y $(OutDir)libupnpd.lib $(SolutionDir)..\..\lib\x64
+mkdir $(SolutionDir)..\..\bin
+mkdir $(SolutionDir)..\..\bin\x64
+xcopy /S /Y $(OutDir)libupnpd.dll $(SolutionDir)..\..\bin\64
+xcopy /S /Y $(OutDir)libupnpd.dll $(SolutionDir)..\upnp\sample</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>Win32</TargetEnvironment>
+      <TypeLibraryName>.\Debug/libupnp.tlb</TypeLibraryName>
+      <HeaderFileName />
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\inc;..\msvc;..\..\upnp\inc;..\..\upnp\src\inc;..\..\ixml\inc;..\..\ixml\src\inc;..\..\threadutil\inc;..\..\pthreads;..\..\pthreads\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_TIMESPEC_DEFINED;WIN32;DEBUG;_WINDOWS;PTW32_STATIC_LIB;UPNP_STATIC_LIB;UPNP_USE_MSVCPP;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL;_SCL_SECURE_NO_WARNINGS;_SCL_SECURE_NO_DEPRECATE;_AFX_SECURE_NO_WARNINGS;_AFX_SECURE_NO_DEPRECATE;_SECURE_ATL;_ATL_NO_COM_SUPPORT;_ATL_SECURE_NO_WARNINGS;_ATL_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <PrecompiledHeaderOutputFile />
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <BrowseInformation />
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4244;4267;4311;4477;4996;</DisableSpecificWarnings>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0407</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalLibraryDirectories>..\..\pthreads\;..\..\pthreads\lib;$(OutDir)..\lib;$(OutDir)..\bin;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <SuppressStartupBanner>false</SuppressStartupBanner>
+    </Lib>
+    <Bscmake>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <OutputFile>$(OutDir)libupnp.bsc</OutputFile>
+    </Bscmake>
+    <ProjectReference>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+    </ProjectReference>
+    <PostBuildEvent>
+      <Command>mkdir $(SolutionDir)..\..\include
+mkdir $(SolutionDir)..\..\include\upnp
+xcopy /S /Y $(SolutionDir)..\upnp\inc\*.h $(SolutionDir)..\..\include\upnp
+xcopy /S /Y $(SolutionDir)..\build\inc\*.h $(SolutionDir)..\..\include\upnp
+xcopy /S /Y $(SolutionDir)..\ixml\src\inc\*.h $(SolutionDir)..\..\include\upnp
+xcopy /S /Y $(SolutionDir)..\ixml\inc\*.h $(SolutionDir)..\..\include\upnp
+mkdir $(SolutionDir)..\..\lib
+mkdir $(SolutionDir)..\..\lib\x86
+xcopy /S /Y $(OutDir)libupnpd.lib $(SolutionDir)..\..\lib\x86</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\Debug/libupnp.tlb</TypeLibraryName>
+      <HeaderFileName />
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\inc;..\msvc;..\..\upnp\inc;..\..\upnp\src\inc;..\..\ixml\inc;..\..\ixml\src\inc;..\..\threadutil\inc;..\..\pthreads;..\..\pthreads\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_TIMESPEC_DEFINED;WIN32;DEBUG;_WINDOWS;PTW32_STATIC_LIB;UPNP_STATIC_LIB;UPNP_USE_MSVCPP;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL;_SCL_SECURE_NO_WARNINGS;_SCL_SECURE_NO_DEPRECATE;_AFX_SECURE_NO_WARNINGS;_AFX_SECURE_NO_DEPRECATE;_SECURE_ATL;_ATL_NO_COM_SUPPORT;_ATL_SECURE_NO_WARNINGS;_ATL_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <PrecompiledHeaderOutputFile />
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <BrowseInformation />
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4244;4267;4311;4477;4996;</DisableSpecificWarnings>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0407</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalLibraryDirectories>..\..\pthreads\;..\..\pthreads\lib;$(OutDir)..\lib;$(OutDir)..\bin;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+    </Lib>
+    <Bscmake>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <OutputFile>$(OutDir)libupnp.bsc</OutputFile>
+    </Bscmake>
+    <PostBuildEvent>
+      <Command>mkdir $(SolutionDir)..\..\include
+xcopy /S /Y $(SolutionDir)..\upnp\inc\*.h $(SolutionDir)..\..\include
+xcopy /S /Y $(SolutionDir)..\build\inc\*.h $(SolutionDir)..\..\include
+xcopy /S /Y $(SolutionDir)..\ixml\src\inc\*.h $(SolutionDir)..\..\include
+xcopy /S /Y $(SolutionDir)..\ixml\inc\*.h $(SolutionDir)..\..\include
+mkdir $(SolutionDir)..\..\lib
+mkdir $(SolutionDir)..\..\lib\x64
+xcopy /S /Y $(OutDir)libupnpd.lib $(SolutionDir)..\..\lib\x64</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>Win32</TargetEnvironment>
+      <TypeLibraryName>.\Release/libupnp.tlb</TypeLibraryName>
+      <HeaderFileName />
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <WholeProgramOptimization>false</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>..\inc;..\msvc;..\..\upnp\inc;..\..\upnp\src\inc;..\..\ixml\inc;..\..\ixml\src\inc;..\..\threadutil\inc;..\..\pthreads;..\..\pthreads\include;$(ProjectDir)..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_TIMESPEC_DEFINED;WIN32;NDEBUG;RELEASE;_WINDOWS;PTW32_STATIC_LIB;UPNP_STATIC_LIB;UPNP_USE_MSVCPP;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL;_SCL_SECURE_NO_WARNINGS;_SCL_SECURE_NO_DEPRECATE;_AFX_SECURE_NO_WARNINGS;_AFX_SECURE_NO_DEPRECATE;_SECURE_ATL;_ATL_NO_COM_SUPPORT;_ATL_SECURE_NO_WARNINGS;_ATL_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile />
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <BrowseInformation />
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4244;4267;4311;4477;4996;</DisableSpecificWarnings>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0407</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalLibraryDirectories>..\..\pthreads\;..\..\pthreads\lib;$(OutDir)..\lib;$(OutDir)..\bin;$(ProjectDir)..\..\..\bin\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+    </Lib>
+    <Bscmake>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <OutputFile>.\Release/libupnp.bsc</OutputFile>
+    </Bscmake>
+    <PostBuildEvent>
+      <Command>mkdir $(SolutionDir)..\..\include
+mkdir $(SolutionDir)..\..\include\upnp
+xcopy /S /Y $(SolutionDir)..\upnp\inc\*.h $(SolutionDir)..\..\include\upnp
+xcopy /S /Y $(SolutionDir)..\build\inc\*.h $(SolutionDir)..\..\include\upnp
+xcopy /S /Y $(SolutionDir)..\ixml\src\inc\*.h $(SolutionDir)..\..\include\upnp
+xcopy /S /Y $(SolutionDir)..\ixml\inc\*.h $(SolutionDir)..\..\include\upnp
+mkdir $(SolutionDir)..\..\lib
+mkdir $(SolutionDir)..\..\lib\x86
+xcopy /S /Y $(OutDir)libupnp.lib $(SolutionDir)..\..\lib\x86</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\Release/libupnp.tlb</TypeLibraryName>
+      <HeaderFileName />
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <WholeProgramOptimization>false</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>..\inc;..\msvc;..\..\upnp\inc;..\..\upnp\src\inc;..\..\ixml\inc;..\..\ixml\src\inc;..\..\threadutil\inc;..\..\pthreads;..\..\pthreads\include;$(ProjectDir)..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_TIMESPEC_DEFINED;WIN32;NDEBUG;RELEASE;_WINDOWS;PTW32_STATIC_LIB;UPNP_STATIC_LIB;UPNP_USE_MSVCPP;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL;_SCL_SECURE_NO_WARNINGS;_SCL_SECURE_NO_DEPRECATE;_AFX_SECURE_NO_WARNINGS;_AFX_SECURE_NO_DEPRECATE;_SECURE_ATL;_ATL_NO_COM_SUPPORT;_ATL_SECURE_NO_WARNINGS;_ATL_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile />
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <BrowseInformation />
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4244;4267;4311;4477;4996;</DisableSpecificWarnings>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0407</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalLibraryDirectories>..\..\pthreads\;..\..\pthreads\lib;$(OutDir)..\lib;$(OutDir)..\bin;$(ProjectDir)..\..\..\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>pthreads-UWP.lib</AdditionalDependencies>
+      <AdditionalOptions>/IGNORE:4006 %(AdditionalOptions)</AdditionalOptions>
+    </Lib>
+    <Bscmake>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <OutputFile>.\Release/libupnp.bsc</OutputFile>
+    </Bscmake>
+    <PostBuildEvent>
+      <Command>mkdir $(ProjectDir)..\..\..\include
+mkdir $(ProjectDir)..\..\..\include\upnp
+xcopy /S /Y $(ProjectDir)..\..\upnp\inc\*.h $(ProjectDir)..\..\..\include\upnp
+xcopy /S /Y $(ProjectDir)..\..\build\inc\*.h $(ProjectDir)..\..\..\include\upnp
+xcopy /S /Y $(ProjectDir)..\..\ixml\src\inc\*.h $(ProjectDir)..\..\..\include\upnp
+xcopy /S /Y $(ProjectDir)..\..\ixml\inc\*.h $(ProjectDir)..\..\..\include\upnp
+mkdir $(ProjectDir)..\..\..\lib
+mkdir $(ProjectDir)..\..\..\lib\x64
+xcopy /S /Y $(OutDir)libupnp.lib $(ProjectDir)..\..\..\lib\x64</Command>
+    </PostBuildEvent>
+    <ProjectReference>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+    </ProjectReference>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\ixml\src\attr.c" />
+    <ClCompile Include="..\..\ixml\src\document.c" />
+    <ClCompile Include="..\..\ixml\src\element.c" />
+    <ClCompile Include="..\..\ixml\src\ixml.c" />
+    <ClCompile Include="..\..\ixml\src\ixmlmembuf.c" />
+    <ClCompile Include="..\..\ixml\src\ixmlparser.c" />
+    <ClCompile Include="..\..\ixml\src\namedNodeMap.c" />
+    <ClCompile Include="..\..\ixml\src\node.c" />
+    <ClCompile Include="..\..\ixml\src\nodeList.c" />
+    <ClCompile Include="..\..\threadutil\src\FreeList.c" />
+    <ClCompile Include="..\..\threadutil\src\LinkedList.c" />
+    <ClCompile Include="..\..\threadutil\src\ThreadPool.c" />
+    <ClCompile Include="..\..\threadutil\src\TimerThread.c" />
+    <ClCompile Include="..\..\upnp\src\api\upnpapi.c" />
+    <ClCompile Include="..\..\upnp\src\api\upnpdebug.c" />
+    <ClCompile Include="..\..\upnp\src\api\UpnpString.c" />
+    <ClCompile Include="..\..\upnp\src\api\upnptools.c" />
+    <ClCompile Include="..\..\upnp\src\gena\gena_callback2.c" />
+    <ClCompile Include="..\..\upnp\src\gena\gena_ctrlpt.c" />
+    <ClCompile Include="..\..\upnp\src\gena\gena_device.c" />
+    <ClCompile Include="..\..\upnp\src\genlib\client_table\client_table.c" />
+    <ClCompile Include="..\..\upnp\src\genlib\miniserver\miniserver.c" />
+    <ClCompile Include="..\..\upnp\src\genlib\net\http\httpparser.c" />
+    <ClCompile Include="..\..\upnp\src\genlib\net\http\httpreadwrite.c" />
+    <ClCompile Include="..\..\upnp\src\genlib\net\http\parsetools.c" />
+    <ClCompile Include="..\..\upnp\src\genlib\net\http\statcodes.c" />
+    <ClCompile Include="..\..\upnp\src\genlib\net\http\webserver.c" />
+    <ClCompile Include="..\..\upnp\src\genlib\net\sock.c" />
+    <ClCompile Include="..\..\upnp\src\genlib\net\uri\uri.c" />
+    <ClCompile Include="..\..\upnp\src\genlib\service_table\service_table.c" />
+    <ClCompile Include="..\..\upnp\src\genlib\util\membuffer.c" />
+    <ClCompile Include="..\..\upnp\src\genlib\util\strintmap.c" />
+    <ClCompile Include="..\..\upnp\src\genlib\util\upnp_timeout.c" />
+    <ClCompile Include="..\..\upnp\src\genlib\util\util.c" />
+    <ClCompile Include="..\..\upnp\src\soap\soap_common.c" />
+    <ClCompile Include="..\..\upnp\src\soap\soap_ctrlpt.c" />
+    <ClCompile Include="..\..\upnp\src\soap\soap_device.c" />
+    <ClCompile Include="..\..\upnp\src\ssdp\ssdp_ctrlpt.c" />
+    <ClCompile Include="..\..\upnp\src\ssdp\ssdp_device.c" />
+    <ClCompile Include="..\..\upnp\src\ssdp\ssdp_server.c" />
+    <ClCompile Include="..\..\upnp\src\urlconfig\urlconfig.c" />
+    <ClCompile Include="..\..\upnp\src\uuid\md5.c" />
+    <ClCompile Include="..\..\upnp\src\uuid\sysdep.c" />
+    <ClCompile Include="..\..\upnp\src\uuid\uuid.c" />
+    <ClCompile Include="..\..\upnp\src\win_dll.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\upnp\inc\Callback.h" />
+    <ClInclude Include="..\..\upnp\inc\TemplateInclude.h" />
+    <ClInclude Include="..\..\upnp\inc\TemplateSource.h" />
+    <ClInclude Include="..\..\upnp\inc\TemplateUndef.h" />
+    <ClInclude Include="..\..\upnp\inc\upnp.h" />
+    <ClInclude Include="..\..\upnp\inc\upnpdebug.h" />
+    <ClInclude Include="..\..\upnp\inc\UpnpGlobal.h" />
+    <ClInclude Include="..\..\upnp\inc\UpnpInet.h" />
+    <ClInclude Include="..\..\upnp\inc\UpnpIntTypes.h" />
+    <ClInclude Include="..\..\upnp\inc\UpnpStdInt.h" />
+    <ClInclude Include="..\..\upnp\inc\UpnpString.h" />
+    <ClInclude Include="..\..\upnp\inc\upnptools.h" />
+    <ClInclude Include="..\..\upnp\inc\UpnpUniStd.h" />
+    <ClInclude Include="..\..\upnp\src\inc\client_table.h" />
+    <ClInclude Include="..\..\upnp\src\inc\config.h" />
+    <ClInclude Include="..\..\upnp\src\inc\gena.h" />
+    <ClInclude Include="..\..\upnp\src\inc\gena_ctrlpt.h" />
+    <ClInclude Include="..\..\upnp\src\inc\gena_device.h" />
+    <ClInclude Include="..\..\upnp\src\inc\global.h" />
+    <ClInclude Include="..\..\upnp\src\inc\gmtdate.h" />
+    <ClInclude Include="..\..\upnp\src\inc\httpparser.h" />
+    <ClInclude Include="..\..\upnp\src\inc\httpreadwrite.h" />
+    <ClInclude Include="..\..\upnp\src\inc\md5.h" />
+    <ClInclude Include="..\..\upnp\src\inc\membuffer.h" />
+    <ClInclude Include="..\..\upnp\src\inc\miniserver.h" />
+    <ClInclude Include="..\..\upnp\src\inc\netall.h" />
+    <ClInclude Include="..\..\upnp\src\inc\parsetools.h" />
+    <ClInclude Include="..\..\upnp\src\inc\server.h" />
+    <ClInclude Include="..\..\upnp\src\inc\service_table.h" />
+    <ClInclude Include="..\..\upnp\src\inc\soaplib.h" />
+    <ClInclude Include="..\..\upnp\src\inc\sock.h" />
+    <ClInclude Include="..\..\upnp\src\inc\ssdplib.h" />
+    <ClInclude Include="..\..\upnp\src\inc\statcodes.h" />
+    <ClInclude Include="..\..\upnp\src\inc\statuscodes.h" />
+    <ClInclude Include="..\..\upnp\src\inc\strintmap.h" />
+    <ClInclude Include="..\..\upnp\src\inc\sysdep.h" />
+    <ClInclude Include="..\..\upnp\src\inc\unixutil.h" />
+    <ClInclude Include="..\..\upnp\src\inc\upnpapi.h" />
+    <ClInclude Include="..\..\upnp\src\inc\upnputil.h" />
+    <ClInclude Include="..\..\upnp\src\inc\upnp_timeout.h" />
+    <ClInclude Include="..\..\upnp\src\inc\uri.h" />
+    <ClInclude Include="..\..\upnp\src\inc\urlconfig.h" />
+    <ClInclude Include="..\..\upnp\src\inc\uuid.h" />
+    <ClInclude Include="..\..\upnp\src\inc\VirtualDir.h" />
+    <ClInclude Include="..\..\upnp\src\inc\webserver.h" />
+    <ClInclude Include="..\..\upnp\src\ssdp\ssdp_ResultData.h" />
+    <ClInclude Include="..\inc\autoconfig.h" />
+    <ClInclude Include="..\inc\upnpconfig.h" />
+    <ClInclude Include="..\msvc\inttypes.h" />
+    <ClInclude Include="..\msvc\stdint.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="ixml.vcxproj">
+      <Project>{9c2c266d-35a3-465f-a297-0e21d54e5c89}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="threadutil.vcxproj">
+      <Project>{1d3eef7a-d248-48c0-b6b5-eca229fe4b3d}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
--- /dev/null
+++ b/build/VS2015/libupnp.vcxproj.filters
@@ -0,0 +1,302 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="sources">
+      <UniqueIdentifier>{41280a8a-b659-4308-978d-6ae813d7eb2b}</UniqueIdentifier>
+      <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
+    </Filter>
+    <Filter Include="headers">
+      <UniqueIdentifier>{de2960cd-eb77-44bd-a077-a21b478d1333}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\ixml\src\attr.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\genlib\client_table\client_table.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\ixml\src\document.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\ixml\src\element.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\threadutil\src\FreeList.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\gena\gena_callback2.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\gena\gena_ctrlpt.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\gena\gena_device.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\genlib\net\http\httpparser.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\genlib\net\http\httpreadwrite.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\ixml\src\ixml.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\ixml\src\ixmlmembuf.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\ixml\src\ixmlparser.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\threadutil\src\LinkedList.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\uuid\md5.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\genlib\util\membuffer.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\genlib\miniserver\miniserver.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\ixml\src\namedNodeMap.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\ixml\src\node.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\ixml\src\nodeList.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\genlib\net\http\parsetools.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\genlib\service_table\service_table.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\soap\soap_common.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\soap\soap_ctrlpt.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\soap\soap_device.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\genlib\net\sock.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\ssdp\ssdp_ctrlpt.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\ssdp\ssdp_device.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\ssdp\ssdp_server.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\genlib\net\http\statcodes.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\genlib\util\strintmap.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\uuid\sysdep.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\threadutil\src\ThreadPool.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\threadutil\src\TimerThread.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\genlib\util\upnp_timeout.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\api\upnpapi.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\api\upnpdebug.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\api\UpnpString.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\api\upnptools.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\genlib\net\uri\uri.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\urlconfig\urlconfig.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\genlib\util\util.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\uuid\uuid.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\genlib\net\http\webserver.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\upnp\src\win_dll.c">
+      <Filter>sources</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\inc\autoconfig.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\inc\Callback.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\client_table.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\config.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\gena.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\gena_ctrlpt.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\gena_device.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\global.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\gmtdate.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\httpparser.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\httpreadwrite.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\msvc\inttypes.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\md5.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\membuffer.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\miniserver.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\netall.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\parsetools.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\server.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\service_table.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\soaplib.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\sock.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\ssdp\ssdp_ResultData.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\ssdplib.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\statcodes.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\statuscodes.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\msvc\stdint.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\strintmap.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\sysdep.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\inc\TemplateInclude.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\inc\TemplateSource.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\inc\TemplateUndef.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\unixutil.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\inc\upnp.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\upnp_timeout.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\upnpapi.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\inc\upnpconfig.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\inc\upnpdebug.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\inc\UpnpGlobal.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\inc\UpnpInet.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\inc\UpnpIntTypes.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\inc\UpnpStdInt.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\inc\UpnpString.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\inc\upnptools.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\inc\UpnpUniStd.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\upnputil.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\uri.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\urlconfig.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\uuid.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\VirtualDir.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\upnp\src\inc\webserver.h">
+      <Filter>headers</Filter>
+    </ClInclude>
+  </ItemGroup>
+</Project>
\ No newline at end of file
--- /dev/null
+++ b/build/VS2015/threadutil.vcxproj
@@ -0,0 +1,340 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DebugDLL|Win32">
+      <Configuration>DebugDLL</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DebugDLL|x64">
+      <Configuration>DebugDLL</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseDLL|Win32">
+      <Configuration>ReleaseDLL</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseDLL|x64">
+      <Configuration>ReleaseDLL</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}</ProjectGuid>
+    <RootNamespace>threadutil</RootNamespace>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <PlatformToolset>v140</PlatformToolset>
+    <CharacterSet>NotSet</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <PlatformToolset>v140</PlatformToolset>
+    <CharacterSet>NotSet</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <PlatformToolset>v140</PlatformToolset>
+    <CharacterSet>NotSet</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <PlatformToolset>v140</PlatformToolset>
+    <CharacterSet>NotSet</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <PlatformToolset>v140</PlatformToolset>
+    <CharacterSet>NotSet</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <PlatformToolset>v140</PlatformToolset>
+    <CharacterSet>NotSet</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <PlatformToolset>v140</PlatformToolset>
+    <CharacterSet>NotSet</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <PlatformToolset>v140</PlatformToolset>
+    <CharacterSet>NotSet</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>14.0.24730.2</_ProjectFileVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|Win32'">
+    <OutDir>$(SolutionDir)\x86\</OutDir>
+    <IntDir>$(SolutionDir)\x86\tmp\$(ProjectName)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|x64'">
+    <OutDir>$(SolutionDir)\$(Platform)\</OutDir>
+    <IntDir>$(SolutionDir)\$(Platform)\tmp\$(ProjectName)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">
+    <OutDir>$(SolutionDir)\x86\</OutDir>
+    <IntDir>$(SolutionDir)\x86\tmp\$(ProjectName)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'">
+    <OutDir>$(SolutionDir)\$(Platform)\</OutDir>
+    <IntDir>$(SolutionDir)\$(Platform)\tmp\$(ProjectName)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <OutDir>$(SolutionDir)\x86\</OutDir>
+    <IntDir>$(SolutionDir)\x86\tmp\$(ProjectName)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <OutDir>$(SolutionDir)\$(Platform)\</OutDir>
+    <IntDir>$(SolutionDir)\$(Platform)\tmp\$(ProjectName)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <OutDir>$(SolutionDir)\x86\</OutDir>
+    <IntDir>$(SolutionDir)\x86\tmp\$(ProjectName)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <OutDir>$(ProjectDir)..\..\MSVC\$(Platform)\</OutDir>
+    <IntDir>$(ProjectDir)..\..\MSVC\$(Platform)\tmp\$(ProjectName)\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\threadutil\inc;..\..\upnp\inc;..\..\pthreads;..\..\pthreads\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_TIMESPEC_DEFINED;DEBUG;WIN32;_USRDLL;LIBUPNP_EXPORTS;UPNP_USE_MSVCPP;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL;_SCL_SECURE_NO_WARNINGS;_SCL_SECURE_NO_DEPRECATE;_AFX_SECURE_NO_WARNINGS;_AFX_SECURE_NO_DEPRECATE;_SECURE_ATL;_ATL_NO_COM_SUPPORT;_ATL_SECURE_NO_WARNINGS;_ATL_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4244;4267;4311;4477;4996;</DisableSpecificWarnings>
+    </ClCompile>
+    <Lib>
+      <AdditionalLibraryDirectories>..\..\pthreads\;..\..\pthreads\lib;$(OutDir)..\lib;$(OutDir)..\bin;$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\threadutil\inc;..\..\upnp\inc;..\..\pthreads;..\..\pthreads\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_TIMESPEC_DEFINED;DEBUG;WIN32;_USRDLL;LIBUPNP_EXPORTS;UPNP_USE_MSVCPP;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL;_SCL_SECURE_NO_WARNINGS;_SCL_SECURE_NO_DEPRECATE;_AFX_SECURE_NO_WARNINGS;_AFX_SECURE_NO_DEPRECATE;_SECURE_ATL;_ATL_NO_COM_SUPPORT;_ATL_SECURE_NO_WARNINGS;_ATL_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4244;4267;4311;4477;4996;</DisableSpecificWarnings>
+    </ClCompile>
+    <Lib>
+      <AdditionalLibraryDirectories>..\..\pthreads\;..\..\pthreads\lib;$(OutDir)..\lib;$(OutDir)..\bin;$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>..\..\threadutil\inc;..\..\upnp\inc;..\..\pthreads;..\..\pthreads\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_TIMESPEC_DEFINED;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBUPNP_EXPORTS;UPNP_USE_MSVCPP;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL;_SCL_SECURE_NO_WARNINGS;_SCL_SECURE_NO_DEPRECATE;_AFX_SECURE_NO_WARNINGS;_AFX_SECURE_NO_DEPRECATE;_SECURE_ATL;_ATL_NO_COM_SUPPORT;_ATL_SECURE_NO_WARNINGS;_ATL_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4244;4267;4311;4477;4996;</DisableSpecificWarnings>
+    </ClCompile>
+    <Lib>
+      <AdditionalLibraryDirectories>..\..\pthreads\;..\..\pthreads\lib;$(OutDir)..\lib;$(OutDir)..\bin;$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>..\..\threadutil\inc;..\..\upnp\inc;..\..\pthreads;..\..\pthreads\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_TIMESPEC_DEFINED;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBUPNP_EXPORTS;UPNP_USE_MSVCPP;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL;_SCL_SECURE_NO_WARNINGS;_SCL_SECURE_NO_DEPRECATE;_AFX_SECURE_NO_WARNINGS;_AFX_SECURE_NO_DEPRECATE;_SECURE_ATL;_ATL_NO_COM_SUPPORT;_ATL_SECURE_NO_WARNINGS;_ATL_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4244;4267;4311;4477;4996;</DisableSpecificWarnings>
+    </ClCompile>
+    <Lib>
+      <AdditionalLibraryDirectories>..\..\pthreads\;..\..\pthreads\lib;$(OutDir)..\lib;$(OutDir)..\bin;$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\threadutil\inc;..\..\upnp\inc;..\..\pthreads;..\..\pthreads\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_TIMESPEC_DEFINED;DEBUG;WIN32;PTW32_STATIC_LIB;UPNP_STATIC_LIB;UPNP_USE_MSVCPP;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL;_SCL_SECURE_NO_WARNINGS;_SCL_SECURE_NO_DEPRECATE;_AFX_SECURE_NO_WARNINGS;_AFX_SECURE_NO_DEPRECATE;_SECURE_ATL;_ATL_NO_COM_SUPPORT;_ATL_SECURE_NO_WARNINGS;_ATL_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4244;4267;4311;4477;4996;</DisableSpecificWarnings>
+    </ClCompile>
+    <Lib>
+      <AdditionalLibraryDirectories>..\..\pthreads\;..\..\pthreads\lib;$(OutDir)..\lib;$(OutDir)..\bin;$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\threadutil\inc;..\..\upnp\inc;..\..\pthreads;..\..\pthreads\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_TIMESPEC_DEFINED;DEBUG;WIN32;PTW32_STATIC_LIB;UPNP_STATIC_LIB;UPNP_USE_MSVCPP;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL;_SCL_SECURE_NO_WARNINGS;_SCL_SECURE_NO_DEPRECATE;_AFX_SECURE_NO_WARNINGS;_AFX_SECURE_NO_DEPRECATE;_SECURE_ATL;_ATL_NO_COM_SUPPORT;_ATL_SECURE_NO_WARNINGS;_ATL_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4244;4267;4311;4477;4996;</DisableSpecificWarnings>
+    </ClCompile>
+    <Lib>
+      <AdditionalLibraryDirectories>..\..\pthreads\;..\..\pthreads\lib;$(OutDir)..\lib;$(OutDir)..\bin;$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>..\..\threadutil\inc;..\..\upnp\inc;..\..\pthreads;..\..\pthreads\include;$(ProjectDir)..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_TIMESPEC_DEFINED;WIN32;NDEBUG;RELEASE;_WINDOWS;PTW32_STATIC_LIB;UPNP_STATIC_LIB;UPNP_USE_MSVCPP;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL;_SCL_SECURE_NO_WARNINGS;_SCL_SECURE_NO_DEPRECATE;_AFX_SECURE_NO_WARNINGS;_AFX_SECURE_NO_DEPRECATE;_SECURE_ATL;_ATL_NO_COM_SUPPORT;_ATL_SECURE_NO_WARNINGS;_ATL_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4244;4267;4311;4477;4996;</DisableSpecificWarnings>
+    </ClCompile>
+    <Lib>
+      <AdditionalLibraryDirectories>..\..\pthreads\;..\..\pthreads\lib;$(OutDir)..\lib;$(OutDir)..\bin;$(OutDir);$(ProjectDir)..\..\..\bin\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>..\..\threadutil\inc;..\..\upnp\inc;..\..\pthreads;..\..\pthreads\include;$(ProjectDir)..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_TIMESPEC_DEFINED;WIN32;NDEBUG;RELEASE;_WINDOWS;PTW32_STATIC_LIB;UPNP_STATIC_LIB;UPNP_USE_MSVCPP;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL;_SCL_SECURE_NO_WARNINGS;_SCL_SECURE_NO_DEPRECATE;_AFX_SECURE_NO_WARNINGS;_AFX_SECURE_NO_DEPRECATE;_SECURE_ATL;_ATL_NO_COM_SUPPORT;_ATL_SECURE_NO_WARNINGS;_ATL_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4244;4267;4311;4477;4996;</DisableSpecificWarnings>
+    </ClCompile>
+    <Lib>
+      <AdditionalLibraryDirectories>..\..\pthreads\;..\..\pthreads\lib;$(OutDir)..\lib;$(OutDir)..\bin;$(OutDir);$(ProjectDir)..\..\..\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>pthreads-UWP.lib</AdditionalDependencies>
+      <AdditionalOptions>/IGNORE:4006 %(AdditionalOptions)</AdditionalOptions>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\threadutil\src\FreeList.c" />
+    <ClCompile Include="..\..\threadutil\src\LinkedList.c" />
+    <ClCompile Include="..\..\threadutil\src\ThreadPool.c" />
+    <ClCompile Include="..\..\threadutil\src\TimerThread.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\threadutil\inc\FreeList.h" />
+    <ClInclude Include="..\..\threadutil\inc\ithread.h" />
+    <ClInclude Include="..\..\threadutil\inc\LinkedList.h" />
+    <ClInclude Include="..\..\threadutil\inc\threadpool.h" />
+    <ClInclude Include="..\..\threadutil\inc\TimerThread.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
--- /dev/null
+++ b/build/VS2015/threadutil.vcxproj.filters
@@ -0,0 +1,44 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\threadutil\src\FreeList.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\threadutil\src\LinkedList.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\threadutil\src\ThreadPool.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\threadutil\src\TimerThread.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\threadutil\inc\FreeList.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\threadutil\inc\ithread.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\threadutil\inc\LinkedList.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\threadutil\inc\threadpool.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\threadutil\inc\TimerThread.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+</Project>
\ No newline at end of file
--- a/build/inc/upnpconfig.h
+++ b/build/inc/upnpconfig.h
@@ -65,7 +65,7 @@
 #define _FILE_OFFSET_BITS 64
 
 /** Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
-#define _LARGEFILE_SOURCE 1
+/* #undef _LARGEFILE_SOURCE */
 
 /** Large files support */
 #define _LARGE_FILE_SOURCE /**/
--- a/libupnp.pc.in
+++ b/libupnp.pc.in
@@ -6,6 +6,6 @@ includedir=@includedir@
 Name: libupnp
 Description: Linux SDK for UPnP Devices
 Version: @VERSION@
-Libs: @PTHREAD_CFLAGS@ @PTHREAD_LIBS@ -L${libdir} -lupnp -lthreadutil -lixml 
+Libs: @PTHREAD_CFLAGS@ -L${libdir} -lupnp -lthreadutil -lixml -liphlpapi @PTHREAD_LIBS@ 
 Cflags: @PTHREAD_CFLAGS@ -I${includedir}/upnp
 
--- a/threadutil/inc/ThreadPool.h
+++ b/threadutil/inc/ThreadPool.h
@@ -46,6 +46,7 @@
 #include <errno.h>
 
 #ifdef WIN32
+	#ifndef _TIMEZONE_DEFINED
 	#include <time.h>
 	struct timezone
 	{
@@ -53,6 +54,7 @@
 		int  tz_dsttime;     /* type of dst correction */
 	};
 	int gettimeofday(struct timeval *tv, struct timezone *tz);
+	#endif
 #else /* WIN32 */
 	#include <sys/param.h>
 	#include <sys/time.h> /* for gettimeofday() */
--- a/upnp/inc/UpnpInet.h
+++ b/upnp/inc/UpnpInet.h
@@ -15,11 +15,6 @@
 
 #ifdef WIN32
 	#include <stdarg.h>
-	#ifndef UPNP_USE_MSVCPP
-		/* Removed: not required (and cause compilation issues) */
-		#include <winbase.h>
-		#include <windef.h>
-	#endif
 	#include <winsock2.h>
 	#include <iphlpapi.h>
 	#include <ws2tcpip.h>
--- a/upnp/inc/upnp.h
+++ b/upnp/inc/upnp.h
@@ -61,6 +61,20 @@
 	/* Other systems ??? */
 #endif
 
+#   if defined( __MINGW32__ )
+#       if !defined( _OFF_T_ )
+            typedef long long _off_t;
+            typedef _off_t off_t;
+#           define _OFF_T_
+#       else
+#           ifdef off_t
+#               undef off_t
+#           endif
+#           define off_t long long
+#       endif
+#   endif
+
+
 #define LINE_SIZE  (size_t)180
 #define NAME_SIZE  (size_t)256
 #define MNFT_NAME_SIZE  64
--- a/upnp/sample/common/sample_util.h
+++ b/upnp/sample/common/sample_util.h
@@ -259,7 +259,7 @@ void linux_print(const char *format, ...)
 #endif /* __cplusplus */
 
 #ifdef WIN32
-	#define snprintf	_snprintf
+	//#define snprintf	_snprintf
 	#define strcasecmp	stricmp
 #endif
 
--- a/upnp/src/api/upnpapi.c
+++ b/upnp/src/api/upnpapi.c
@@ -341,8 +341,8 @@ static int UpnpInitPreamble(void)
 
 #ifdef UPNP_HAVE_OPTSSDP
 	/* Create the NLS uuid. */
-	uuid_create(&nls_uuid);
-	uuid_unpack(&nls_uuid, gUpnpSdkNLSuuid);
+	uuid_upnp_create(&nls_uuid);
+	uuid_upnp_unpack(&nls_uuid, gUpnpSdkNLSuuid);
 #endif /* UPNP_HAVE_OPTSSDP */
 
 	/* Initializes the handle list. */
@@ -358,13 +358,13 @@ static int UpnpInitPreamble(void)
 		return retVal;
 	}
 
+#ifdef INTERNAL_WEB_SERVER
 #ifdef INCLUDE_DEVICE_APIS
 #if EXCLUDE_SOAP == 0
 	SetSoapCallback(soap_device_callback);
 #endif
 #endif /* INCLUDE_DEVICE_APIS */
 
-#ifdef INTERNAL_WEB_SERVER
 #if EXCLUDE_GENA == 0
 	SetGenaCallback(genaCallback);
 #endif
--- a/upnp/src/api/upnptools.c
+++ b/upnp/src/api/upnptools.c
@@ -57,7 +57,7 @@
 #define HEADER_LENGTH 2000
 
 #ifdef WIN32
-	#define snprintf _snprintf
+	//#define snprintf _snprintf
 #endif
 
 /*!
--- a/upnp/src/gena/gena_ctrlpt.c
+++ b/upnp/src/gena/gena_ctrlpt.c
@@ -53,7 +53,7 @@
 #include "upnpapi.h"
 
 #ifdef WIN32
-	#define snprintf _snprintf
+	//#define snprintf _snprintf
 #endif
 
 extern ithread_mutex_t GlobalClientSubscribeMutex;
@@ -561,8 +561,8 @@ int genaSubscribe(
 	}
 
 	/* generate client SID */
-	uuid_create(&uid );
-	uuid_unpack(&uid, temp_sid);
+	uuid_upnp_create(&uid );
+	uuid_upnp_unpack(&uid, temp_sid);
 	rc = snprintf(temp_sid2, sizeof(temp_sid2), "uuid:%s", temp_sid);
 	if (rc < 0 || (unsigned int) rc >= sizeof(temp_sid2)) {
 		return_code = UPNP_E_OUTOF_MEMORY;
--- a/upnp/src/gena/gena_device.c
+++ b/upnp/src/gena/gena_device.c
@@ -51,7 +51,7 @@
 #include "uuid.h"
 
 #ifdef WIN32
-	#define snprintf _snprintf
+	//#define snprintf _snprintf
 #endif
 
 /*!
@@ -1353,8 +1353,8 @@ void gena_process_subscription_request(
 	}
 
 	/* generate SID */
-	uuid_create(&uid);
-	uuid_unpack(&uid, temp_sid);
+	uuid_upnp_create(&uid);
+	uuid_upnp_unpack(&uid, temp_sid);
 	rc = snprintf(sub->sid, sizeof(sub->sid), "uuid:%s", temp_sid);
 
 	/* respond OK */
--- a/upnp/src/genlib/miniserver/miniserver.c
+++ b/upnp/src/genlib/miniserver/miniserver.c
@@ -68,6 +68,13 @@
 /*! . */
 #define APPLICATION_LISTENING_PORT 49152
 
+/* IPV6_V6ONLY is missing from MinGW, hack taken from
+ * http://svn.apache.org/repos/asf/apr/apr/trunk/network_io/win32/sockopt.c
+ */
+#ifndef IPV6_V6ONLY
+#define IPV6_V6ONLY 27
+#endif
+
 struct mserv_request_t {
 	/*! Connection handle. */
 	SOCKET connfd;
--- a/upnp/src/genlib/net/http/httpreadwrite.c
+++ b/upnp/src/genlib/net/http/httpreadwrite.c
@@ -59,7 +59,7 @@
 #ifdef WIN32
 	#include <malloc.h>
 	#define fseeko fseek
-	#define snprintf _snprintf
+	//#define snprintf _snprintf
 #else
 	#include <arpa/inet.h>
 	#include <sys/types.h>
@@ -2146,7 +2146,7 @@ void get_sdk_info(OUT char *info, IN size_t infoSize)
 #ifdef WIN32
 	OSVERSIONINFO versioninfo;
 	versioninfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
-
+#if (WINAPI_FAMILY_APP != WINAPI_FAMILY_PC_APP)
 	if (GetVersionEx(&versioninfo) != 0)
 		snprintf(info, infoSize,
 			"%d.%d.%d %d/%s, UPnP/1.0, Portable SDK for UPnP devices/"
@@ -2156,6 +2156,10 @@ void get_sdk_info(OUT char *info, IN size_t infoSize)
 	else
 		*info = '\0';
 #else
+    snprintf(info, infoSize, "%d.%d.%d %d/%s, UPnP/1.0, Portable SDK for UPnP devices/" PACKAGE_VERSION "\r\n",
+        0, 0, 0, 0, 0);
+#endif
+#else
 	int ret_code;
 	struct utsname sys_info;
 
--- a/upnp/src/genlib/net/http/webserver.c
+++ b/upnp/src/genlib/net/http/webserver.c
@@ -63,7 +63,7 @@
 #include <sys/stat.h>
 
 #ifdef WIN32
-	 #define snprintf _snprintf
+	 //#define snprintf _snprintf
 #endif
 
 /*!
--- a/upnp/src/genlib/net/uri/uri.c
+++ b/upnp/src/genlib/net/uri/uri.c
@@ -45,7 +45,7 @@
 	#endif
 #endif
 #ifdef WIN32
-	#define snprintf _snprintf
+	//#define snprintf _snprintf
 #endif
 #include <assert.h>
 
--- a/upnp/src/inc/upnputil.h
+++ b/upnp/src/inc/upnputil.h
@@ -130,7 +130,7 @@ void linecopylen(
 		#define strncasecmp		strnicmp
 		#define sleep(a)		Sleep((a)*1000)
 		#define usleep(a)		Sleep((a)/1000)
-		#define strerror_r(a,b,c)	(strerror_s((b),(c),(a)))
+		#define strerror_r(a,b,c)       strncpy( b, strerror(a), c)
 	#else
 		#define max(a, b)   (((a)>(b))? (a):(b))
 		#define min(a, b)   (((a)<(b))? (a):(b))
--- a/upnp/src/inc/uuid.h
+++ b/upnp/src/inc/uuid.h
@@ -41,14 +41,14 @@ typedef struct _uuid_upnp {
 /*!
  * \brief Generate a UUID.
  */
-int uuid_create(
+int uuid_upnp_create(
 	/*! . */
 	uuid_upnp * id);
 
 /*!
  * \brief Out will be xxxx-xx-xx-xx-xxxxxx format.
  */
-void uuid_unpack(
+void uuid_upnp_unpack(
 	/*! . */
 	uuid_upnp * u,
 	/*! . */
@@ -57,7 +57,7 @@ void uuid_unpack(
 /*!
  * \brief Create a UUID using a "name" from a "name space"
  */
-void uuid_create_from_name(
+void uuid_upnp_create_from_name(
 	/*! Resulting UUID. */
 	uuid_upnp * uid,
 	/*! UUID to serve as context, so identical names from different name
@@ -78,7 +78,7 @@ void uuid_create_from_name(
  *
  * \note Lexical ordering is not temporal ordering!
  */
-int uuid_compare(
+int uuid_upnp_compare(
 	/*! . */
 	uuid_upnp * u1,
 	/*! . */

--- a/upnp/src/soap/soap_device.c
+++ b/upnp/src/soap/soap_device.c
@@ -49,7 +49,7 @@
 #include "upnpapi.h"
 
 #ifdef WIN32
-	#define snprintf _snprintf
+	//#define snprintf _snprintf
 #endif
 
 /*! timeout duration in secs for transmission/reception */
--- a/upnp/src/ssdp/ssdp_ctrlpt.c
+++ b/upnp/src/ssdp/ssdp_ctrlpt.c
@@ -59,7 +59,7 @@
 
 #ifdef WIN32
 #include <string.h>
-#define snprintf _snprintf
+//#define snprintf _snprintf
 #endif /* WIN32 */
 
 /*!
--- a/upnp/src/ssdp/ssdp_device.c
+++ b/upnp/src/ssdp/ssdp_device.c
@@ -57,7 +57,7 @@
 #include <string.h>
 
 #ifdef WIN32
-	#define snprintf _snprintf
+	//#define snprintf _snprintf
 #endif
 
 #define MSGTYPE_SHUTDOWN	0
--- a/upnp/src/ssdp/ssdp_server.c
+++ b/upnp/src/ssdp/ssdp_server.c
@@ -41,7 +41,7 @@
 #ifndef WIN32
 	#include <sys/param.h>
 #else
-	#define snprintf _snprintf
+	//#define snprintf _snprintf
 #endif /* WIN32 */
 
 #include "config.h"
@@ -69,6 +69,13 @@
 	#endif /* UPNP_ENABLE_IPV6 */
 #endif /* INCLUDE_CLIENT_APIS */
 
+/* IPV6_V6ONLY is missing from MinGW, hack taken from
+ * http://svn.apache.org/repos/asf/apr/apr/trunk/network_io/win32/sockopt.c
+ */
+#ifndef IPV6_V6ONLY
+#define IPV6_V6ONLY 27
+#endif
+
 void RequestHandler();
 
 enum Listener {
--- a/upnp/src/urlconfig/urlconfig.c
+++ b/upnp/src/urlconfig/urlconfig.c
@@ -50,7 +50,7 @@
 #include <stdio.h>
 
 #ifdef WIN32
-	#define snprintf _snprintf
+	//#define snprintf _snprintf
 #else
 	#include <sys/types.h>
 #endif
--- a/upnp/src/uuid/sysdep.c
+++ b/upnp/src/uuid/sysdep.c
@@ -30,6 +30,8 @@
 #include <string.h>
 #include <stdio.h>
 
+#include <Winsock2.h>
+
 /*!
  * \brief System dependent call to get IEEE node ID.
  *
@@ -93,7 +95,9 @@ void get_random_info(unsigned char seed[16])
 	/* Initialize memory area so that valgrind does not complain */
 	memset(&r, 0, sizeof r);
 	/* memory usage stats */
-	GlobalMemoryStatus( &r.m );
+#if (WINAPI_FAMILY_APP != WINAPI_FAMILY_PC_APP)
+    GlobalMemoryStatus( &r.m );
+#endif
 	/* random system stats */
 	GetSystemInfo( &r.s );
 	/* 100ns resolution (nominally) time of day */
@@ -101,9 +105,13 @@ void get_random_info(unsigned char seed[16])
 	/* high resolution performance counter */
 	QueryPerformanceCounter( &r.pc );
 	/* milliseconds since last boot */
-	r.tc = GetTickCount();
+	r.tc = GetTickCount64();
 	r.l = MAX_COMPUTERNAME_LENGTH + 1;
-	GetComputerName( r.hostname, &r.l );
+#if (WINAPI_FAMILY_APP != WINAPI_FAMILY_PC_APP)
+    GetComputerName( r.hostname, &r.l );
+#else
+    GetHostNameW( r.hostname, &r.l );
+#endif
 	/* MD5 it */
 	MD5Init(&c);
 	MD5Update(&c, (unsigned char *)(&r), sizeof r);
--- a/upnp/src/uuid/uuid.c
+++ b/upnp/src/uuid/uuid.c
@@ -50,7 +50,7 @@ static uint16_t true_random(void);
 /*!
  * \brief Generator of a UUID.
  */
-int uuid_create(uuid_upnp * uid)
+int uuid_upnp_create(uuid_upnp * uid)
 {
 	uuid_time_t timestamp;
 	uuid_time_t last_time;
@@ -82,7 +82,7 @@ int uuid_create(uuid_upnp * uid)
 	return 1;
 };
 
-void uuid_unpack(uuid_upnp * u, char *out)
+void uuid_upnp_unpack(uuid_upnp * u, char *out)
 {
 	sprintf(out,
 		"%8.8x-%4.4x-%4.4x-%2.2x%2.2x-%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x",
@@ -221,7 +221,7 @@ static uint16_t true_random(void)
 /*!
  * \brief Create a UUID using a "name" from a "name space".
  */
-void uuid_create_from_name(
+void uuid_upnp_create_from_name(
 	/*! resulting UUID. */
 	uuid_upnp *uid,
 	/*! UUID to serve as context, so identical names from different name
@@ -280,7 +280,7 @@ void format_uuid_v3(uuid_upnp *uid, unsigned char hash[16])
  *
  * Note: Lexical ordering is not temporal ordering!
  */
-int uuid_compare(uuid_upnp *u1, uuid_upnp *u2)
+int uuid_upnp_compare(uuid_upnp *u1, uuid_upnp *u2)
 {
 	int i;
 
-- 
2.8.1.windows.1

