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

[win-pv-devel] [PATCH 2/3] Add a co-installer



The co-installer does not do anything as yet. Functionality will be added in
a subsequent patch.

Signed-off-by: Paul Durrant <paul.durrant@xxxxxxxxxx>
---
 src/coinst/coinst.c                                | 493 +++++++++++++++++++++
 src/coinst/xeniface_coinst.def                     |  37 ++
 src/xeniface.inf                                   |  16 +
 vs2012/package/package.vcxproj                     |   3 +
 vs2012/xeniface.sln                                | 173 +++++---
 vs2012/xeniface/xeniface.vcxproj                   |   6 +-
 vs2012/xeniface_coinst/xeniface_coinst.vcxproj     |  85 ++++
 .../xeniface_coinst/xeniface_coinst.vcxproj.user   |   8 +
 vs2013/package/package.vcxproj                     |   3 +
 vs2013/xeniface.sln                                |  56 ++-
 vs2013/xeniface/xeniface.vcxproj                   |   6 +-
 vs2013/xeniface_coinst/xeniface_coinst.vcxproj     | 113 +++++
 .../xeniface_coinst/xeniface_coinst.vcxproj.user   |   8 +
 13 files changed, 937 insertions(+), 70 deletions(-)
 create mode 100644 src/coinst/coinst.c
 create mode 100644 src/coinst/xeniface_coinst.def
 create mode 100644 vs2012/xeniface_coinst/xeniface_coinst.vcxproj
 create mode 100644 vs2012/xeniface_coinst/xeniface_coinst.vcxproj.user
 create mode 100644 vs2013/xeniface_coinst/xeniface_coinst.vcxproj
 create mode 100644 vs2013/xeniface_coinst/xeniface_coinst.vcxproj.user

diff --git a/src/coinst/coinst.c b/src/coinst/coinst.c
new file mode 100644
index 0000000..cd3d1e0
--- /dev/null
+++ b/src/coinst/coinst.c
@@ -0,0 +1,493 @@
+/* Copyright (c) Citrix Systems Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
+ * that the following conditions are met:
+ *
+ * *   Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the
+ *     following disclaimer.
+ * *   Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the
+ *     following disclaimer in the documentation and/or other
+ *     materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#define INITGUID
+
+#include <windows.h>
+#include <setupapi.h>
+#include <devguid.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <strsafe.h>
+#include <malloc.h>
+#include <assert.h>
+
+#include <suspend_interface.h>
+#include <shared_info_interface.h>
+#include <store_interface.h>
+
+#include <version.h>
+
+__user_code;
+
+#define MAXIMUM_BUFFER_SIZE 1024
+
+#define SERVICES_KEY "SYSTEM\\CurrentControlSet\\Services"
+
+#define SERVICE_KEY(_Driver)    \
+        SERVICES_KEY ## "\\" ## #_Driver
+
+#define PARAMETERS_KEY(_Driver) \
+        SERVICE_KEY(_Driver) ## "\\Parameters"
+
+#define CONTROL_KEY "SYSTEM\\CurrentControlSet\\Control"
+
+#define CLASS_KEY   \
+        CONTROL_KEY ## "\\Class"
+
+#define ENUM_KEY    "SYSTEM\\CurrentControlSet\\Enum"
+
+static VOID
+#pragma prefast(suppress:6262) // Function uses '1036' bytes of stack: exceeds 
/analyze:stacksize'1024'
+__Log(
+    IN  const CHAR  *Format,
+    IN  ...
+    )
+{
+    TCHAR               Buffer[MAXIMUM_BUFFER_SIZE];
+    va_list             Arguments;
+    size_t              Length;
+    SP_LOG_TOKEN        LogToken;
+    DWORD               Category;
+    DWORD               Flags;
+    HRESULT             Result;
+
+    va_start(Arguments, Format);
+    Result = StringCchVPrintf(Buffer, MAXIMUM_BUFFER_SIZE, Format, Arguments);
+    va_end(Arguments);
+
+    if (Result != S_OK && Result != STRSAFE_E_INSUFFICIENT_BUFFER)
+        return;
+
+    Result = StringCchLength(Buffer, MAXIMUM_BUFFER_SIZE, &Length);
+    if (Result != S_OK)
+        return;
+
+    LogToken = SetupGetThreadLogToken();
+    Category = TXTLOG_VENDOR;
+    Flags = TXTLOG_DETAILS;
+
+    SetupWriteTextLog(LogToken, Category, Flags, Buffer);
+    Length = __min(MAXIMUM_BUFFER_SIZE - 1, Length + 2);
+
+    __analysis_assume(Length < MAXIMUM_BUFFER_SIZE);
+    __analysis_assume(Length >= 2);
+    Buffer[Length] = '\0';
+    Buffer[Length - 1] = '\n';
+    Buffer[Length - 2] = '\r';
+
+    OutputDebugString(Buffer);
+}
+
+#define Log(_Format, ...) \
+        __Log(__MODULE__ "|" __FUNCTION__ ": " _Format, __VA_ARGS__)
+
+static PTCHAR
+GetErrorMessage(
+    IN  DWORD   Error
+    )
+{
+    PTCHAR      Message;
+    ULONG       Index;
+
+    FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
+                  FORMAT_MESSAGE_FROM_SYSTEM |
+                  FORMAT_MESSAGE_IGNORE_INSERTS,
+                  NULL,
+                  Error,
+                  MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+                  (LPTSTR)&Message,
+                  0,
+                  NULL);
+
+    for (Index = 0; Message[Index] != '\0'; Index++) {
+        if (Message[Index] == '\r' || Message[Index] == '\n') {
+            Message[Index] = '\0';
+            break;
+        }
+    }
+
+    return Message;
+}
+
+static const CHAR *
+FunctionName(
+    IN  DI_FUNCTION Function
+    )
+{
+#define _NAME(_Function)        \
+        case DIF_ ## _Function: \
+            return #_Function;
+
+    switch (Function) {
+    _NAME(INSTALLDEVICE);
+    _NAME(REMOVE);
+    _NAME(SELECTDEVICE);
+    _NAME(ASSIGNRESOURCES);
+    _NAME(PROPERTIES);
+    _NAME(FIRSTTIMESETUP);
+    _NAME(FOUNDDEVICE);
+    _NAME(SELECTCLASSDRIVERS);
+    _NAME(VALIDATECLASSDRIVERS);
+    _NAME(INSTALLCLASSDRIVERS);
+    _NAME(CALCDISKSPACE);
+    _NAME(DESTROYPRIVATEDATA);
+    _NAME(VALIDATEDRIVER);
+    _NAME(MOVEDEVICE);
+    _NAME(DETECT);
+    _NAME(INSTALLWIZARD);
+    _NAME(DESTROYWIZARDDATA);
+    _NAME(PROPERTYCHANGE);
+    _NAME(ENABLECLASS);
+    _NAME(DETECTVERIFY);
+    _NAME(INSTALLDEVICEFILES);
+    _NAME(ALLOW_INSTALL);
+    _NAME(SELECTBESTCOMPATDRV);
+    _NAME(REGISTERDEVICE);
+    _NAME(NEWDEVICEWIZARD_PRESELECT);
+    _NAME(NEWDEVICEWIZARD_SELECT);
+    _NAME(NEWDEVICEWIZARD_PREANALYZE);
+    _NAME(NEWDEVICEWIZARD_POSTANALYZE);
+    _NAME(NEWDEVICEWIZARD_FINISHINSTALL);
+    _NAME(INSTALLINTERFACES);
+    _NAME(DETECTCANCEL);
+    _NAME(REGISTER_COINSTALLERS);
+    _NAME(ADDPROPERTYPAGE_ADVANCED);
+    _NAME(ADDPROPERTYPAGE_BASIC);
+    _NAME(TROUBLESHOOTER);
+    _NAME(POWERMESSAGEWAKE);
+    default:
+        break;
+    }
+
+    return "UNKNOWN";
+
+#undef  _NAME
+}
+
+static HRESULT
+DifInstallPreProcess(
+    IN  HDEVINFO                    DeviceInfoSet,
+    IN  PSP_DEVINFO_DATA            DeviceInfoData,
+    IN  PCOINSTALLER_CONTEXT_DATA   Context
+    )
+{
+    UNREFERENCED_PARAMETER(DeviceInfoSet);
+    UNREFERENCED_PARAMETER(DeviceInfoData);
+    UNREFERENCED_PARAMETER(Context);
+
+    Log("<===>");
+
+    return NO_ERROR;
+}
+
+static HRESULT
+DifInstallPostProcess(
+    IN  HDEVINFO                    DeviceInfoSet,
+    IN  PSP_DEVINFO_DATA            DeviceInfoData,
+    IN  PCOINSTALLER_CONTEXT_DATA   Context
+    )
+{
+    UNREFERENCED_PARAMETER(DeviceInfoSet);
+    UNREFERENCED_PARAMETER(DeviceInfoData);
+    UNREFERENCED_PARAMETER(Context);
+
+    Log("<===>");
+
+    return NO_ERROR;
+}
+
+static HRESULT
+DifInstall(
+    IN  HDEVINFO                    DeviceInfoSet,
+    IN  PSP_DEVINFO_DATA            DeviceInfoData,
+    IN  PCOINSTALLER_CONTEXT_DATA   Context
+    )
+{
+    SP_DEVINSTALL_PARAMS            DeviceInstallParams;
+    HRESULT                         Error;
+
+    DeviceInstallParams.cbSize = sizeof (DeviceInstallParams);
+
+    if (!SetupDiGetDeviceInstallParams(DeviceInfoSet,
+                                       DeviceInfoData,
+                                       &DeviceInstallParams))
+        goto fail1;
+
+    Log("Flags = %08x", DeviceInstallParams.Flags);
+
+    if (!Context->PostProcessing) {
+        Error = DifInstallPreProcess(DeviceInfoSet, DeviceInfoData, Context);
+
+        if (Error == NO_ERROR)
+            Error = ERROR_DI_POSTPROCESSING_REQUIRED;
+    } else {
+        Error = Context->InstallResult;
+
+        if (Error == NO_ERROR) {
+            (VOID) DifInstallPostProcess(DeviceInfoSet, DeviceInfoData, 
Context);
+        } else {
+            PTCHAR  Message;
+
+            Message = GetErrorMessage(Error);
+            Log("NOT RUNNING (DifInstallPreProcess Error: %s)", Message);
+            LocalFree(Message);
+        }
+
+        Error = NO_ERROR;
+    }
+
+    return Error;
+
+fail1:
+    Error = GetLastError();
+
+    {
+        PTCHAR  Message;
+
+        Message = GetErrorMessage(Error);
+        Log("fail1 (%s)", Message);
+        LocalFree(Message);
+    }
+
+    return Error;
+}
+
+static HRESULT
+DifRemovePreProcess(
+    IN  HDEVINFO                    DeviceInfoSet,
+    IN  PSP_DEVINFO_DATA            DeviceInfoData,
+    IN  PCOINSTALLER_CONTEXT_DATA   Context
+    )
+{
+    UNREFERENCED_PARAMETER(DeviceInfoSet);
+    UNREFERENCED_PARAMETER(DeviceInfoData);
+    UNREFERENCED_PARAMETER(Context);
+
+    Log("<===>");
+
+    return NO_ERROR;
+}
+
+static HRESULT
+DifRemovePostProcess(
+    IN  HDEVINFO                    DeviceInfoSet,
+    IN  PSP_DEVINFO_DATA            DeviceInfoData,
+    IN  PCOINSTALLER_CONTEXT_DATA   Context
+    )
+{
+    UNREFERENCED_PARAMETER(DeviceInfoSet);
+    UNREFERENCED_PARAMETER(DeviceInfoData);
+    UNREFERENCED_PARAMETER(Context);
+
+    Log("<===>");
+
+    return NO_ERROR;
+}
+
+static HRESULT
+DifRemove(
+    IN  HDEVINFO                    DeviceInfoSet,
+    IN  PSP_DEVINFO_DATA            DeviceInfoData,
+    IN  PCOINSTALLER_CONTEXT_DATA   Context
+    )
+{
+    SP_DEVINSTALL_PARAMS            DeviceInstallParams;
+    HRESULT                         Error;
+
+    DeviceInstallParams.cbSize = sizeof (DeviceInstallParams);
+
+    if (!SetupDiGetDeviceInstallParams(DeviceInfoSet,
+                                       DeviceInfoData,
+                                       &DeviceInstallParams))
+        goto fail1;
+
+    Log("Flags = %08x", DeviceInstallParams.Flags);
+
+    if (!Context->PostProcessing) {
+        Error = DifRemovePreProcess(DeviceInfoSet, DeviceInfoData, Context);
+
+        if (Error == NO_ERROR)
+            Error = ERROR_DI_POSTPROCESSING_REQUIRED;
+    } else {
+        Error = Context->InstallResult;
+
+        if (Error == NO_ERROR) {
+            (VOID) DifRemovePostProcess(DeviceInfoSet, DeviceInfoData, 
Context);
+        } else {
+            PTCHAR  Message;
+
+            Message = GetErrorMessage(Error);
+            Log("NOT RUNNING (DifRemovePreProcess Error: %s)", Message);
+            LocalFree(Message);
+        }
+
+        Error = NO_ERROR;
+    }
+
+    return Error;
+
+fail1:
+    Error = GetLastError();
+
+    {
+        PTCHAR  Message;
+
+        Message = GetErrorMessage(Error);
+        Log("fail1 (%s)", Message);
+        LocalFree(Message);
+    }
+
+    return Error;
+}
+
+DWORD CALLBACK
+Entry(
+    IN  DI_FUNCTION                 Function,
+    IN  HDEVINFO                    DeviceInfoSet,
+    IN  PSP_DEVINFO_DATA            DeviceInfoData,
+    IN  PCOINSTALLER_CONTEXT_DATA   Context
+    )
+{
+    HRESULT                         Error;
+
+    Log("%s (%s) ===>",
+        MAJOR_VERSION_STR "." MINOR_VERSION_STR "." MICRO_VERSION_STR "." 
BUILD_NUMBER_STR,
+        DAY_STR "/" MONTH_STR "/" YEAR_STR);
+
+    if (!Context->PostProcessing) {
+        Log("%s PreProcessing",
+            FunctionName(Function));
+    } else {
+        Log("%s PostProcessing (%08x)",
+            FunctionName(Function),
+            Context->InstallResult);
+    }
+
+    switch (Function) {
+    case DIF_INSTALLDEVICE: {
+        SP_DRVINFO_DATA         DriverInfoData;
+        BOOLEAN                 DriverInfoAvailable;
+
+        DriverInfoData.cbSize = sizeof (DriverInfoData);
+        DriverInfoAvailable = SetupDiGetSelectedDriver(DeviceInfoSet,
+                                                       DeviceInfoData,
+                                                       &DriverInfoData) ?
+                              TRUE :
+                              FALSE;
+
+        // If there is no driver information then the NULL driver is being
+        // installed. Treat this as we would a DIF_REMOVE.
+        Error = (DriverInfoAvailable) ?
+                DifInstall(DeviceInfoSet, DeviceInfoData, Context) :
+                DifRemove(DeviceInfoSet, DeviceInfoData, Context);
+        break;
+    }
+    case DIF_REMOVE:
+        Error = DifRemove(DeviceInfoSet, DeviceInfoData, Context);
+        break;
+    default:
+        if (!Context->PostProcessing) {
+            Error = NO_ERROR;
+        } else {
+            Error = Context->InstallResult;
+        }
+
+        break;
+    }
+
+    Log("%s (%s) <===",
+        MAJOR_VERSION_STR "." MINOR_VERSION_STR "." MICRO_VERSION_STR "." 
BUILD_NUMBER_STR,
+        DAY_STR "/" MONTH_STR "/" YEAR_STR);
+
+    return (DWORD)Error;
+}
+
+DWORD CALLBACK
+Version(
+    IN  HWND        Window,
+    IN  HINSTANCE   Module,
+    IN  PTCHAR      Buffer,
+    IN  INT         Reserved
+    )
+{
+    UNREFERENCED_PARAMETER(Window);
+    UNREFERENCED_PARAMETER(Module);
+    UNREFERENCED_PARAMETER(Buffer);
+    UNREFERENCED_PARAMETER(Reserved);
+
+    Log("%s (%s)",
+        MAJOR_VERSION_STR "." MINOR_VERSION_STR "." MICRO_VERSION_STR "." 
BUILD_NUMBER_STR,
+        DAY_STR "/" MONTH_STR "/" YEAR_STR);
+
+    return NO_ERROR;
+}
+
+static const CHAR *
+ReasonName(
+    IN  DWORD       Reason
+    )
+{
+#define _NAME(_Reason)          \
+        case DLL_ ## _Reason:   \
+            return #_Reason;
+
+    switch (Reason) {
+    _NAME(PROCESS_ATTACH);
+    _NAME(PROCESS_DETACH);
+    _NAME(THREAD_ATTACH);
+    _NAME(THREAD_DETACH);
+    default:
+        break;
+    }
+
+    return "UNKNOWN";
+
+#undef  _NAME
+}
+
+BOOL WINAPI
+DllMain(
+    IN  HINSTANCE   Module,
+    IN  DWORD       Reason,
+    IN  PVOID       Reserved
+    )
+{
+    UNREFERENCED_PARAMETER(Module);
+    UNREFERENCED_PARAMETER(Reserved);
+
+    Log("%s (%s): %s",
+        MAJOR_VERSION_STR "." MINOR_VERSION_STR "." MICRO_VERSION_STR "." 
BUILD_NUMBER_STR,
+        DAY_STR "/" MONTH_STR "/" YEAR_STR,
+        ReasonName(Reason));
+
+    return TRUE;
+}
diff --git a/src/coinst/xeniface_coinst.def b/src/coinst/xeniface_coinst.def
new file mode 100644
index 0000000..69fee2e
--- /dev/null
+++ b/src/coinst/xeniface_coinst.def
@@ -0,0 +1,37 @@
+; Copyright (c) Citrix Systems Inc.
+; All rights reserved.
+;
+; Redistribution and use in source and binary forms,
+; with or without modification, are permitted provided
+; that the following conditions are met:
+;
+; *   Redistributions of source code must retain the above
+;     copyright notice, this list of conditions and the
+;     following disclaimer.
+; *   Redistributions in binary form must reproduce the above
+;     copyright notice, this list of conditions and the
+;     following disclaimer in the documentation and/or other
+;     materials provided with the distribution.
+;
+; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+; BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+; SUCH DAMAGE.
+
+LIBRARY  XENBUS_COINST
+
+EXPORTS
+   Entry
+   Version
+
+   DllMain PRIVATE
diff --git a/src/xeniface.inf b/src/xeniface.inf
index a5969b9..44a54fc 100644
--- a/src/xeniface.inf
+++ b/src/xeniface.inf
@@ -38,6 +38,7 @@ CatalogFile=xeniface.cat
 
 [DestinationDirs]
 DefaultDestDir = 12
+Coinst.NT.Copy = 11
 ServiceDestDir.NT.Copy = 11
 
 [Manufacturer]
@@ -57,6 +58,9 @@ CopyFiles=XenIface_Device.NT.Copy, ServiceDestDir.NT.Copy
 [XenIFace_Device.NT.Copy]
 xeniface.sys
 
+[CoInst.NT.Copy]
+xeniface_coinst_@MAJOR_VERSION@_@MINOR_VERSION@_@MICRO_VERSION@_@BUILD_NUMBER@.dll,xeniface_coinst.dll
+
 [ServiceDestDir.NT.Copy]
 liteagent.exe
 
@@ -71,6 +75,17 @@ StartType      = 3               ; SERVICE_DEMAND_START
 ErrorControl   = 1               ; SERVICE_ERROR_NORMAL
 ServiceBinary  = %12%\xeniface.sys
 LoadOrderGroup = Extended Base
+AddReg = Xeniface_Parameters
+
+[Xeniface_Parameters]
+HKR,"Parameters",,0x00000010
+
+[Xeniface_Device.NT$ARCH$.Coinstallers]
+CopyFiles=CoInst.NT.Copy
+AddReg=CoInst_AddReg
+
+[CoInst_AddReg]
+HKR,,CoInstallers32,0x00010000,"xeniface_coinst_@MAJOR_VERSION@_@MINOR_VERSION@_@MICRO_VERSION@_@BUILD_NUMBER@.dll,Entry"
 
 [xenlite_Service_Inst]
 DisplayName    = %xenlite.SVCDESC%
@@ -85,6 +100,7 @@ ServiceBinary  = %11%\liteagent.exe
 [SourceDisksFiles]
 xeniface.sys  = 1,,
 liteagent.exe = 1,,
+xeniface_coinst.dll=1,,
 
 [Strings]
 SPSVCINST_ASSOCSERVICE= 0x00000002
diff --git a/vs2012/package/package.vcxproj b/vs2012/package/package.vcxproj
index 94f273a..4b59968 100644
--- a/vs2012/package/package.vcxproj
+++ b/vs2012/package/package.vcxproj
@@ -44,6 +44,9 @@
                 <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>
         </ItemGroup>
        <ItemGroup>
                <FilesToPackage 
Include="$(KIT)\Redist\DIFx\dpinst\EngMui\x86\dpinst.exe" 
Condition="'$(Platform)'=='Win32'" />
diff --git a/vs2012/xeniface.sln b/vs2012/xeniface.sln
index 1913a5b..cb6becf 100644
--- a/vs2012/xeniface.sln
+++ b/vs2012/xeniface.sln
@@ -1,12 +1,14 @@
 Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio 2012
+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}") = "LiteAgent", 
"liteagent\LiteAgent.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
@@ -30,11 +32,60 @@ Global
                Windows Vista Release|x64 = Windows Vista Release|x64
        EndGlobalSection
        GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Debug|Win32.ActiveCfg = 
Windows 8 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Debug|Win32.Build.0 = 
Windows 8 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Debug|Win32.Deploy.0 = 
Windows 8 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Debug|x64.ActiveCfg = 
Windows 7 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Debug|x64.Build.0 = 
Windows 7 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Debug|x64.Deploy.0 = 
Windows 7 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Release|Win32.ActiveCfg 
= Windows 7 Release|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Release|Win32.Build.0 = 
Windows 7 Release|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Release|Win32.Deploy.0 = 
Windows 7 Release|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Release|x64.ActiveCfg = 
Windows 7 Release|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Release|x64.Build.0 = 
Windows 7 Release|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Release|x64.Deploy.0 = 
Windows 7 Release|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 7 
Debug|Win32.ActiveCfg = Windows 7 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 7 
Debug|Win32.Build.0 = Windows 7 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 7 
Debug|Win32.Deploy.0 = Windows 7 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 7 
Debug|x64.ActiveCfg = Windows 7 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 7 
Debug|x64.Build.0 = Windows 7 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 7 
Debug|x64.Deploy.0 = Windows 7 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 7 
Release|Win32.ActiveCfg = Windows 7 Release|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 7 
Release|Win32.Build.0 = Windows 7 Release|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 7 
Release|Win32.Deploy.0 = Windows 7 Release|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 7 
Release|x64.ActiveCfg = Windows 7 Release|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 7 
Release|x64.Build.0 = Windows 7 Release|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 7 
Release|x64.Deploy.0 = Windows 7 Release|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Developer 
Preview Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Developer 
Preview Debug|Win32.Build.0 = Windows 8 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Developer 
Preview Debug|Win32.Deploy.0 = Windows 8 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Developer 
Preview Debug|x64.ActiveCfg = Windows 7 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Developer 
Preview Debug|x64.Build.0 = Windows 7 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Developer 
Preview Debug|x64.Deploy.0 = Windows 7 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Developer 
Preview Release|Win32.ActiveCfg = Windows 8 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Developer 
Preview Release|Win32.Build.0 = Windows 8 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Developer 
Preview Release|Win32.Deploy.0 = Windows 8 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Developer 
Preview Release|x64.ActiveCfg = Windows 7 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Developer 
Preview Release|x64.Build.0 = Windows 7 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Developer 
Preview Release|x64.Deploy.0 = Windows 7 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Vista 
Debug|Win32.ActiveCfg = Windows Vista Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Vista 
Debug|Win32.Build.0 = Windows Vista Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Vista 
Debug|Win32.Deploy.0 = Windows Vista Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Vista 
Debug|x64.ActiveCfg = Windows Vista Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Vista 
Debug|x64.Build.0 = Windows Vista Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Vista 
Debug|x64.Deploy.0 = Windows Vista Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Vista 
Release|Win32.ActiveCfg = Windows Vista Release|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Vista 
Release|Win32.Build.0 = Windows Vista Release|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Vista 
Release|Win32.Deploy.0 = Windows Vista Release|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Vista 
Release|x64.ActiveCfg = Windows Vista Release|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Vista 
Release|x64.Build.0 = Windows Vista Release|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Vista 
Release|x64.Deploy.0 = Windows Vista Release|x64
                {22166290-65D8-49D2-BB88-33201797C7D8}.Debug|Win32.ActiveCfg = 
Windows 8 Debug|Win32
                {22166290-65D8-49D2-BB88-33201797C7D8}.Debug|Win32.Build.0 = 
Windows 8 Debug|Win32
                {22166290-65D8-49D2-BB88-33201797C7D8}.Debug|Win32.Deploy.0 = 
Windows 8 Debug|Win32
-               {22166290-65D8-49D2-BB88-33201797C7D8}.Debug|x64.ActiveCfg = 
Windows 8 Debug|x64
-               {22166290-65D8-49D2-BB88-33201797C7D8}.Debug|x64.Build.0 = 
Windows 8 Debug|x64
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Debug|x64.ActiveCfg = 
Windows8 Debug|x64
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Debug|x64.Build.0 = 
Windows8 Debug|x64
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Debug|x64.Deploy.0 = 
Windows8 Debug|x64
                {22166290-65D8-49D2-BB88-33201797C7D8}.Release|Win32.ActiveCfg 
= Windows 8 Release|Win32
                {22166290-65D8-49D2-BB88-33201797C7D8}.Release|Win32.Build.0 = 
Windows 8 Release|Win32
                {22166290-65D8-49D2-BB88-33201797C7D8}.Release|Win32.Deploy.0 = 
Windows 8 Release|Win32
@@ -52,18 +103,18 @@ Global
                {22166290-65D8-49D2-BB88-33201797C7D8}.Windows 7 
Release|x64.ActiveCfg = Windows 7 Release|x64
                {22166290-65D8-49D2-BB88-33201797C7D8}.Windows 7 
Release|x64.Build.0 = Windows 7 Release|x64
                {22166290-65D8-49D2-BB88-33201797C7D8}.Windows 7 
Release|x64.Deploy.0 = Windows 7 Release|x64
-               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Developer 
Preview Debug|Win32.ActiveCfg = Windows Developer Preview Debug|Win32
-               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Developer 
Preview Debug|Win32.Build.0 = Windows Developer Preview Debug|Win32
-               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Developer 
Preview Debug|Win32.Deploy.0 = Windows Developer Preview Debug|Win32
-               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Developer 
Preview Debug|x64.ActiveCfg = Windows Developer Preview Debug|x64
-               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Developer 
Preview Debug|x64.Build.0 = Windows Developer Preview Debug|x64
-               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Developer 
Preview Debug|x64.Deploy.0 = Windows Developer Preview Debug|x64
-               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Developer 
Preview Release|Win32.ActiveCfg = Windows Developer Preview Release|Win32
-               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Developer 
Preview Release|Win32.Build.0 = Windows Developer Preview Release|Win32
-               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Developer 
Preview Release|Win32.Deploy.0 = Windows Developer Preview Release|Win32
-               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Developer 
Preview Release|x64.ActiveCfg = Windows Developer Preview Release|x64
-               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Developer 
Preview Release|x64.Build.0 = Windows Developer Preview Release|x64
-               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Developer 
Preview Release|x64.Deploy.0 = Windows Developer Preview Release|x64
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Developer 
Preview Debug|Win32.ActiveCfg = Windows Vista Release|Win32
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Developer 
Preview Debug|Win32.Build.0 = Windows Vista Release|Win32
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Developer 
Preview Debug|Win32.Deploy.0 = Windows Vista Release|Win32
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Developer 
Preview Debug|x64.ActiveCfg = Windows Vista Release|x64
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Developer 
Preview Debug|x64.Build.0 = Windows Vista Release|x64
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Developer 
Preview Debug|x64.Deploy.0 = Windows Vista Release|x64
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Developer 
Preview Release|Win32.ActiveCfg = Windows Vista Release|Win32
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Developer 
Preview Release|Win32.Build.0 = Windows Vista Release|Win32
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Developer 
Preview Release|Win32.Deploy.0 = Windows Vista Release|Win32
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Developer 
Preview Release|x64.ActiveCfg = Windows Vista Release|x64
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Developer 
Preview Release|x64.Build.0 = Windows Vista Release|x64
+               {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Developer 
Preview Release|x64.Deploy.0 = Windows Vista Release|x64
                {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Vista 
Debug|Win32.ActiveCfg = Windows Vista Debug|Win32
                {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Vista 
Debug|Win32.Build.0 = Windows Vista Debug|Win32
                {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Vista 
Debug|Win32.Deploy.0 = Windows Vista Debug|Win32
@@ -76,52 +127,6 @@ Global
                {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Vista 
Release|x64.ActiveCfg = Windows Vista Release|x64
                {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Vista 
Release|x64.Build.0 = Windows Vista Release|x64
                {22166290-65D8-49D2-BB88-33201797C7D8}.Windows Vista 
Release|x64.Deploy.0 = Windows Vista Release|x64
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Debug|Win32.ActiveCfg = 
Windows Vista Debug|Win32
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Debug|Win32.Build.0 = 
Windows Vista Debug|Win32
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Debug|Win32.Deploy.0 = 
Windows Vista Debug|Win32
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Debug|x64.ActiveCfg = 
Windows Vista Debug|x64
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Debug|x64.Build.0 = 
Windows Vista Debug|x64
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Release|Win32.ActiveCfg 
= Windows Vista Release|Win32
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Release|Win32.Build.0 = 
Windows Vista Release|Win32
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Release|Win32.Deploy.0 = 
Windows Vista Release|Win32
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Release|x64.ActiveCfg = 
Windows Vista Release|x64
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Release|x64.Build.0 = 
Windows Vista Release|x64
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 7 
Debug|Win32.ActiveCfg = Windows 7 Debug|Win32
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 7 
Debug|Win32.Build.0 = Windows 7 Debug|Win32
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 7 
Debug|Win32.Deploy.0 = Windows 7 Debug|Win32
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 7 
Debug|x64.ActiveCfg = Windows 7 Debug|x64
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 7 
Debug|x64.Build.0 = Windows 7 Debug|x64
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 7 
Debug|x64.Deploy.0 = Windows 7 Debug|x64
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 7 
Release|Win32.ActiveCfg = Windows 7 Release|Win32
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 7 
Release|Win32.Build.0 = Windows 7 Release|Win32
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 7 
Release|Win32.Deploy.0 = Windows 7 Release|Win32
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 7 
Release|x64.ActiveCfg = Windows 7 Release|x64
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 7 
Release|x64.Build.0 = Windows 7 Release|x64
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 7 
Release|x64.Deploy.0 = Windows 7 Release|x64
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Developer 
Preview Debug|Win32.ActiveCfg = Windows Developer Preview Debug|Win32
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Developer 
Preview Debug|Win32.Build.0 = Windows Developer Preview Debug|Win32
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Developer 
Preview Debug|Win32.Deploy.0 = Windows Developer Preview Debug|Win32
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Developer 
Preview Debug|x64.ActiveCfg = Windows Developer Preview Debug|x64
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Developer 
Preview Debug|x64.Build.0 = Windows Developer Preview Debug|x64
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Developer 
Preview Debug|x64.Deploy.0 = Windows Developer Preview Debug|x64
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Developer 
Preview Release|Win32.ActiveCfg = Windows Developer Preview Release|Win32
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Developer 
Preview Release|Win32.Build.0 = Windows Developer Preview Release|Win32
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Developer 
Preview Release|Win32.Deploy.0 = Windows Developer Preview Release|Win32
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Developer 
Preview Release|x64.ActiveCfg = Windows Developer Preview Release|x64
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Developer 
Preview Release|x64.Build.0 = Windows Developer Preview Release|x64
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Developer 
Preview Release|x64.Deploy.0 = Windows Developer Preview Release|x64
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Vista 
Debug|Win32.ActiveCfg = Windows Vista Debug|Win32
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Vista 
Debug|Win32.Build.0 = Windows Vista Debug|Win32
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Vista 
Debug|Win32.Deploy.0 = Windows Vista Debug|Win32
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Vista 
Debug|x64.ActiveCfg = Windows Vista Debug|x64
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Vista 
Debug|x64.Build.0 = Windows Vista Debug|x64
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Vista 
Debug|x64.Deploy.0 = Windows Vista Debug|x64
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Vista 
Release|Win32.ActiveCfg = Windows Vista Release|Win32
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Vista 
Release|Win32.Build.0 = Windows Vista Release|Win32
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Vista 
Release|Win32.Deploy.0 = Windows Vista Release|Win32
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Vista 
Release|x64.ActiveCfg = Windows Vista Release|x64
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Vista 
Release|x64.Build.0 = Windows Vista Release|x64
-               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Vista 
Release|x64.Deploy.0 = Windows Vista Release|x64
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Debug|Win32.ActiveCfg = 
Debug|Win32
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Debug|Win32.Build.0 = 
Debug|Win32
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Debug|Win32.Deploy.0 = 
Debug|Win32
@@ -158,6 +163,52 @@ Global
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows Vista 
Release|x64.ActiveCfg = Release|x64
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows Vista 
Release|x64.Build.0 = Release|x64
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}.Windows Vista 
Release|x64.Deploy.0 = Release|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Debug|Win32.ActiveCfg = 
Windows Vista Debug|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Debug|Win32.Build.0 = 
Windows Vista Debug|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Debug|Win32.Deploy.0 = 
Windows Vista Debug|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Debug|x64.ActiveCfg = 
Windows Vista Debug|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Debug|x64.Build.0 = 
Windows Vista Debug|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Release|Win32.ActiveCfg 
= Windows Vista Release|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Release|Win32.Build.0 = 
Windows Vista Release|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Release|Win32.Deploy.0 = 
Windows Vista Release|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Release|x64.ActiveCfg = 
Windows Vista Release|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Release|x64.Build.0 = 
Windows Vista Release|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 7 
Debug|Win32.ActiveCfg = Windows 7 Debug|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 7 
Debug|Win32.Build.0 = Windows 7 Debug|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 7 
Debug|Win32.Deploy.0 = Windows 7 Debug|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 7 
Debug|x64.ActiveCfg = Windows 7 Debug|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 7 
Debug|x64.Build.0 = Windows 7 Debug|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 7 
Debug|x64.Deploy.0 = Windows 7 Debug|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 7 
Release|Win32.ActiveCfg = Windows 7 Release|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 7 
Release|Win32.Build.0 = Windows 7 Release|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 7 
Release|Win32.Deploy.0 = Windows 7 Release|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 7 
Release|x64.ActiveCfg = Windows 7 Release|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 7 
Release|x64.Build.0 = Windows 7 Release|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows 7 
Release|x64.Deploy.0 = Windows 7 Release|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Developer 
Preview Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Developer 
Preview Debug|Win32.Build.0 = Windows 8 Debug|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Developer 
Preview Debug|Win32.Deploy.0 = Windows 8 Debug|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Developer 
Preview Debug|x64.ActiveCfg = Windows 8 Release|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Developer 
Preview Debug|x64.Build.0 = Windows 8 Release|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Developer 
Preview Debug|x64.Deploy.0 = Windows 8 Release|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Developer 
Preview Release|Win32.ActiveCfg = Windows 8 Debug|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Developer 
Preview Release|Win32.Build.0 = Windows 8 Debug|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Developer 
Preview Release|Win32.Deploy.0 = Windows 8 Debug|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Developer 
Preview Release|x64.ActiveCfg = Windows 8 Release|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Developer 
Preview Release|x64.Build.0 = Windows 8 Release|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Developer 
Preview Release|x64.Deploy.0 = Windows 8 Release|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Vista 
Debug|Win32.ActiveCfg = Windows Vista Debug|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Vista 
Debug|Win32.Build.0 = Windows Vista Debug|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Vista 
Debug|Win32.Deploy.0 = Windows Vista Debug|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Vista 
Debug|x64.ActiveCfg = Windows Vista Debug|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Vista 
Debug|x64.Build.0 = Windows Vista Debug|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Vista 
Debug|x64.Deploy.0 = Windows Vista Debug|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Vista 
Release|Win32.ActiveCfg = Windows Vista Release|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Vista 
Release|Win32.Build.0 = Windows Vista Release|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Vista 
Release|Win32.Deploy.0 = Windows Vista Release|Win32
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Vista 
Release|x64.ActiveCfg = Windows Vista Release|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Vista 
Release|x64.Build.0 = Windows Vista Release|x64
+               {9B071A35-897C-477A-AEB7-95F77618A21D}.Windows Vista 
Release|x64.Deploy.0 = Windows Vista Release|x64
        EndGlobalSection
        GlobalSection(SolutionProperties) = preSolution
                HideSolutionNode = FALSE
diff --git a/vs2012/xeniface/xeniface.vcxproj b/vs2012/xeniface/xeniface.vcxproj
index b0e8ef5..4220f31 100644
--- a/vs2012/xeniface/xeniface.vcxproj
+++ b/vs2012/xeniface/xeniface.vcxproj
@@ -35,13 +35,11 @@
         <CustomBuildStep>
             <Command>echo "Build Inf"
                 powershell -Command "(Get-Content ..\..\src\xeniface.inf) 
-replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', 
'$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace 
'@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' 
-replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' | Set-Content 
..\..\vs2012\xeniface.inf"
-                echo "Build version header"
-                powershell -Command "(Get-Content ..\..\include\version.hx) 
-replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', 
'$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace 
'@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' 
-replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' -replace '@DAY@',%24(Get-Date 
-format %25%25d) -replace '@MONTH@',%24(Get-Date -format %25%25M) -replace 
'@YEAR@',%24(Get-Date -format yyyy) -replace 
'@OBJECT_PREFIX@','$(OBJECT_PREFIX)' | Set-Content ..\..\include\version.h"
                 echo "Modify mof"
                 powershell -Command "(Get-Content ..\..\src\xeniface.mof)  
-replace '@OBJECT_PREFIX@','$(OBJECT_PREFIX)' | Set-Content 
..\..\src\xeniface\wmi.mof"
             </Command>
-            
<Outputs>..\..\vs2012\xeniface.inf;..\..\include\version.h;..\..\src\xeniface\wmi.mof</Outputs>
-            
<Inputs>..\..\src\xeniface.inf;..\..\include\version.hx;..\..\src\xeniface.mof</Inputs>
+            
<Outputs>..\..\vs2012\xeniface.inf;..\..\src\xeniface\wmi.mof</Outputs>
+            <Inputs>..\..\src\xeniface.inf;..\..\src\xeniface.mof</Inputs>
         </CustomBuildStep>
         
                <ClCompile>
diff --git a/vs2012/xeniface_coinst/xeniface_coinst.vcxproj 
b/vs2012/xeniface_coinst/xeniface_coinst.vcxproj
new file mode 100644
index 0000000..7e2f29d
--- /dev/null
+++ b/vs2012/xeniface_coinst/xeniface_coinst.vcxproj
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003";>
+       <Import Project="..\configs.props" />
+
+       <PropertyGroup Label="PropertySheets">
+           <DriverType>WDM</DriverType>
+               
<PlatformToolset>WindowsApplicationForDrivers8.0</PlatformToolset>
+               <ConfigurationType>DynamicLibrary</ConfigurationType>
+               <DriverType>WDM</DriverType>
+       </PropertyGroup>
+       <PropertyGroup Label="Globals">
+               <Configuration>Windows Vista Debug</Configuration>
+               <Platform Condition="'$(Platform)' == ''">Win32</Platform>
+               <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+       </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>
+               <IncludePath>$(IncludePath)</IncludePath>
+               <RunCodeAnalysis>true</RunCodeAnalysis>
+               <EnableInf2cat>false</EnableInf2cat>
+        <CustomBuildBeforeTargets>ClCompile</CustomBuildBeforeTargets>
+               
<IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
+               <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
+       </PropertyGroup>
+
+       <ItemDefinitionGroup>
+         <CustomBuildStep>
+            <Command>echo "Build version header"
+           powershell -Command "(Get-Content ..\..\include\version.hx) 
-replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', 
'$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace 
'@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' 
-replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' -replace '@DAY@',%24(Get-Date 
-format %25%25d) -replace '@MONTH@',%24(Get-Date -format %25%25M) -replace 
'@YEAR@',%24(Get-Date -format yyyy) -replace 
'@OBJECT_PREFIX@','$(OBJECT_PREFIX)' | Set-Content ..\..\include\version.h"
+           </Command>
+            <Outputs>..\..\include\version.h</Outputs>
+            <Inputs>..\..\include\version.hx</Inputs>
+        </CustomBuildStep>
+
+               <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>
+       </ItemDefinitionGroup>
+       <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
+               <ClCompile>
+                       
<PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+               </ClCompile>
+       </ItemDefinitionGroup>
+       <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
+               <ClCompile>
+                       
<PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+               </ClCompile>
+       </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>
\ No newline at end of file
diff --git a/vs2012/xeniface_coinst/xeniface_coinst.vcxproj.user 
b/vs2012/xeniface_coinst/xeniface_coinst.vcxproj.user
new file mode 100644
index 0000000..6a435fd
--- /dev/null
+++ b/vs2012/xeniface_coinst/xeniface_coinst.vcxproj.user
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.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/vs2013/package/package.vcxproj b/vs2013/package/package.vcxproj
index 5b3d5b3..c83e31b 100644
--- a/vs2013/package/package.vcxproj
+++ b/vs2013/package/package.vcxproj
@@ -74,6 +74,9 @@
     <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>
   </ItemGroup>
   <ItemGroup>
     <FilesToPackage Include="$(KIT)\Redist\DIFx\dpinst\EngMui\x86\dpinst.exe" 
Condition="'$(Platform)'=='Win32'" />
diff --git a/vs2013/xeniface.sln b/vs2013/xeniface.sln
index 5d210d6..413b86a 100644
--- a/vs2013/xeniface.sln
+++ b/vs2013/xeniface.sln
@@ -1,13 +1,19 @@
 Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio Express 2013 for Windows Desktop
-VisualStudioVersion = 12.0.21005.1
+VisualStudioVersion = 12.0.30723.0
 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}"
+       ProjectSection(ProjectDependencies) = postProject
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C} = 
{85C731AD-2EA2-4049-A542-D2D38EDE938C}
+       EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LiteAgent", 
"liteagent\LiteAgent.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
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C} = 
{85C731AD-2EA2-4049-A542-D2D38EDE938C}
                {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B} = 
{2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}
        EndProjectSection
 EndProject
@@ -31,6 +37,54 @@ Global
                Windows Vista Release|x64 = Windows Vista Release|x64
        EndGlobalSection
        GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Debug|Win32.ActiveCfg = 
Windows 8 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Debug|Win32.Build.0 = 
Windows 8 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Debug|Win32.Deploy.0 = 
Windows 8 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Debug|x64.ActiveCfg = 
Windows 8 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Debug|x64.Build.0 = 
Windows 8 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Debug|x64.Deploy.0 = 
Windows 8 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Release|Win32.ActiveCfg 
= Windows 7 Release|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Release|Win32.Build.0 = 
Windows 7 Release|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Release|Win32.Deploy.0 = 
Windows 7 Release|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Release|x64.ActiveCfg = 
Windows 7 Release|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Release|x64.Build.0 = 
Windows 7 Release|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Release|x64.Deploy.0 = 
Windows 7 Release|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 7 
Debug|Win32.ActiveCfg = Windows 7 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 7 
Debug|Win32.Build.0 = Windows 7 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 7 
Debug|Win32.Deploy.0 = Windows 7 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 7 
Debug|x64.ActiveCfg = Windows 7 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 7 
Debug|x64.Build.0 = Windows 7 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 7 
Debug|x64.Deploy.0 = Windows 7 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 7 
Release|Win32.ActiveCfg = Windows 7 Release|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 7 
Release|Win32.Build.0 = Windows 7 Release|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 7 
Release|Win32.Deploy.0 = Windows 7 Release|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 7 
Release|x64.ActiveCfg = Windows 7 Release|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 7 
Release|x64.Build.0 = Windows 7 Release|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows 7 
Release|x64.Deploy.0 = Windows 7 Release|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Developer 
Preview Debug|Win32.ActiveCfg = Windows 8 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Developer 
Preview Debug|Win32.Build.0 = Windows 8 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Developer 
Preview Debug|Win32.Deploy.0 = Windows 8 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Developer 
Preview Debug|x64.ActiveCfg = Windows 8 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Developer 
Preview Debug|x64.Build.0 = Windows 8 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Developer 
Preview Debug|x64.Deploy.0 = Windows 8 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Developer 
Preview Release|Win32.ActiveCfg = Windows 8 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Developer 
Preview Release|Win32.Build.0 = Windows 8 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Developer 
Preview Release|Win32.Deploy.0 = Windows 8 Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Developer 
Preview Release|x64.ActiveCfg = Windows 8 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Developer 
Preview Release|x64.Build.0 = Windows 8 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Developer 
Preview Release|x64.Deploy.0 = Windows 8 Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Vista 
Debug|Win32.ActiveCfg = Windows Vista Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Vista 
Debug|Win32.Build.0 = Windows Vista Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Vista 
Debug|Win32.Deploy.0 = Windows Vista Debug|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Vista 
Debug|x64.ActiveCfg = Windows Vista Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Vista 
Debug|x64.Build.0 = Windows Vista Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Vista 
Debug|x64.Deploy.0 = Windows Vista Debug|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Vista 
Release|Win32.ActiveCfg = Windows Vista Release|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Vista 
Release|Win32.Build.0 = Windows Vista Release|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Vista 
Release|Win32.Deploy.0 = Windows Vista Release|Win32
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Vista 
Release|x64.ActiveCfg = Windows Vista Release|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Vista 
Release|x64.Build.0 = Windows Vista Release|x64
+               {85C731AD-2EA2-4049-A542-D2D38EDE938C}.Windows Vista 
Release|x64.Deploy.0 = Windows Vista Release|x64
                {22166290-65D8-49D2-BB88-33201797C7D8}.Debug|Win32.ActiveCfg = 
Windows 8 Debug|Win32
                {22166290-65D8-49D2-BB88-33201797C7D8}.Debug|Win32.Build.0 = 
Windows 8 Debug|Win32
                {22166290-65D8-49D2-BB88-33201797C7D8}.Debug|Win32.Deploy.0 = 
Windows 8 Debug|Win32
diff --git a/vs2013/xeniface/xeniface.vcxproj b/vs2013/xeniface/xeniface.vcxproj
index 843e85e..65743d4 100644
--- a/vs2013/xeniface/xeniface.vcxproj
+++ b/vs2013/xeniface/xeniface.vcxproj
@@ -64,13 +64,11 @@
       <CustomBuildStep>
             <Command>echo "Build Inf"
                  powershell -Command "(Get-Content ..\..\src\xeniface.inf) 
-replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', 
'$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace 
'@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' 
-replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' | Set-Content 
..\..\vs2013\xeniface.inf"
-                echo "Build version header"
-                powershell -Command "(Get-Content ..\..\include\version.hx) 
-replace '@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', 
'$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace 
'@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' 
-replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' -replace '@DAY@',%24(Get-Date 
-format %25%25d) -replace '@MONTH@',%24(Get-Date -format %25%25M) -replace 
'@YEAR@',%24(Get-Date -format yyyy) -replace 
'@OBJECT_PREFIX@','$(OBJECT_PREFIX)' | Set-Content ..\..\include\version.h"
                 echo "Modify mof"
                 powershell -Command "(Get-Content ..\..\src\xeniface.mof)  
-replace '@OBJECT_PREFIX@','$(OBJECT_PREFIX)' | Set-Content 
..\..\src\xeniface\wmi.mof"
             </Command>
-            
<Outputs>..\..\vs2013\xeniface.inf;..\..\include\version.h;..\..\src\xeniface\wmi.mof</Outputs>
-            
<Inputs>..\..\src\xeniface.inf;..\..\include\version.hx;..\..\src\xeniface.mof</Inputs>
+            
<Outputs>..\..\vs2013\xeniface.inf;..\..\src\xeniface\wmi.mof</Outputs>
+            <Inputs>..\..\src\xeniface.inf;..\..\src\xeniface.mof</Inputs>
         </CustomBuildStep>
     <ClCompile>
       
<PreprocessorDefinitions>__MODULE__="XENIFACE";POOL_NX_OPTIN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
diff --git a/vs2013/xeniface_coinst/xeniface_coinst.vcxproj 
b/vs2013/xeniface_coinst/xeniface_coinst.vcxproj
new file mode 100644
index 0000000..b577dc8
--- /dev/null
+++ b/vs2013/xeniface_coinst/xeniface_coinst.vcxproj
@@ -0,0 +1,113 @@
+<?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>
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <DriverType>WDM</DriverType>
+  </PropertyGroup>
+  <PropertyGroup Label="Globals">
+    <Configuration>Windows Vista Debug</Configuration>
+    <Platform Condition="'$(Platform)' == ''">Win32</Platform>
+    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Label="Configuration" 
Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|x64'">
+    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" 
Condition="'$(Configuration)|$(Platform)'=='Windows 8 Release|Win32'">
+    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" 
Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|x64'">
+    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" 
Condition="'$(Configuration)|$(Platform)'=='Windows Vista Debug|Win32'">
+    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" 
Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|x64'">
+    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" 
Condition="'$(Configuration)|$(Platform)'=='Windows Vista Release|Win32'">
+    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" 
Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|x64'">
+    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" 
Condition="'$(Configuration)|$(Platform)'=='Windows 7 Release|Win32'">
+    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" 
Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|Win32'">
+    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" 
Condition="'$(Configuration)|$(Platform)'=='Windows 7 Debug|x64'">
+    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" 
Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|x64'">
+    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration" 
Condition="'$(Configuration)|$(Platform)'=='Windows 8 Debug|Win32'">
+    <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{85c731ad-2ea2-4049-a542-d2d38ede938c}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="..\targets.props" />
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <PropertyGroup>
+    <IncludePath>$(IncludePath)</IncludePath>
+    <RunCodeAnalysis>true</RunCodeAnalysis>
+    <EnableInf2cat>false</EnableInf2cat>
+    <CustomBuildBeforeTargets>ClCompile</CustomBuildBeforeTargets>
+    <IntDir>..\$(ProjectName)\$(ConfigurationName)\$(Platform)\</IntDir>
+    <OutDir>..\$(ConfigurationName)\$(Platform)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup>
+    <CustomBuildStep>
+      <Command>echo "Build version header"
+      powershell -Command "(Get-Content ..\..\include\version.hx) -replace 
'@MAJOR_VERSION@', '$(MAJOR_VERSION)' -replace '@MINOR_VERSION@', 
'$(MINOR_VERSION)' -replace '@MICRO_VERSION@','$(MICRO_VERSION)' -replace 
'@BUILD_NUMBER@','$(BUILD_NUMBER)' -replace '@COMPANY_NAME@','$(COMPANY_NAME)' 
-replace '@PRODUCT_NAME@','$(PRODUCT_NAME)' -replace '@DAY@',%24(Get-Date 
-format %25%25d) -replace '@MONTH@',%24(Get-Date -format %25%25M) -replace 
'@YEAR@',%24(Get-Date -format yyyy) -replace 
'@OBJECT_PREFIX@','$(OBJECT_PREFIX)' | Set-Content ..\..\include\version.h"
+      </Command>
+      <Outputs>..\..\include\version.h</Outputs>
+      <Inputs>..\..\include\version.hx</Inputs>
+    </CustomBuildStep>
+
+    <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>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
+    <ClCompile>
+      
<PreprocessorDefinitions>__i386__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
+    <ClCompile>
+      
<PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+  </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>
\ No newline at end of file
diff --git a/vs2013/xeniface_coinst/xeniface_coinst.vcxproj.user 
b/vs2013/xeniface_coinst/xeniface_coinst.vcxproj.user
new file mode 100644
index 0000000..6a435fd
--- /dev/null
+++ b/vs2013/xeniface_coinst/xeniface_coinst.vcxproj.user
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.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.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
http://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®.