[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[win-pv-devel] [PATCH] Add support for building under VS2015/WDK10



Moving to the new toolchain also threw up a few new warnings, which this
patch either fixes or squashes. Also, SDV appears to be fragile in new
ways (and whinge about some new things) so there are fixes for that too.

Signed-off-by: Paul Durrant <paul.durrant@xxxxxxxxxx>
---
 build.py                                           |  78 +++----------
 src/xeniface/fdo.c                                 |   4 +
 src/xeniface/ioctl_store.c                         |  17 ++-
 src/xeniface/thread.c                              |   1 +
 src/xeniface/thread.h                              |   1 +
 src/xeniface/util.h                                |  54 ++++++++-
 src/xeniface/wmi.c                                 |   2 +
 vs2015/configs.props                               |  45 +++++++
 vs2015/package/package.vcxproj                     |  53 +++++++++
 vs2015/package/package.vcxproj.user                |   8 ++
 vs2015/targets.props                               |  35 ++++++
 vs2015/xenagent/xenagent.vcxproj                   |  82 +++++++++++++
 vs2015/xenagent/xenagent.vcxproj.user              |   4 +
 vs2015/xeniface.sln                                | 130 +++++++++++++++++++++
 vs2015/xeniface/xeniface.vcxproj                   |  97 +++++++++++++++
 vs2015/xeniface/xeniface.vcxproj.user              |   8 ++
 vs2015/xeniface_coinst/xeniface_coinst.vcxproj     |  72 ++++++++++++
 .../xeniface_coinst/xeniface_coinst.vcxproj.user   |   8 ++
 18 files changed, 633 insertions(+), 66 deletions(-)
 create mode 100644 vs2015/configs.props
 create mode 100644 vs2015/package/package.vcxproj
 create mode 100644 vs2015/package/package.vcxproj.user
 create mode 100644 vs2015/targets.props
 create mode 100644 vs2015/xenagent/xenagent.vcxproj
 create mode 100644 vs2015/xenagent/xenagent.vcxproj.user
 create mode 100644 vs2015/xeniface.sln
 create mode 100644 vs2015/xeniface/xeniface.vcxproj
 create mode 100644 vs2015/xeniface/xeniface.vcxproj.user
 create mode 100644 vs2015/xeniface_coinst/xeniface_coinst.vcxproj
 create mode 100644 vs2015/xeniface_coinst/xeniface_coinst.vcxproj.user

diff --git a/build.py b/build.py
index ac701e0..725972a 100755
--- a/build.py
+++ b/build.py
@@ -243,61 +243,19 @@ def remove_timestamps(path):
     dst.close()
     src.close()
 
-def sdv_clean(name, vs):
-    path = [vs, name, 'sdv']
-    print(path)
-
-    shutil.rmtree(os.path.join(*path), True)
-
-    path = [vs, name, 'sdv.temp']
-    print(path)
-
-    shutil.rmtree(os.path.join(*path), True)
-
-    path = [vs, name, 'staticdv.job']
-    print(path)
-
-    try:
-        os.unlink(os.path.join(*path))
-    except OSError:
-        pass
-
-    path = [vs, name, 'refine.sdv']
-    print(path)
-
-    try:
-        os.unlink(os.path.join(*path))
-    except OSError:
-        pass
-
-    path = [vs, name, 'sdv-map.h']
-    print(path)
-
-    try:
-        os.unlink(os.path.join(*path))
-    except OSError:
-        pass
-
-
 def run_sdv(name, dir, vs):
-    configuration = get_configuration('Windows 8', False)
+    release = { 'vs2012':'Windows 8',
+                'vs2013':'Windows 8',
+                'vs2015':'Windows 10' }
+
+    configuration = get_configuration(release[vs], False)
     platform = 'x64'
 
     msbuild(platform, configuration, 'Build', name + '.vcxproj',
             '', os.path.join(vs, name))
 
-    sdv_clean(name, vs)
-
     msbuild(platform, configuration, 'sdv', name + '.vcxproj',
-            '/p:Inputs="/scan"', os.path.join(vs, name))
-
-    path = [vs, name, 'sdv-map.h']
-    file = open(os.path.join(*path), 'r')
-
-    for line in file:
-        print(line)
-
-    file.close()
+            '/p:Inputs="/clean"', os.path.join(vs, name))
 
     msbuild(platform, configuration, 'sdv', name + '.vcxproj',
             '/p:Inputs="/check:default.sdv"', os.path.join(vs, name))
@@ -406,10 +364,11 @@ def getVsVersion():
             continue
         vsenv[k] = v
 
-    if vsenv['VisualStudioVersion'] == '11.0' :
-        return 'vs2012'
-    elif vsenv['VisualStudioVersion'] == '12.0' :
-        return 'vs2013'
+    mapping = { '11.0':'vs2012',
+                '12.0':'vs2013',
+                '14.0':'vs2015' }
+
+    return mapping[vsenv['VisualStudioVersion']]
 
 if __name__ == '__main__':
     debug = { 'checked': True, 'free': False }
@@ -465,16 +424,15 @@ if __name__ == '__main__':
 
     symstore_del(driver, 30)
 
-    if vs=='vs2012':
-        release = 'Windows Vista'
-    else:
-        release = 'Windows 7'
+    release = { 'vs2012':'Windows Vista',
+                'vs2013':'Windows 7',
+                'vs2015':'Windows 8' }
 
-    build_sln(driver, release, 'x86', debug[sys.argv[1]], vs)
-    build_sln(driver, release, 'x64', debug[sys.argv[1]], vs)
+    build_sln(driver, release[vs], 'x86', debug[sys.argv[1]], vs)
+    build_sln(driver, release[vs], 'x64', debug[sys.argv[1]], vs)
 
-    symstore_add(driver, release, 'x86', debug[sys.argv[1]], vs)
-    symstore_add(driver, release, 'x64', debug[sys.argv[1]], vs)
+    symstore_add(driver, release[vs], 'x86', debug[sys.argv[1]], vs)
+    symstore_add(driver, release[vs], 'x64', debug[sys.argv[1]], vs)
 
     if len(sys.argv) <= 2 or sdv[sys.argv[2]]:
         run_sdv('xeniface', driver, vs)
diff --git a/src/xeniface/fdo.c b/src/xeniface/fdo.c
index e3b3dd9..08899bb 100644
--- a/src/xeniface/fdo.c
+++ b/src/xeniface/fdo.c
@@ -1036,6 +1036,7 @@ fail1:
     return status;
 }
 
+__drv_requiresIRQL(PASSIVE_LEVEL)
 static DECLSPEC_NOINLINE VOID
 FdoD0ToD3(
     IN  PXENIFACE_FDO   Fdo
@@ -1299,6 +1300,7 @@ FdoSurpriseRemoval(
     return status;
 }
 
+__drv_requiresIRQL(PASSIVE_LEVEL)
 static DECLSPEC_NOINLINE NTSTATUS
 FdoRemoveDevice(
     IN  PXENIFACE_FDO Fdo,
@@ -2302,6 +2304,7 @@ FdoDispatchSystemControl(
     return status;
 }
 
+__drv_requiresIRQL(PASSIVE_LEVEL)
 static DECLSPEC_NOINLINE NTSTATUS
 FdoDispatchCleanup(
     IN  PXENIFACE_FDO   Fdo,
@@ -2368,6 +2371,7 @@ FdoDispatch(
     return status;
 }
 
+__drv_requiresIRQL(PASSIVE_LEVEL)
 static NTSTATUS
 FdoQueryInterface(
     IN  PXENIFACE_FDO   Fdo,
diff --git a/src/xeniface/ioctl_store.c b/src/xeniface/ioctl_store.c
index c0a1aef..542dbbf 100644
--- a/src/xeniface/ioctl_store.c
+++ b/src/xeniface/ioctl_store.c
@@ -321,16 +321,29 @@ __ConvertPermissions(
     if (XenbusPermissions == NULL)
         goto fail2;
 
+#pragma warning(push)
+#pragma warning(disable:6385)
+#pragma warning(disable:6386)
+
     // Currently XENIFACE_STORE_PERMISSION is the same as 
XENBUS_STORE_PERMISSION,
     // but we convert them here in case something changes in the future.
     for (Index = 0; Index < NumberPermissions; Index++) {
-        if ((XenifacePermissions[Index].Mask & 
~XENIFACE_STORE_ALLOWED_PERMISSIONS) != 0)
+        XENIFACE_STORE_PERMISSION_MASK  Mask = XenifacePermissions[Index].Mask;
+
+        if (Mask & ~XENIFACE_STORE_ALLOWED_PERMISSIONS)
             goto fail3;
 
         XenbusPermissions[Index].Domain = XenifacePermissions[Index].Domain;
-        XenbusPermissions[Index].Mask = 
(XENBUS_STORE_PERMISSION_MASK)XenifacePermissions[Index].Mask;
+        XenbusPermissions[Index].Mask = 0;
+
+        if (Mask & XENIFACE_STORE_PERM_READ)
+            XenbusPermissions[Index].Mask |= XENBUS_STORE_PERM_READ;
+        if (Mask & XENIFACE_STORE_PERM_WRITE)
+            XenbusPermissions[Index].Mask |= XENBUS_STORE_PERM_WRITE;
     }
 
+#pragma warning(pop)
+
     return XenbusPermissions;
 
 fail3:
diff --git a/src/xeniface/thread.c b/src/xeniface/thread.c
index 386bba7..4a5d425 100644
--- a/src/xeniface/thread.c
+++ b/src/xeniface/thread.c
@@ -115,6 +115,7 @@ ThreadFunction(
     // NOT REACHED
 }
 
+__drv_requiresIRQL(PASSIVE_LEVEL)
 NTSTATUS
 ThreadCreate(
     IN  XENIFACE_THREAD_FUNCTION  Function,
diff --git a/src/xeniface/thread.h b/src/xeniface/thread.h
index 69f3c51..929f34e 100644
--- a/src/xeniface/thread.h
+++ b/src/xeniface/thread.h
@@ -38,6 +38,7 @@ typedef struct _XENIFACE_THREAD XENIFACE_THREAD, 
*PXENIFACE_THREAD;
 
 typedef NTSTATUS (*XENIFACE_THREAD_FUNCTION)(PXENIFACE_THREAD, PVOID);
 
+__drv_requiresIRQL(PASSIVE_LEVEL)
 extern NTSTATUS
 ThreadCreate(
     IN  XENIFACE_THREAD_FUNCTION  Function,
diff --git a/src/xeniface/util.h b/src/xeniface/util.h
index 13a6734..56810e0 100644
--- a/src/xeniface/util.h
+++ b/src/xeniface/util.h
@@ -138,6 +138,7 @@ __InterlockedSubtract(
     return New;
 }
 
+__checkReturn
 static FORCEINLINE PVOID
 __AllocatePoolWithTag(
     IN  POOL_TYPE   PoolType,
@@ -150,6 +151,7 @@ __AllocatePoolWithTag(
     __analysis_assume(PoolType == NonPagedPool ||
                       PoolType == PagedPool);
 
+#pragma warning(suppress:28160) // annotation error
     Buffer = ExAllocatePoolWithTag(PoolType, NumberOfBytes, Tag);
     if (Buffer == NULL)
         return NULL;
@@ -190,12 +192,15 @@ __AllocatePage(
                                   SkipBytes,
                                   TotalBytes,
                                   MmCached,
-                                  0);
+                                  MM_DONT_ZERO_ALLOCATION);
 
     status = STATUS_NO_MEMORY;
     if (Mdl == NULL)
         goto fail1;
 
+    if (Mdl->ByteCount < PAGE_SIZE)
+        goto fail2;
+
     ASSERT((Mdl->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA |
                              MDL_PARTIAL_HAS_BEEN_MAPPED |
                              MDL_PARTIAL |
@@ -212,7 +217,7 @@ __AllocatePage(
 
     status = STATUS_UNSUCCESSFUL;
     if (MdlMappedSystemVa == NULL)
-        goto fail2;
+        goto fail3;
 
     ASSERT3P(MdlMappedSystemVa, ==, Mdl->MappedSystemVa);
 
@@ -220,6 +225,9 @@ __AllocatePage(
 
     return Mdl;
 
+fail3:
+    Error("fail3\n");
+
 fail2:
     Error("fail2\n");
 
@@ -267,16 +275,54 @@ __strtok_r(
     if (Token == NULL)
         return NULL;
 
-    while (*Token != L'\0' &&
+    while (*Token != '\0' &&
            strchr(Delimiter, *Token) != NULL)
         Token++;
 
+    if (*Token == '\0')
+        return NULL;
+
+    End = Token + 1;
+    while (*End != '\0' &&
+           strchr(Delimiter, *End) == NULL)
+        End++;
+
+    if (*End != '\0')
+        *End++ = '\0';
+
+    *Context = End;
+
+    return Token;
+}
+
+static FORCEINLINE PWCHAR
+__wcstok_r(
+    IN      PWCHAR  Buffer,
+    IN      PWCHAR  Delimiter,
+    IN OUT  PWCHAR  *Context
+    )
+{
+    PWCHAR          Token;
+    PWCHAR          End;
+
+    if (Buffer != NULL)
+        *Context = Buffer;
+
+    Token = *Context;
+
+    if (Token == NULL)
+        return NULL;
+
+    while (*Token != L'\0' &&
+           wcschr(Delimiter, *Token) != NULL)
+        Token++;
+
     if (*Token == L'\0')
         return NULL;
 
     End = Token + 1;
     while (*End != L'\0' &&
-           strchr(Delimiter, *End) == NULL)
+           wcschr(Delimiter, *End) == NULL)
         End++;
 
     if (*End != L'\0')
diff --git a/src/xeniface/wmi.c b/src/xeniface/wmi.c
index 7059cb2..2e0dd87 100644
--- a/src/xeniface/wmi.c
+++ b/src/xeniface/wmi.c
@@ -1868,6 +1868,7 @@ SessionExecuteGetNextSibling(UCHAR *InBuffer,
             leafoffset--;
     }
     if (leafoffset != 0){
+#pragma warning(suppress:6386) // buffer overrun
         RtlCopyBytes(tmppath,path->Buffer, leafoffset);
         RtlCopyBytes(tmpleaf, path->Buffer+leafoffset+1, 
path->Length-leafoffset-1);
     }
@@ -1879,6 +1880,7 @@ SessionExecuteGetNextSibling(UCHAR *InBuffer,
             tmppath[0]='/';
         }
         else {
+#pragma warning(suppress:6386) // buffer overrun
             RtlCopyBytes(tmpleaf, path->Buffer, path->Length);
         }
 
diff --git a/vs2015/configs.props b/vs2015/configs.props
new file mode 100644
index 0000000..cdbb3c8
--- /dev/null
+++ b/vs2015/configs.props
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003";>
+       <ItemGroup Label="ProjectConfigurations">
+               <ProjectConfiguration Include="Windows 10 Debug|Win32">
+                       <Configuration>Windows 10 Debug</Configuration>
+                       <Platform>Win32</Platform>
+                       
<WindowsTargetPlatformVersion>10</WindowsTargetPlatformVersion>
+               </ProjectConfiguration>
+               <ProjectConfiguration Include="Windows 10 Release|Win32">
+                       <Configuration>Windows 10 Release</Configuration>
+                       <Platform>Win32</Platform>
+                       
<WindowsTargetPlatformVersion>10</WindowsTargetPlatformVersion>
+               </ProjectConfiguration>
+               <ProjectConfiguration Include="Windows 10 Debug|x64">
+                       <Configuration>Windows 10 Debug</Configuration>
+                       <Platform>x64</Platform>
+                       
<WindowsTargetPlatformVersion>10</WindowsTargetPlatformVersion>
+               </ProjectConfiguration>
+               <ProjectConfiguration Include="Windows 10 Release|x64">
+                       <Configuration>Windows 10 Release</Configuration>
+                       <Platform>x64</Platform>
+                       
<WindowsTargetPlatformVersion>10</WindowsTargetPlatformVersion>
+               </ProjectConfiguration>
+               <ProjectConfiguration Include="Windows 8 Debug|Win32">
+                       <Configuration>Windows 8 Debug</Configuration>
+                       <Platform>Win32</Platform>
+                       
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+               </ProjectConfiguration>
+               <ProjectConfiguration Include="Windows 8 Release|Win32">
+                       <Configuration>Windows 8 Release</Configuration>
+                       <Platform>Win32</Platform>
+                       
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+               </ProjectConfiguration>
+               <ProjectConfiguration Include="Windows 8 Debug|x64">
+                       <Configuration>Windows 8 Debug</Configuration>
+                       <Platform>x64</Platform>
+                       
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+               </ProjectConfiguration>
+               <ProjectConfiguration Include="Windows 8 Release|x64">
+                       <Configuration>Windows 8 Release</Configuration>
+                       <Platform>x64</Platform>
+                       
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+               </ProjectConfiguration>
+       </ItemGroup>
+</Project>
diff --git a/vs2015/package/package.vcxproj b/vs2015/package/package.vcxproj
new file mode 100644
index 0000000..b795f62
--- /dev/null
+++ b/vs2015/package/package.vcxproj
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003";>
+  <Import Project="..\configs.props" />
+  <PropertyGroup Label="PropertySheets">
+    <DriverType>WDM</DriverType>
+    <PlatformToolset>WindowsApplicationForDrivers10.0</PlatformToolset>
+    <ConfigurationType>Utility</ConfigurationType>
+    <DriverType>Package</DriverType>
+    <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{9B071A35-897C-477A-AEB7-95F77618A21D}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="..\targets.props" />
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <PropertyGroup>
+    <EnableInf2cat>true</EnableInf2cat>
+    <Inf2CatWindowsVersionList 
Condition="'$(Platform)'=='x64'">8_x64;Server8_x64;10_x64;Server10_x64</Inf2CatWindowsVersionList>
+    <Inf2CatWindowsVersionList 
Condition="'$(Platform)'=='Win32'">8_x86;10_x86</Inf2CatWindowsVersionList>
+    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+    <EnableDeployment>False</EnableDeployment>
+    <ImportToStore>False</ImportToStore>
+    <InstallMode>None</InstallMode>
+    <ScriptDeviceQuery>%PathToInf%</ScriptDeviceQuery>
+    <EnableVerifier>False</EnableVerifier>
+    <AllDrivers>False</AllDrivers>
+    <VerifyProjectOutput>True</VerifyProjectOutput>
+    <VerifyDrivers />
+    <VerifyFlags>133563</VerifyFlags>
+    <IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
+    <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
+    <PackageDir>..\..\xeniface\$(DDKPlatform)</PackageDir>
+  </PropertyGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\xeniface\xeniface.vcxproj">
+      <Project>{22166290-65D8-49D2-BB88-33201797C7D8}</Project>
+    </ProjectReference>
+    <ProjectReference Include="..\xeniface_coinst\xeniface_coinst.vcxproj">
+      <Project>{85c731ad-2ea2-4049-a542-d2d38ede938c}</Project>
+    </ProjectReference>
+    <ProjectReference Include="..\xenagent\xenagent.vcxproj">
+      <Project>{2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}</Project>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <FilesToPackage Include="$(KIT)\Redist\DIFx\dpinst\EngMui\x86\dpinst.exe" 
Condition="'$(Platform)'=='Win32'" />
+    <FilesToPackage Include="$(KIT)\Redist\DIFx\dpinst\EngMui\x64\dpinst.exe" 
Condition="'$(Platform)'=='x64'" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
diff --git a/vs2015/package/package.vcxproj.user 
b/vs2015/package/package.vcxproj.user
new file mode 100644
index 0000000..38b83e3
--- /dev/null
+++ b/vs2015/package/package.vcxproj.user
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003";>
+  <PropertyGroup>
+    <SignMode>TestSign</SignMode>
+    <TestCertificate>..\..\src\xeniface.pfx</TestCertificate>
+    
<TimeStampServer>http://timestamp.verisign.com/scripts/timstamp.dll</TimeStampServer>
+  </PropertyGroup>
+</Project>
diff --git a/vs2015/targets.props b/vs2015/targets.props
new file mode 100644
index 0000000..64598fc
--- /dev/null
+++ b/vs2015/targets.props
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003";>
+       <PropertyGroup Label="Configuration" 
Condition="'$(Configuration)|$(Platform)'=='Windows 10 Debug|Win32'">
+               <TargetVersion>Windows10</TargetVersion>
+               <UseDebugLibraries>true</UseDebugLibraries>
+       </PropertyGroup>
+       <PropertyGroup Label="Configuration" 
Condition="'$(Configuration)|$(Platform)'=='Windows 10 Release|Win32'">
+               <TargetVersion>Windows10</TargetVersion>
+               <UseDebugLibraries>false</UseDebugLibraries>
+       </PropertyGroup>
+       <PropertyGroup Label="Configuration" 
Condition="'$(Configuration)|$(Platform)'=='Windows 10 Debug|x64'">
+               <TargetVersion>Windows10</TargetVersion>
+               <UseDebugLibraries>true</UseDebugLibraries>
+       </PropertyGroup>
+       <PropertyGroup Label="Configuration" 
Condition="'$(Configuration)|$(Platform)'=='Windows 10 Release|x64'">
+               <TargetVersion>Windows10</TargetVersion>
+               <UseDebugLibraries>false</UseDebugLibraries>
+       </PropertyGroup>
+       <PropertyGroup Label="Configuration" 
Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|Win32'">
+               <TargetVersion>Windows8</TargetVersion>
+               <UseDebugLibraries>true</UseDebugLibraries>
+       </PropertyGroup>
+       <PropertyGroup Label="Configuration" 
Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|Win32'">
+               <TargetVersion>Windows8</TargetVersion>
+               <UseDebugLibraries>false</UseDebugLibraries>
+       </PropertyGroup>
+       <PropertyGroup Label="Configuration" 
Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|x64'">
+               <TargetVersion>Windows8</TargetVersion>
+               <UseDebugLibraries>true</UseDebugLibraries>
+       </PropertyGroup>
+       <PropertyGroup Label="Configuration" 
Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|x64'">
+               <TargetVersion>Windows8</TargetVersion>
+               <UseDebugLibraries>false</UseDebugLibraries>
+       </PropertyGroup>
+</Project>
diff --git a/vs2015/xenagent/xenagent.vcxproj b/vs2015/xenagent/xenagent.vcxproj
new file mode 100644
index 0000000..c7fa387
--- /dev/null
+++ b/vs2015/xenagent/xenagent.vcxproj
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003";>
+  <Import Project="..\configs.props" />
+  <PropertyGroup Label="PropertySheets">
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>WindowsApplicationForDrivers10.0</PlatformToolset>
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="..\targets.props" />
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <PropertyGroup>
+    <IncludePath>$(IncludePath)</IncludePath>
+    <RunCodeAnalysis>true</RunCodeAnalysis>
+    <EnableInf2cat>false</EnableInf2cat>
+  </PropertyGroup>
+  <PropertyGroup>
+    <CustomBuildAfterTargets>Link</CustomBuildAfterTargets>
+  </PropertyGroup>
+  <ItemDefinitionGroup>
+    <ClCompile>
+      
<AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      
<PreprocessorDefinitions>WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;__MODULE__="XENAGENT";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <WarningLevel>EnableAllWarnings</WarningLevel>
+      
<DisableSpecificWarnings>4127;4350;4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <EnablePREfast>true</EnablePREfast>
+      <RuntimeLibrary 
Condition="'$(UseDebugLibraries)'=='true'">MultiThreadedDebug</RuntimeLibrary>
+      <RuntimeLibrary 
Condition="'$(UseDebugLibraries)'=='false'">MultiThreaded</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      
<AdditionalDependencies>powrprof.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <ResourceCompile>
+      
<AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
+    <ClCompile>
+      
<PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <CustomBuildStep>
+      <Outputs>$(TargetDir)$(TargetName).dll</Outputs>
+      <Inputs>$(IntDir)$(TargetName).res</Inputs>
+      <Command>link -machine:x86 -dll -noentry -out:%(Outputs) 
%(Inputs)</Command>
+    </CustomBuildStep>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
+    <ClCompile>
+      
<PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <CustomBuildStep>
+      <Outputs>$(TargetDir)$(TargetName).dll</Outputs>
+      <Inputs>$(IntDir)$(TargetName).res</Inputs>
+      <Command>link -machine:x64 -dll -noentry -out:%(Outputs) 
%(Inputs)</Command>
+    </CustomBuildStep>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <FilesToPackage Include="$(TargetPath)" />
+    <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
+    <FilesToPackage Include="$(OutDir)$(TargetName).dll" />
+    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" 
/>
+  </ItemGroup>
+  <ItemGroup>
+    <MessageCompile Include="..\..\src\xenagent\messages.mc" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\xenagent\service.cpp"/>
+    <ClCompile Include="..\..\src\xenagent\devicelist.cpp"/>
+    <ClCompile Include="..\..\src\xenagent\xenifacedevice.cpp"/>
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\..\src\xenagent\xenagent.rc" />
+  </ItemGroup>
+  <ItemGroup>
+    <Image Include="..\..\src\xenagent\xen.ico" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+</Project>
diff --git a/vs2015/xenagent/xenagent.vcxproj.user 
b/vs2015/xenagent/xenagent.vcxproj.user
new file mode 100644
index 0000000..50f3cbe
--- /dev/null
+++ b/vs2015/xenagent/xenagent.vcxproj.user
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003";>
+  <PropertyGroup />
+</Project>
\ No newline at end of file
diff --git a/vs2015/xeniface.sln b/vs2015/xeniface.sln
new file mode 100644
index 0000000..040f071
--- /dev/null
+++ b/vs2015/xeniface.sln
@@ -0,0 +1,130 @@
+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}") = "xeniface_coinst", 
"xeniface_coinst\xeniface_coinst.vcxproj", 
"{85C731AD-2EA2-4049-A542-D2D38EDE938C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xeniface", 
"xeniface\xeniface.vcxproj", "{22166290-65D8-49D2-BB88-33201797C7D8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenagent", 
"xenagent\xenagent.vcxproj", "{2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "package", 
"package\package.vcxproj", "{9B071A35-897C-477A-AEB7-95F77618A21D}"
+       ProjectSection(ProjectDependencies) = postProject
+               {22166290-65D8-49D2-BB88-33201797C7D8} = 
{22166290-65D8-49D2-BB88-33201797C7D8}
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C} = 
{85C731AD-2EA2-4049-A542-D2D38EDE938C}
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B} = 
{2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}
+       EndProjectSection
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               Windows 8 Debug|Win32 = Windows 8 Debug|Win32
+               Windows 8 Debug|x64 = Windows 8 Debug|x64
+               Windows 8 Release|Win32 = Windows 8 Release|Win32
+               Windows 8 Release|x64 = Windows 8 Release|x64
+               Windows 10 Debug|Win32 = Windows 10 Debug|Win32
+               Windows 10 Debug|x64 = Windows 10 Debug|x64
+               Windows 10 Release|Win32 = Windows 10 Release|Win32
+               Windows 10 Release|x64 = Windows 10 Release|x64
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 8 
Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 8 
Debug|Win32.Build.0 = Windows 8 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 8 
Debug|Win32.Deploy.0 = Windows 8 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 8 
Debug|x64.ActiveCfg = Windows 8 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 8 
Debug|x64.Build.0 = Windows 8 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 8 
Debug|x64.Deploy.0 = Windows 8 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 8 
Release|Win32.ActiveCfg = Windows 8 Release|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 8 
Release|Win32.Build.0 = Windows 8 Release|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 8 
Release|Win32.Deploy.0 = Windows 8 Release|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 8 
Release|x64.ActiveCfg = Windows 8 Release|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 8 
Release|x64.Build.0 = Windows 8 Release|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 8 
Release|x64.Deploy.0 = Windows 8 Release|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 10 
Debug|Win32.ActiveCfg = Windows 10 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 10 
Debug|Win32.Build.0 = Windows 10 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 10 
Debug|Win32.Deploy.0 = Windows 10 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 10 
Debug|x64.ActiveCfg = Windows 10 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 10 
Debug|x64.Build.0 = Windows 10 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 10 
Debug|x64.Deploy.0 = Windows 10 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 10 
Release|Win32.ActiveCfg = Windows 10 Release|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 10 
Release|Win32.Build.0 = Windows 10 Release|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 10 
Release|Win32.Deploy.0 = Windows 10 Release|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 10 
Release|x64.ActiveCfg = Windows 10 Release|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 10 
Release|x64.Build.0 = Windows 10 Release|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 10 
Release|x64.Deploy.0 = Windows 10 Release|x64
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows 8 
Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows 8 
Debug|Win32.Build.0 = Windows 8 Debug|Win32
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows 8 
Debug|Win32.Deploy.0 = Windows 8 Debug|Win32
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows 8 
Debug|x64.ActiveCfg = Windows 8 Debug|x64
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows 8 
Debug|x64.Build.0 = Windows 8 Debug|x64
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows 8 
Debug|x64.Deploy.0 = Windows 8 Debug|x64
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows 8 
Release|Win32.ActiveCfg = Windows 8 Release|Win32
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows 8 
Release|Win32.Build.0 = Windows 8 Release|Win32
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows 8 
Release|Win32.Deploy.0 = Windows 8 Release|Win32
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows 8 
Release|x64.ActiveCfg = Windows 8 Release|x64
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows 8 
Release|x64.Build.0 = Windows 8 Release|x64
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows 8 
Release|x64.Deploy.0 = Windows 8 Release|x64
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows 10 
Debug|Win32.ActiveCfg = Windows 10 Debug|Win32
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows 10 
Debug|Win32.Build.0 = Windows 10 Debug|Win32
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows 10 
Debug|Win32.Deploy.0 = Windows 10 Debug|Win32
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows 10 
Debug|x64.ActiveCfg = Windows 10 Debug|x64
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows 10 
Debug|x64.Build.0 = Windows 10 Debug|x64
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows 10 
Debug|x64.Deploy.0 = Windows 10 Debug|x64
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows 10 
Release|Win32.ActiveCfg = Windows 10 Release|Win32
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows 10 
Release|Win32.Build.0 = Windows 10 Release|Win32
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows 10 
Release|Win32.Deploy.0 = Windows 10 Release|Win32
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows 10 
Release|x64.ActiveCfg = Windows 10 Release|x64
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows 10 
Release|x64.Build.0 = Windows 10 Release|x64
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows 10 
Release|x64.Deploy.0 = Windows 10 Release|x64
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 
Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 
Debug|Win32.Build.0 = Windows 8 Debug|Win32
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 
Debug|Win32.Deploy.0 = Windows 8 Debug|Win32
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 
Debug|x64.ActiveCfg = Windows 8 Debug|x64
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 
Debug|x64.Build.0 = Windows 8 Debug|x64
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 
Debug|x64.Deploy.0 = Windows 8 Debug|x64
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 
Release|Win32.ActiveCfg = Windows 8 Release|Win32
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 
Release|Win32.Build.0 = Windows 8 Release|Win32
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 
Release|Win32.Deploy.0 = Windows 8 Release|Win32
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 
Release|x64.ActiveCfg = Windows 8 Release|x64
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 
Release|x64.Build.0 = Windows 8 Release|x64
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 8 
Release|x64.Deploy.0 = Windows 8 Release|x64
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 
Debug|Win32.ActiveCfg = Windows 10 Debug|Win32
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 
Debug|Win32.Build.0 = Windows 10 Debug|Win32
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 
Debug|Win32.Deploy.0 = Windows 10 Debug|Win32
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 
Debug|x64.ActiveCfg = Windows 10 Debug|x64
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 
Debug|x64.Build.0 = Windows 10 Debug|x64
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 
Debug|x64.Deploy.0 = Windows 10 Debug|x64
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 
Release|Win32.ActiveCfg = Windows 10 Release|Win32
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 
Release|Win32.Build.0 = Windows 10 Release|Win32
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 
Release|Win32.Deploy.0 = Windows 10 Release|Win32
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 
Release|x64.ActiveCfg = Windows 10 Release|x64
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 
Release|x64.Build.0 = Windows 10 Release|x64
+               {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows 10 
Release|x64.Deploy.0 = Windows 10 Release|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 8 
Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 8 
Debug|Win32.Build.0 = Windows 8 Debug|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 8 
Debug|Win32.Deploy.0 = Windows 8 Debug|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 8 
Debug|x64.ActiveCfg = Windows 8 Debug|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 8 
Debug|x64.Build.0 = Windows 8 Debug|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 8 
Debug|x64.Deploy.0 = Windows 8 Debug|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 8 
Release|Win32.ActiveCfg = Windows 8 Release|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 8 
Release|Win32.Build.0 = Windows 8 Release|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 8 
Release|Win32.Deploy.0 = Windows 8 Release|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 8 
Release|x64.ActiveCfg = Windows 8 Release|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 8 
Release|x64.Build.0 = Windows 8 Release|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 8 
Release|x64.Deploy.0 = Windows 8 Release|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 10 
Debug|Win32.ActiveCfg = Windows 10 Debug|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 10 
Debug|Win32.Build.0 = Windows 10 Debug|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 10 
Debug|Win32.Deploy.0 = Windows 10 Debug|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 10 
Debug|x64.ActiveCfg = Windows 10 Debug|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 10 
Debug|x64.Build.0 = Windows 10 Debug|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 10 
Debug|x64.Deploy.0 = Windows 10 Debug|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 10 
Release|Win32.ActiveCfg = Windows 10 Release|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 10 
Release|Win32.Build.0 = Windows 10 Release|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 10 
Release|Win32.Deploy.0 = Windows 10 Release|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 10 
Release|x64.ActiveCfg = Windows 10 Release|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 10 
Release|x64.Build.0 = Windows 10 Release|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 10 
Release|x64.Deploy.0 = Windows 10 Release|x64
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/vs2015/xeniface/xeniface.vcxproj b/vs2015/xeniface/xeniface.vcxproj
new file mode 100644
index 0000000..860630f
--- /dev/null
+++ b/vs2015/xeniface/xeniface.vcxproj
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003";>
+  <Import Project="..\configs.props" />
+  <PropertyGroup Label="PropertySheets">
+    <DriverType>WDM</DriverType>
+    <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset>
+    <ConfigurationType>Driver</ConfigurationType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{22166290-65D8-49D2-BB88-33201797C7D8}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="..\targets.props" />
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <PropertyGroup>
+    <RunCodeAnalysis>true</RunCodeAnalysis>
+    <EnableInf2cat>false</EnableInf2cat>
+    <IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
+    <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup>
+    <ClCompile>
+      
<AdditionalIncludeDirectories>$(WindowsSdkDir)\include\km;..\..\include;</AdditionalIncludeDirectories>
+      
<PreprocessorDefinitions>__MODULE__="XENIFACE";POOL_NX_OPTIN=1;NT_PROCESSOR_GROUPS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <WarningLevel>EnableAllWarnings</WarningLevel>
+      
<DisableSpecificWarnings>4464;4711;4548;4820;4668;4255;6001;6054;30030;30029;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <EnablePREfast>true</EnablePREfast>
+    </ClCompile>
+    <ResourceCompile>
+      
<AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ResourceCompile>
+    <Link>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+      
<AdditionalDependencies>$(DDK_LIB_PATH)\ntstrsafe.lib;$(DDK_LIB_PATH)\procgrp.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+    </Link>
+    <Inf>
+      <SpecifyArchitecture>true</SpecifyArchitecture>
+      <SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
+      
<TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
+      <EnableVerbose>true</EnableVerbose>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
+    <ClCompile>
+      
<PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Inf>
+      <Architecture>x86</Architecture>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
+    <ClCompile>
+      
<PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Inf>
+      <Architecture>amd64</Architecture>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <FilesToPackage Include="$(TargetPath)" />
+    <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
+    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" 
/>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\xeniface\ioctls.c" />
+    <ClCompile Include="..\..\src\xeniface\wmi.c" />
+    <ClCompile Include="..\..\src\xeniface\driver.c" />
+    <ClCompile Include="..\..\src\xeniface\fdo.c" />
+    <ClCompile Include="..\..\src\xeniface\registry.c" />
+    <ClCompile Include="..\..\src\xeniface\thread.c" />
+    <ClCompile Include="..\..\src\xeniface\ioctl_sharedinfo.c" />
+    <ClCompile Include="..\..\src\xeniface\ioctl_suspend.c" />
+    <ClCompile Include="..\..\src\xeniface\ioctl_evtchn.c" />
+    <ClCompile Include="..\..\src\xeniface\ioctl_gnttab.c" />
+    <ClCompile Include="..\..\src\xeniface\ioctl_store.c" />
+    <ClCompile Include="..\..\src\xeniface\irp_queue.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <Mofcomp Include="../../src/xeniface/wmi.mof">
+      <CreateBinaryMofFile>$(IntDir)/wmi.bmf</CreateBinaryMofFile>
+    </Mofcomp>
+  </ItemGroup>
+  <ItemGroup>
+    <Wmimofck Include="$(IntDir)\wmi.bmf">
+      <HeaderOutputFile>..\..\src\xeniface\wmi_generated.h</HeaderOutputFile>
+    </Wmimofck>
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\..\src\xeniface\xeniface.rc" />
+  </ItemGroup>
+  <ItemGroup>
+    <Inf Include="..\xeniface.inf" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+</Project>
diff --git a/vs2015/xeniface/xeniface.vcxproj.user 
b/vs2015/xeniface/xeniface.vcxproj.user
new file mode 100644
index 0000000..38b83e3
--- /dev/null
+++ b/vs2015/xeniface/xeniface.vcxproj.user
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003";>
+  <PropertyGroup>
+    <SignMode>TestSign</SignMode>
+    <TestCertificate>..\..\src\xeniface.pfx</TestCertificate>
+    
<TimeStampServer>http://timestamp.verisign.com/scripts/timstamp.dll</TimeStampServer>
+  </PropertyGroup>
+</Project>
diff --git a/vs2015/xeniface_coinst/xeniface_coinst.vcxproj 
b/vs2015/xeniface_coinst/xeniface_coinst.vcxproj
new file mode 100644
index 0000000..343d2eb
--- /dev/null
+++ b/vs2015/xeniface_coinst/xeniface_coinst.vcxproj
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003";>
+  <Import Project="..\configs.props" />
+  <PropertyGroup Label="PropertySheets">
+    <DriverType>WDM</DriverType>
+    <PlatformToolset>WindowsApplicationForDrivers10.0</PlatformToolset>
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{85c731ad-2ea2-4049-a542-d2d38ede938c}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="..\targets.props" />
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <PropertyGroup>
+    <RunCodeAnalysis>true</RunCodeAnalysis>
+    <EnableInf2cat>false</EnableInf2cat>
+  </PropertyGroup>
+  <ItemDefinitionGroup>
+    <ClCompile>
+      
<AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      
<PreprocessorDefinitions>__MODULE__="XENIFACE_COINST";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <WarningLevel>EnableAllWarnings</WarningLevel>
+      
<DisableSpecificWarnings>4127;4711;4548;4820;4668;4255;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <EnablePREfast>true</EnablePREfast>
+      <RuntimeLibrary 
Condition="'$(UseDebugLibraries)'=='true'">MultiThreadedDebug</RuntimeLibrary>
+      <RuntimeLibrary 
Condition="'$(UseDebugLibraries)'=='false'">MultiThreaded</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      
<ModuleDefinitionFile>../../src/coinst/xeniface_coinst.def</ModuleDefinitionFile>
+      
<AdditionalDependencies>setupapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <ResourceCompile>
+      
<AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ResourceCompile>
+    <Inf>
+      <SpecifyArchitecture>true</SpecifyArchitecture>
+      <SpecifyDriverVerDirectiveVersion>true</SpecifyDriverVerDirectiveVersion>
+      
<TimeStamp>$(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION).$(BUILD_NUMBER)</TimeStamp>
+      <EnableVerbose>true</EnableVerbose>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
+    <ClCompile>
+      
<PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Inf>
+      <Architecture>x86</Architecture>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
+    <ClCompile>
+      
<PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Inf>
+      <Architecture>amd64</Architecture>
+    </Inf>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <FilesToPackage Include="$(TargetPath)" />
+    <FilesToPackage Include="$(OutDir)$(TargetName).pdb" />
+    <FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" 
/>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\coinst\coinst.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\..\src\coinst\xeniface_coinst.def" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+</Project>
diff --git a/vs2015/xeniface_coinst/xeniface_coinst.vcxproj.user 
b/vs2015/xeniface_coinst/xeniface_coinst.vcxproj.user
new file mode 100644
index 0000000..38b83e3
--- /dev/null
+++ b/vs2015/xeniface_coinst/xeniface_coinst.vcxproj.user
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003";>
+  <PropertyGroup>
+    <SignMode>TestSign</SignMode>
+    <TestCertificate>..\..\src\xeniface.pfx</TestCertificate>
+    
<TimeStampServer>http://timestamp.verisign.com/scripts/timstamp.dll</TimeStampServer>
+  </PropertyGroup>
+</Project>
-- 
2.5.3


_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.