[prev in list] [next in list] [prev in thread] [next in thread] 

List:       win-pv-devel
Subject:    [PATCH 3/6] Delete CoInstaller code
From:       Owen Smith <owen.smith () cloud ! com>
Date:       2023-08-31 7:29:18
Message-ID: 20230831072921.1258-4-owen.smith () cloud ! com
[Download RAW message or body]

With the CoInstaller removed from the INF file, delete the CoInstaller
source code and projects.

Signed-off-by: Owen Smith <owen.smith@cloud.com>
---
 src/coinst/coinst.c                           | 2136 -----------------
 src/coinst/xenbus_coinst.def                  |   38 -
 src/coinst/xenbus_coinst.rc                   |   57 -
 vs2015/package/package.vcxproj                |    3 -
 vs2015/xenbus.sln                             |   22 -
 vs2015/xenbus_coinst/xenbus_coinst.vcxproj    |   64 -
 .../xenbus_coinst/xenbus_coinst.vcxproj.user  |    8 -
 vs2017/package/package.vcxproj                |    3 -
 vs2017/xenbus.sln                             |   22 -
 vs2017/xenbus_coinst/xenbus_coinst.vcxproj    |   64 -
 .../xenbus_coinst/xenbus_coinst.vcxproj.user  |    8 -
 vs2019/package/package.vcxproj                |    3 -
 vs2019/xenbus.sln                             |   22 -
 vs2019/xenbus_coinst/xenbus_coinst.vcxproj    |   70 -
 .../xenbus_coinst/xenbus_coinst.vcxproj.user  |    8 -
 vs2022/package/package.vcxproj                |    3 -
 vs2022/xenbus.sln                             |   22 -
 vs2022/xenbus_coinst/xenbus_coinst.vcxproj    |   70 -
 .../xenbus_coinst/xenbus_coinst.vcxproj.user  |    8 -
 19 files changed, 2631 deletions(-)
 delete mode 100644 src/coinst/coinst.c
 delete mode 100644 src/coinst/xenbus_coinst.def
 delete mode 100644 src/coinst/xenbus_coinst.rc
 delete mode 100644 vs2015/xenbus_coinst/xenbus_coinst.vcxproj
 delete mode 100644 vs2015/xenbus_coinst/xenbus_coinst.vcxproj.user
 delete mode 100644 vs2017/xenbus_coinst/xenbus_coinst.vcxproj
 delete mode 100644 vs2017/xenbus_coinst/xenbus_coinst.vcxproj.user
 delete mode 100644 vs2019/xenbus_coinst/xenbus_coinst.vcxproj
 delete mode 100644 vs2019/xenbus_coinst/xenbus_coinst.vcxproj.user
 delete mode 100644 vs2022/xenbus_coinst/xenbus_coinst.vcxproj
 delete mode 100644 vs2022/xenbus_coinst/xenbus_coinst.vcxproj.user

diff --git a/src/coinst/coinst.c b/src/coinst/coinst.c
deleted file mode 100644
index caa1102..0000000
--- a/src/coinst/coinst.c
+++ /dev/null
@@ -1,2136 +0,0 @@
-/* Copyright (c) Xen Project.
- * Copyright (c) Cloud Software Group, 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 <version.h>
-#include <revision.h>
-
-#define stringify_literal(_text) #_text
-#define stringify(_text) stringify_literal(_text)
-#define __MODULE__ stringify(PROJECT)
-
-__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 UNPLUG_KEY \
-        SERVICE_KEY(XEN) ## "\\Unplug"
-
-#define CONTROL_KEY "SYSTEM\\CurrentControlSet\\Control"
-
-#define CLASS_KEY   \
-        CONTROL_KEY ## "\\Class"
-
-#define ENUM_KEY    "SYSTEM\\CurrentControlSet\\Enum"
-
-#define MONITOR_NAME    "XENBUS_MONITOR"
-
-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_WARNING;
-
-    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;
-
-    if (!FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
-                       FORMAT_MESSAGE_FROM_SYSTEM |
-                       FORMAT_MESSAGE_IGNORE_INSERTS,
-                       NULL,
-                       Error,
-                       MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
-                       (LPTSTR)&Message,
-                       0,
-                       NULL))
-        return NULL;
-
-    for (Index = 0; Message[Index] != '\0'; Index++) {
-        if (Message[Index] == '\r' || Message[Index] == '\n') {
-            Message[Index] = '\0';
-            break;
-        }
-    }
-
-    return Message;
-}
-
-static FORCEINLINE 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 BOOLEAN
-AllowUpdate(
-    IN  PTCHAR      DriverName,
-    OUT PBOOLEAN    Allow
-    )
-{
-    TCHAR           ServiceKeyName[MAX_PATH];
-    HKEY            ServiceKey;
-    HRESULT         Result;
-    HRESULT         Error;
-    DWORD           ValueLength;
-    DWORD           Value;
-    DWORD           Type;
-
-    Log("====> (%s)", DriverName);
-
-    Result = StringCbPrintf(ServiceKeyName,
-                            MAX_PATH,
-                            SERVICES_KEY "\\%s",
-                            DriverName);
-    assert(SUCCEEDED(Result));
-
-    Error = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
-                         ServiceKeyName,
-                         0,
-                         KEY_READ,
-                         &ServiceKey);
-    if (Error != ERROR_SUCCESS) {
-        if (Error == ERROR_FILE_NOT_FOUND) {
-            Value = 1;
-            goto done;
-        }
-
-        SetLastError(Error);
-        goto fail1;
-    }
-
-    ValueLength = sizeof (Value);
-
-    Error = RegQueryValueEx(ServiceKey,
-                            "AllowUpdate",
-                            NULL,
-                            &Type,
-                            (LPBYTE)&Value,
-                            &ValueLength);
-    if (Error != ERROR_SUCCESS) {
-        if (Error == ERROR_FILE_NOT_FOUND) {
-            Type = REG_DWORD;
-            Value = 1;
-        } else {
-            SetLastError(Error);
-            goto fail2;
-        }
-    }
-
-    if (Type != REG_DWORD) {
-        SetLastError(ERROR_BAD_FORMAT);
-        goto fail3;
-    }
-
-    RegCloseKey(ServiceKey);
-
-done:
-    if (Value == 0) {
-        Log("DISALLOWED");
-        *Allow = FALSE;
-    }
-
-    Log("<====");
-
-    return TRUE;
-
-fail3:
-    Log("fail3");
-
-fail2:
-    Log("fail2");
-
-    RegCloseKey(ServiceKey);
-
-fail1:
-    Error = GetLastError();
-
-    {
-        PTCHAR  Message;
-        Message = GetErrorMessage(Error);
-        Log("fail1 (%s)", Message);
-        LocalFree(Message);
-    }
-
-    return FALSE;
-}
-
-static BOOLEAN
-AllowInstall(
-    OUT PBOOLEAN    Allow
-    )
-{
-    BOOLEAN         Success;
-    HRESULT         Error;
-
-    Log("====>");
-
-    *Allow = TRUE;
-
-    Success = AllowUpdate("XEN", Allow);
-    if (!Success)
-        goto fail1;
-
-    Success = AllowUpdate("XENBUS", Allow);
-    if (!Success)
-        goto fail2;
-
-    Success = AllowUpdate("XENFILT", Allow);
-    if (!Success)
-        goto fail3;
-
-    Log("<====");
-
-    return TRUE;
-
-fail3:
-    Log("fail3");
-
-fail2:
-    Log("fail2");
-
-fail1:
-    Error = GetLastError();
-
-    {
-        PTCHAR  Message;
-        Message = GetErrorMessage(Error);
-        Log("fail1 (%s)", Message);
-        LocalFree(Message);
-    }
-
-    return FALSE;
-}
-
-static BOOLEAN
-OpenEnumKey(
-    OUT PHKEY   EnumKey
-    )
-{
-    HRESULT     Error;
-
-    Error = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
-                         ENUM_KEY,
-                         0,
-                         KEY_READ,
-                         EnumKey);
-    if (Error != ERROR_SUCCESS) {
-        SetLastError(Error);
-        goto fail1;
-    }
-
-    return TRUE;
-
-fail1:
-    Error = GetLastError();
-
-    {
-        PTCHAR  Message;
-        Message = GetErrorMessage(Error);
-        Log("fail1 (%s)", Message);
-        LocalFree(Message);
-    }
-
-    return FALSE;
-}
-
-static BOOLEAN
-OpenBusKey(
-    IN  PTCHAR  BusKeyName,
-    OUT PHKEY   BusKey
-    )
-{
-    BOOLEAN     Success;
-    HKEY        EnumKey;
-    HRESULT     Error;
-
-    Success = OpenEnumKey(&EnumKey);
-    if (!Success)
-        goto fail1;
-
-    Error = RegOpenKeyEx(EnumKey,
-                         BusKeyName,
-                         0,
-                         KEY_READ,
-                         BusKey);
-    if (Error != ERROR_SUCCESS) {
-        SetLastError(Error);
-        goto fail2;
-    }
-
-    RegCloseKey(EnumKey);
-
-    return TRUE;
-
-fail2:
-    Log("fail2");
-
-    RegCloseKey(EnumKey);
-
-fail1:
-    Error = GetLastError();
-
-    {
-        PTCHAR  Message;
-
-        Message = GetErrorMessage(Error);
-        Log("fail1 (%s)", Message);
-        LocalFree(Message);
-    }
-
-    return FALSE;
-}
-
-static BOOLEAN
-GetDeviceKeyName(
-    IN  PTCHAR  BusKeyName,
-    IN  PTCHAR  DeviceKeyPrefix,
-    OUT PTCHAR  *DeviceKeyName
-    )
-{
-    BOOLEAN     Success;
-    HKEY        BusKey;
-    HRESULT     Error;
-    DWORD       SubKeys;
-    DWORD       MaxSubKeyLength;
-    DWORD       SubKeyLength;
-    PTCHAR      SubKeyName;
-    DWORD       Index;
-
-    Success = OpenBusKey(BusKeyName, &BusKey);
-    if (!Success)
-        goto fail1;
-
-    Error = RegQueryInfoKey(BusKey,
-                            NULL,
-                            NULL,
-                            NULL,
-                            &SubKeys,
-                            &MaxSubKeyLength,
-                            NULL,
-                            NULL,
-                            NULL,
-                            NULL,
-                            NULL,
-                            NULL);
-    if (Error != ERROR_SUCCESS) {
-        SetLastError(Error);
-        goto fail2;
-    }
-
-    SubKeyLength = MaxSubKeyLength + sizeof (TCHAR);
-
-    SubKeyName = malloc(SubKeyLength);
-    if (SubKeyName == NULL)
-        goto fail3;
-
-    for (Index = 0; Index < SubKeys; Index++) {
-        SubKeyLength = MaxSubKeyLength + sizeof (TCHAR);
-        memset(SubKeyName, 0, SubKeyLength);
-
-        Error = RegEnumKeyEx(BusKey,
-                             Index,
-                             (LPTSTR)SubKeyName,
-                             &SubKeyLength,
-                             NULL,
-                             NULL,
-                             NULL,
-                             NULL);
-        if (Error != ERROR_SUCCESS) {
-            SetLastError(Error);
-            goto fail4;
-        }
-
-        if (strncmp(SubKeyName, DeviceKeyPrefix, strlen(DeviceKeyPrefix)) == 0)
-            goto found;
-    }
-
-    free(SubKeyName);
-    SubKeyName = NULL;
-
-found:
-    RegCloseKey(BusKey);
-
-    Log("%s", (SubKeyName != NULL) ? SubKeyName : "none found");
-
-    *DeviceKeyName = SubKeyName;
-    return TRUE;
-
-fail4:
-    Log("fail4");
-
-    free(SubKeyName);
-
-fail3:
-    Log("fail3");
-
-fail2:
-    Log("fail2");
-
-    RegCloseKey(BusKey);
-
-fail1:
-    Error = GetLastError();
-
-    {
-        PTCHAR  Message;
-
-        Message = GetErrorMessage(Error);
-        Log("fail1 (%s)", Message);
-        LocalFree(Message);
-    }
-
-    return FALSE;
-}
-
-#define XEN_PLATFORM_PCI_DEVICE_STR         "VEN_5853&DEV_0001"
-#define XENSERVER_PLATFORM_PCI_DEVICE_STR   "VEN_5853&DEV_0002"
-
-static BOOLEAN
-OpenDeviceKey(
-    IN  PTCHAR  BusKeyName,
-    IN  PTCHAR  DeviceKeyName,
-    OUT PHKEY   DeviceKey
-    )
-{
-    BOOLEAN     Success;
-    HKEY        BusKey;
-    HRESULT     Error;
-
-    Success = OpenBusKey(BusKeyName, &BusKey);
-    if (!Success)
-        goto fail1;
-
-    Error = RegOpenKeyEx(BusKey,
-                         DeviceKeyName,
-                         0,
-                         KEY_READ,
-                         DeviceKey);
-    if (Error != ERROR_SUCCESS) {
-        SetLastError(Error);
-        goto fail2;
-    }
-
-    RegCloseKey(BusKey);
-
-    return TRUE;
-
-fail2:
-    Log("fail2");
-
-    RegCloseKey(BusKey);
-
-fail1:
-    Error = GetLastError();
-
-    {
-        PTCHAR  Message;
-
-        Message = GetErrorMessage(Error);
-        Log("fail1 (%s)", Message);
-        LocalFree(Message);
-    }
-
-    return FALSE;
-}
-
-static BOOLEAN
-GetDriverKeyName(
-    IN  HKEY    DeviceKey,
-    OUT PTCHAR  *Name,
-    OUT DWORD   *ConfigFlags
-    )
-{
-    HRESULT     Error;
-    DWORD       SubKeys;
-    DWORD       MaxSubKeyLength;
-    DWORD       SubKeyLength;
-    PTCHAR      SubKeyName;
-    DWORD       Index;
-    HKEY        SubKey;
-    PTCHAR      DriverKeyName;
-    DWORD       Flags;
-
-    Error = RegQueryInfoKey(DeviceKey,
-                            NULL,
-                            NULL,
-                            NULL,
-                            &SubKeys,
-                            &MaxSubKeyLength,
-                            NULL,
-                            NULL,
-                            NULL,
-                            NULL,
-                            NULL,
-                            NULL);
-    if (Error != ERROR_SUCCESS) {
-        SetLastError(Error);
-        goto fail1;
-    }
-
-    SubKeyLength = MaxSubKeyLength + sizeof (TCHAR);
-
-    SubKeyName = malloc(SubKeyLength);
-    if (SubKeyName == NULL)
-        goto fail2;
-
-    SubKey = NULL;
-    DriverKeyName = NULL;
-    Flags = 0;
-
-    for (Index = 0; Index < SubKeys; Index++) {
-        DWORD       MaxValueLength;
-        DWORD       ConfigFlagsLength;
-        DWORD       DriverKeyNameLength;
-        DWORD       Type;
-
-        SubKeyLength = MaxSubKeyLength + sizeof (TCHAR);
-        memset(SubKeyName, 0, SubKeyLength);
-
-        Error = RegEnumKeyEx(DeviceKey,
-                             Index,
-                             (LPTSTR)SubKeyName,
-                             &SubKeyLength,
-                             NULL,
-                             NULL,
-                             NULL,
-                             NULL);
-        if (Error != ERROR_SUCCESS) {
-            SetLastError(Error);
-            goto fail3;
-        }
-
-        Error = RegOpenKeyEx(DeviceKey,
-                             SubKeyName,
-                             0,
-                             KEY_READ,
-                             &SubKey);
-        if (Error != ERROR_SUCCESS) {
-            SubKey = NULL;
-            continue;
-        }
-
-        Error = RegQueryInfoKey(SubKey,
-                                NULL,
-                                NULL,
-                                NULL,    
-                                NULL,
-                                NULL,
-                                NULL,
-                                NULL,
-                                NULL,
-                                &MaxValueLength,
-                                NULL,
-                                NULL);
-        if (Error != ERROR_SUCCESS) {
-            SetLastError(Error);
-            goto fail4;
-        }
-
-        ConfigFlagsLength = (DWORD)sizeof(DWORD);
-
-        Error = RegQueryValueEx(SubKey,
-                                "ConfigFlags",
-                                NULL,
-                                &Type,
-                                (LPBYTE)&Flags,
-                                &ConfigFlagsLength);
-        if (Error != ERROR_SUCCESS ||
-            Type != REG_DWORD)
-            Flags = 0;
-
-        DriverKeyNameLength = MaxValueLength + sizeof (TCHAR);
-
-        DriverKeyName = calloc(1, DriverKeyNameLength);
-        if (DriverKeyName == NULL)
-            goto fail5;
-
-        Error = RegQueryValueEx(SubKey,
-                                "Driver",
-                                NULL,
-                                &Type,
-                                (LPBYTE)DriverKeyName,
-                                &DriverKeyNameLength);
-        if (Error == ERROR_SUCCESS &&
-            Type == REG_SZ)
-            break;
-
-        free(DriverKeyName);
-        DriverKeyName = NULL;
-        Flags = 0;
-
-        RegCloseKey(SubKey);
-        SubKey = NULL;
-    }
-
-    Log("%s", (DriverKeyName != NULL) ? DriverKeyName : "none found");
-
-    if (SubKey != NULL)
-        RegCloseKey(SubKey);
-
-    free(SubKeyName);
-
-    *Name = DriverKeyName;
-    if (ConfigFlags)
-        *ConfigFlags = Flags;
-    return TRUE;
-
-fail5:
-    Log("fail5");
-
-fail4:
-    Log("fail4");
-
-    if (SubKey != NULL)
-        RegCloseKey(SubKey);
-
-fail3:
-    Log("fail3");
-
-    free(SubKeyName);
-
-fail2:
-    Log("fail2");
-
-fail1:
-    Error = GetLastError();
-
-    {
-        PTCHAR  Message;
-
-        Message = GetErrorMessage(Error);
-        Log("fail1 (%s)", Message);
-        LocalFree(Message);
-    }
-
-    return FALSE;
-}
-
-static BOOLEAN
-OpenClassKey(
-    OUT PHKEY   ClassKey
-    )
-{
-    HRESULT     Error;
-
-    Error = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
-                         CLASS_KEY,
-                         0,
-                         KEY_READ,
-                         ClassKey);
-    if (Error != ERROR_SUCCESS) {
-        SetLastError(Error);
-        goto fail1;
-    }
-
-    return TRUE;
-
-fail1:
-    Error = GetLastError();
-
-    {
-        PTCHAR  Message;
-        Message = GetErrorMessage(Error);
-        Log("fail1 (%s)", Message);
-        LocalFree(Message);
-    }
-
-    return FALSE;
-}
-
-static BOOLEAN
-OpenDriverKey(
-    IN  PTCHAR  DriverKeyName,
-    OUT PHKEY   DriverKey
-    )
-{
-    BOOLEAN     Success;
-    HKEY        ClassKey;
-    HRESULT     Error;
-
-    Success = OpenClassKey(&ClassKey);
-    if (!Success)
-        goto fail1;
-
-    Error = RegOpenKeyEx(ClassKey,
-                         DriverKeyName,
-                         0,
-                         KEY_READ,
-                         DriverKey);
-    if (Error != ERROR_SUCCESS) {
-        SetLastError(Error);
-        goto fail2;
-    }
-
-    RegCloseKey(ClassKey);
-
-    return TRUE;
-
-fail2:
-    Log("fail2");
-
-    RegCloseKey(ClassKey);
-
-fail1:
-    Error = GetLastError();
-
-    {
-        PTCHAR  Message;
-
-        Message = GetErrorMessage(Error);
-        Log("fail1 (%s)", Message);
-        LocalFree(Message);
-    }
-
-    return FALSE;
-}
-
-static BOOLEAN
-MatchExistingDriver(
-    VOID
-    )
-{
-    BOOLEAN Success;
-    PTCHAR  DeviceKeyName = NULL;
-    HKEY    DeviceKey = NULL;
-    PTCHAR  DriverKeyName = NULL;
-    HKEY    DriverKey = NULL;
-    HRESULT Error;
-    DWORD   MaxValueLength;
-    DWORD   DriverDescLength;
-    PTCHAR  DriverDesc = NULL;
-    DWORD   ProductNameLength;
-    DWORD   Type;
-
-    Log("====>");
-
-    // Look for a legacy platform device
-    Success = GetDeviceKeyName("PCI",
-                               XEN_PLATFORM_PCI_DEVICE_STR,
-                               &DeviceKeyName);
-    if (!Success)
-        goto fail1;
-
-    if (DeviceKeyName != NULL)
-        goto found;
-
-    Success = GetDeviceKeyName("PCI",
-                               XENSERVER_PLATFORM_PCI_DEVICE_STR,
-                               &DeviceKeyName);
-    if (!Success)
-        goto fail2;
-
-    if (DeviceKeyName != NULL)
-        goto found;
-
-    // No legacy platform device
-    goto done;
-
-found:
-    Success = OpenDeviceKey("PCI", DeviceKeyName, &DeviceKey);
-    if (!Success)
-        goto fail3;
-
-    // Check for a bound driver
-    Success = GetDriverKeyName(DeviceKey, &DriverKeyName, NULL);
-    if (!Success)
-        goto fail4;
-
-    if (DriverKeyName == NULL)
-        goto done;
-
-    Success = OpenDriverKey(DriverKeyName, &DriverKey);
-    if (!Success)
-        goto done;
-
-    Error = RegQueryInfoKey(DriverKey,
-                            NULL,
-                            NULL,
-                            NULL,    
-                            NULL,
-                            NULL,
-                            NULL,
-                            NULL,
-                            NULL,
-                            &MaxValueLength,
-                            NULL,
-                            NULL);
-    if (Error != ERROR_SUCCESS) {
-        SetLastError(Error);
-        goto fail5;
-    }
-
-    DriverDescLength = MaxValueLength + sizeof (TCHAR);
-
-    DriverDesc = calloc(1, DriverDescLength);
-    if (DriverDesc == NULL)
-        goto fail6;
-
-    Error = RegQueryValueEx(DriverKey,
-                            "DriverDesc",
-                            NULL,
-                            &Type,
-                            (LPBYTE)DriverDesc,
-                            &DriverDescLength);
-    if (Error != ERROR_SUCCESS) {
-        if (Error == ERROR_FILE_NOT_FOUND)
-            goto done;
-
-        SetLastError(Error);
-        goto fail7;
-    }
-
-    if (Type != REG_SZ) {
-        SetLastError(ERROR_BAD_FORMAT);
-        goto fail8;
-    }
-
-    ProductNameLength = (DWORD)strlen(PRODUCT_NAME_STR);
-
-    if (strncmp(DriverDesc,
-                PRODUCT_NAME_STR,
-                ProductNameLength) != 0) {
-        SetLastError(ERROR_INSTALL_FAILURE);
-        goto fail9;
-    }
-
-    if (strcmp(DriverDesc + ProductNameLength,
-               " PV Bus") != 0) {
-        SetLastError(ERROR_INSTALL_FAILURE);
-        goto fail10;
-    }
-
-done:
-    if (DriverDesc != NULL) {
-        free(DriverDesc);
-        RegCloseKey(DriverKey);
-    }
-
-    if (DriverKeyName != NULL) {
-        free(DriverKeyName);
-        RegCloseKey(DeviceKey);
-    }
-
-    if (DeviceKeyName != NULL)
-        free(DeviceKeyName);
-
-    Log("<====");
-
-    return TRUE;
-
-fail10:
-    Log("fail10");
-
-fail9:
-    Log("fail9");
-
-fail8:
-    Log("fail8");
-
-fail7:
-    Log("fail7");
-
-    free(DriverDesc);
-
-fail6:
-    Log("fail6");
-
-fail5:
-    Log("fail5");
-
-    RegCloseKey(DriverKey);
-
-    free(DriverKeyName);
-
-fail4:
-    Log("fail4");
-
-    RegCloseKey(DeviceKey);
-
-fail3:
-    Log("fail3");
-
-    free(DeviceKeyName);
-
-fail2:
-    Log("fail2");
-
-fail1:
-    Error = GetLastError();
-
-    {
-        PTCHAR  Message;
-
-        Message = GetErrorMessage(Error);
-        Log("fail1 (%s)", Message);
-        LocalFree(Message);
-    }
-
-    return FALSE;
-}
-
-#define DEFINE_REVISION(_N, _S, _SI, _E, _D, _ST, _R, _C, _G, _U, _CO, _EM) \
-    (_N)
-
-static DWORD    DeviceRevision[] = {
-    DEFINE_REVISION_TABLE
-};
-
-#undef DEFINE_REVISION
-
-static BOOLEAN
-SupportDeviceID(
-    IN  PTCHAR      DeviceID,
-    OUT PBOOLEAN    NewBinding
-    )
-{
-    unsigned int    Revision;
-    int             Count;
-    DWORD           Index;
-    HRESULT         Error;
-
-    DeviceID = strrchr(DeviceID, '&');
-    assert(DeviceID != NULL);
-    DeviceID++;
-
-    Count = sscanf_s(DeviceID,
-                     "REV_%8x",
-                     &Revision);
-    if (Count != 1) {
-        SetLastError(ERROR_BAD_FORMAT);
-        goto fail1;
-    }
-
-    for (Index = 0; Index < ARRAYSIZE(DeviceRevision); Index++) {
-        if (Revision == DeviceRevision[Index])
-            goto found;
-    }
-
-    SetLastError(ERROR_FILE_NOT_FOUND);
-    goto fail2;
-
-found:
-    // If we don't match the latest revision then it means the driver
-    // binding will change.
-    if (Index < ARRAYSIZE(DeviceRevision) - 1)
-        *NewBinding = TRUE;
-
-    Log("%x", Revision);
-
-    return TRUE;
-
-fail2:
-    Log("fail2");
-
-fail1:
-    Error = GetLastError();
-
-    {
-        PTCHAR  Message;
-
-        Message = GetErrorMessage(Error);
-        Log("fail1 (%s)", Message);
-        LocalFree(Message);
-    }
-
-    return FALSE;
-}
-
-static BOOLEAN
-GetMatchingDeviceID(
-    IN  HKEY    DriverKey,
-    OUT PTCHAR  *MatchingDeviceID
-    )
-{
-    HRESULT     Error;
-    DWORD       MaxValueLength;
-    DWORD       MatchingDeviceIDLength;
-    DWORD       Type;
-    DWORD       Index;
-
-    Error = RegQueryInfoKey(DriverKey,
-                            NULL,
-                            NULL,
-                            NULL,
-                            NULL,
-                            NULL,
-                            NULL,
-                            NULL,
-                            NULL,
-                            &MaxValueLength,
-                            NULL,
-                            NULL);
-    if (Error != ERROR_SUCCESS) {
-        SetLastError(Error);
-        goto fail1;
-    }
-
-    MatchingDeviceIDLength = MaxValueLength + sizeof (TCHAR);
-
-    *MatchingDeviceID = calloc(1, MatchingDeviceIDLength);
-    if (*MatchingDeviceID == NULL)
-        goto fail2;
-
-    Error = RegQueryValueEx(DriverKey,
-                            "MatchingDeviceId",
-                            NULL,
-                            &Type,
-                            (LPBYTE)*MatchingDeviceID,
-                            &MatchingDeviceIDLength);
-    if (Error != ERROR_SUCCESS) {
-        SetLastError(Error);
-        goto fail3;
-    }
-
-    if (Type != REG_SZ) {
-        SetLastError(ERROR_BAD_FORMAT);
-        goto fail4;
-    }
-
-    for (Index = 0; Index < strlen(*MatchingDeviceID); Index++)
-        (*MatchingDeviceID)[Index] = (CHAR)toupper((*MatchingDeviceID)[Index]);
-
-    Log("%s", *MatchingDeviceID);
-
-    return TRUE;
-
-fail4:
-    Log("fail4");
-
-fail3:
-    Log("fail3");
-
-    free(*MatchingDeviceID);
-
-fail2:
-    Log("fail2");
-
-fail1:
-    Error = GetLastError();
-
-    {
-        PTCHAR  Message;
-
-        Message = GetErrorMessage(Error);
-        Log("fail1 (%s)", Message);
-        LocalFree(Message);
-    }
-
-    return FALSE;
-}
-
-static BOOLEAN
-GetDeviceInstanceID(
-    IN  HDEVINFO            DeviceInfoSet,
-    IN  PSP_DEVINFO_DATA    DeviceInfoData,
-    OUT PTCHAR              *DeviceID,
-    OUT PTCHAR              *InstanceID
-    )
-{
-    DWORD                   DeviceInstanceIDLength;
-    PTCHAR                  DeviceInstanceID;
-    DWORD                   Index;
-    PTCHAR                  Prefix;
-    DWORD                   InstanceIDLength;
-    HRESULT                 Result;
-    HRESULT                 Error;
-
-    if (!SetupDiGetDeviceInstanceId(DeviceInfoSet,
-                                    DeviceInfoData,
-                                    NULL,
-                                    0,
-                                    &DeviceInstanceIDLength)) {
-        if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
-            goto fail1;
-    }
-
-    DeviceInstanceIDLength += sizeof (TCHAR);
-
-    DeviceInstanceID = calloc(1, DeviceInstanceIDLength);
-    if (DeviceInstanceID == NULL)
-        goto fail2;
-
-    if (!SetupDiGetDeviceInstanceId(DeviceInfoSet,
-                                    DeviceInfoData,
-                                    DeviceInstanceID,
-                                    DeviceInstanceIDLength,
-                                    NULL))
-        goto fail3;
-
-    for (Index = 0; Index < strlen(DeviceInstanceID); Index++)
-        DeviceInstanceID[Index] = (CHAR)toupper(DeviceInstanceID[Index]);
-
-    *DeviceID = DeviceInstanceID;
-
-    Prefix = strrchr(DeviceInstanceID, '\\');
-    assert(Prefix != NULL);
-    *Prefix++ = '\0';
-
-    DeviceInstanceID = strrchr(Prefix, '&');
-    if (DeviceInstanceID != NULL) {
-        *DeviceInstanceID++ = '\0';
-    } else {
-        DeviceInstanceID = Prefix;
-        Prefix = NULL;
-    }
-
-    if (Prefix != NULL)
-        Log("Parent Prefix = %s", Prefix);
-
-    InstanceIDLength = (ULONG)((strlen(DeviceInstanceID) +
-                                1) * sizeof (TCHAR));
-
-    *InstanceID = calloc(1, InstanceIDLength);
-    if (*InstanceID == NULL)
-        goto fail4;
-
-    Result = StringCbPrintf(*InstanceID,
-                            InstanceIDLength,
-                            "%s",
-                            DeviceInstanceID);
-    assert(SUCCEEDED(Result));
-
-    Log("DeviceID = %s", *DeviceID);
-    Log("InstanceID = %s", *InstanceID);
-
-    return TRUE;
-
-fail4:
-    Log("fail4");
-
-    DeviceInstanceID = *DeviceID;
-    *DeviceID = NULL;
-
-fail3:
-    Log("fail3");
-
-    free(DeviceInstanceID);
-
-fail2:
-    Log("fail2");
-
-fail1:
-    Error = GetLastError();
-
-    {
-        PTCHAR  Message;
-
-        Message = GetErrorMessage(Error);
-        Log("fail1 (%s)", Message);
-        LocalFree(Message);
-    }
-
-    return FALSE;
-}
-
-static BOOLEAN
-GetActiveDeviceInstanceID(
-    OUT PTCHAR  *DeviceID,
-    OUT PTCHAR  *InstanceID
-    )
-{
-    HKEY        ParametersKey;
-    DWORD       MaxValueLength;
-    DWORD       DeviceIDLength;
-    DWORD       InstanceIDLength;
-    DWORD       Type;
-    HRESULT     Error;
-
-    Error = RegCreateKeyEx(HKEY_LOCAL_MACHINE,
-                           PARAMETERS_KEY(XENFILT),
-                           0,
-                           NULL,
-                           REG_OPTION_NON_VOLATILE,
-                           KEY_ALL_ACCESS,
-                           NULL,
-                           &ParametersKey,
-                           NULL);
-    if (Error != ERROR_SUCCESS) {
-        SetLastError(Error);
-        goto fail1;
-    }
-
-    Error = RegQueryInfoKey(ParametersKey,
-                            NULL,
-                            NULL,
-                            NULL,
-                            NULL,
-                            NULL,
-                            NULL,
-                            NULL,
-                            NULL,
-                            &MaxValueLength,
-                            NULL,
-                            NULL);
-    if (Error != ERROR_SUCCESS) {
-        SetLastError(Error);
-        goto fail2;
-    }
-
-    DeviceIDLength = MaxValueLength + sizeof (TCHAR);
-
-    *DeviceID = calloc(1, DeviceIDLength);
-    if (*DeviceID == NULL)
-        goto fail3;
-
-    Error = RegQueryValueEx(ParametersKey,
-                            "ActiveDeviceID",
-                            NULL,
-                            &Type,
-                            (LPBYTE)*DeviceID,
-                            &DeviceIDLength);
-    if (Error != ERROR_SUCCESS || Type != REG_SZ) {
-        free(*DeviceID);
-        *DeviceID = NULL;
-    }
-
-    InstanceIDLength = MaxValueLength + sizeof (TCHAR);
-
-    *InstanceID = calloc(1, InstanceIDLength);
-    if (*InstanceID == NULL)
-        goto fail4;
-
-    Error = RegQueryValueEx(ParametersKey,
-                            "ActiveInstanceID",
-                            NULL,
-                            &Type,
-                            (LPBYTE)*InstanceID,
-                            &InstanceIDLength);
-    if (Error != ERROR_SUCCESS || Type != REG_SZ) {
-        free(*InstanceID);
-        *InstanceID = NULL;
-    }
-
-    Log("DeviceID = %s", (*DeviceID != NULL) ? *DeviceID : "NOT SET");
-    Log("InstanceID = %s", (*InstanceID != NULL) ? *InstanceID : "NOT SET");
-
-    RegCloseKey(ParametersKey);
-
-    return TRUE;
-
-fail4:
-    Log("fail4");
-
-    if (*DeviceID != NULL) {
-        free(*DeviceID);
-        *DeviceID = NULL;
-    }
-
-fail3:
-    Log("fail3");
-
-fail2:
-    Log("fail2");
-
-    RegCloseKey(ParametersKey);
-
-fail1:
-    Error = GetLastError();
-
-    {
-        PTCHAR  Message;
-
-        Message = GetErrorMessage(Error);
-        Log("fail1 (%s)", Message);
-        LocalFree(Message);
-    }
-
-    return FALSE;
-}
-
-static BOOLEAN
-IsActiveDevice(
-    IN  HDEVINFO            DeviceInfoSet,
-    IN  PSP_DEVINFO_DATA    DeviceInfoData,
-    OUT PBOOLEAN            ActiveDevice,
-    OUT PBOOLEAN            VendorIsActive
-    )
-{
-    PTCHAR                  ActiveDeviceID;
-    PTCHAR                  ActiveInstanceID;
-    PTCHAR                  DeviceID;
-    PTCHAR                  InstanceID;
-    HRESULT                 Error;
-    BOOLEAN                 Success;
-
-    Log("====>");
-
-    Success = GetActiveDeviceInstanceID(&ActiveDeviceID, &ActiveInstanceID);
-    if (!Success)
-        goto fail1;
-
-    if (ActiveDeviceID == NULL)
-        goto done;
-
-    assert(ActiveInstanceID != NULL);
-
-    Success = GetDeviceInstanceID(DeviceInfoSet, DeviceInfoData,
-                                  &DeviceID, &InstanceID);
-    if (!Success)
-        goto fail2;
-
-    *ActiveDevice = (_stricmp(ActiveDeviceID, DeviceID) == 0 &&
-                     _stricmp(ActiveInstanceID, InstanceID) == 0) ?
-        TRUE :
-        FALSE;
-
-#ifdef VENDOR_DEVICE_ID_STR
-
-#define DRIVER_VENDOR_DEVICE_ID "PCI\\VEN_5853&DEV_" ## VENDOR_DEVICE_ID_STR ## \
                "&SUBSYS_C0005853&REV_01"
-
-    *VendorIsActive = (_stricmp(ActiveDeviceID, DRIVER_VENDOR_DEVICE_ID) == 0) ?
-        TRUE :
-        FALSE;
-
-#undef DRIVER_VENDOR_DEVICE_ID
-
-#else
-    *VendorIsActive = FALSE;
-#endif
-
-    free(DeviceID);
-    free(InstanceID);
-
-    free(ActiveDeviceID);
-    free(ActiveInstanceID);
-
-done:
-    Log("<====");
-
-    return TRUE;
-
-fail2:
-    Log("fail2");
-
-    free(ActiveDeviceID);
-    free(ActiveInstanceID);
-
-fail1:
-    Error = GetLastError();
-
-    {
-        PTCHAR  Message;
-
-        Message = GetErrorMessage(Error);
-        Log("fail1 (%s)", Message);
-        LocalFree(Message);
-    }
-
-    return FALSE;
-}
-
-static BOOLEAN
-SupportChildDrivers(
-    OUT PBOOLEAN    NewBinding
-    )
-{
-    BOOLEAN         Success;
-    HKEY            XenbusKey;
-    HRESULT         Error;
-    DWORD           SubKeys;
-    DWORD           MaxSubKeyLength;
-    DWORD           SubKeyLength;
-    PTCHAR          SubKeyName;
-    HKEY            DeviceKey;
-    PTCHAR          DriverKeyName;
-    DWORD           ConfigFlags;
-    HKEY            DriverKey;
-    PTCHAR          MatchingDeviceID;
-    DWORD           Index;
-
-    Log("====>");
-
-    Success = OpenBusKey("XENBUS", &XenbusKey);
-    if (!Success) {
-        // If there is no key then this must be a fresh installation
-        if (GetLastError() == ERROR_FILE_NOT_FOUND)
-            goto done;
-
-        goto fail1;
-    }
-
-    Error = RegQueryInfoKey(XenbusKey,
-                            NULL,
-                            NULL,
-                            NULL,
-                            &SubKeys,
-                            &MaxSubKeyLength,
-                            NULL,
-                            NULL,
-                            NULL,
-                            NULL,
-                            NULL,
-                            NULL);
-    if (Error != ERROR_SUCCESS) {
-        SetLastError(Error);
-        goto fail2;
-    }
-
-    SubKeyLength = MaxSubKeyLength + sizeof (TCHAR);
-
-    SubKeyName = malloc(SubKeyLength);
-    if (SubKeyName == NULL)
-        goto fail3;
-
-    for (Index = 0; Index < SubKeys; Index++) {
-        SubKeyLength = MaxSubKeyLength + sizeof (TCHAR);
-        memset(SubKeyName, 0, SubKeyLength);
-
-        Error = RegEnumKeyEx(XenbusKey,
-                             Index,
-                             (LPTSTR)SubKeyName,
-                             &SubKeyLength,
-                             NULL,
-                             NULL,
-                             NULL,
-                             NULL);
-        if (Error != ERROR_SUCCESS) {
-            SetLastError(Error);
-            goto fail4;
-        }
-
-        Success = OpenDeviceKey("XENBUS", SubKeyName, &DeviceKey);
-        if (!Success)
-            goto fail5;
-
-        Success = GetDriverKeyName(DeviceKey, &DriverKeyName, &ConfigFlags);
-        if (!Success)
-            goto fail6;
-
-        if (DriverKeyName == NULL)
-            goto loop1;
-
-        if (ConfigFlags & 0x20)
-            goto loop2;
-
-        Success = OpenDriverKey(DriverKeyName, &DriverKey);
-        if (!Success)
-            goto loop3;
-
-        Success = GetMatchingDeviceID(DriverKey, &MatchingDeviceID);
-        if (!Success)
-            goto loop4;
-
-        Success = SupportDeviceID(MatchingDeviceID, NewBinding);
-        if (!Success)
-            goto fail7;
-
-        free(MatchingDeviceID);
-
-    loop4:
-        RegCloseKey(DriverKey);
-
-    loop3:
-
-    loop2:
-        free(DriverKeyName);
-
-    loop1:
-        RegCloseKey(DeviceKey);
-    }
-
-    free(SubKeyName);
-
-    RegCloseKey(XenbusKey);
-
-done:
-    Log("<====");
-
-    return TRUE;
-
-fail7:
-    Log("fail7");
-
-    free(MatchingDeviceID);
-
-    RegCloseKey(DriverKey);
-
-    free(DriverKeyName);
-
-fail6:
-    Log("fail6");
-
-    RegCloseKey(DeviceKey);
-
-fail5:
-    Log("fail5");
-
-fail4:
-    Log("fail4");
-
-    free(SubKeyName);
-
-fail3:
-    Log("fail3");
-
-fail2:
-    Log("fail2");
-
-    RegCloseKey(XenbusKey);
-
-fail1:
-    Error = GetLastError();
-
-    {
-        PTCHAR  Message;
-
-        Message = GetErrorMessage(Error);
-        Log("fail1 (%s)", Message);
-        LocalFree(Message);
-    }
-
-    return FALSE;
-}
-
-static BOOLEAN
-ClearUnplugRequest(
-    IN  PTCHAR      ClassName
-    )
-{
-    HKEY            UnplugKey;
-    HRESULT         Error;
-
-    Log("====> (%s)", ClassName);
-
-    Error = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
-                         UNPLUG_KEY,
-                         0,
-                         KEY_ALL_ACCESS,
-                         &UnplugKey);
-    if (Error != ERROR_SUCCESS) {
-        SetLastError(Error);
-        goto fail1;
-    }
-
-    Error = RegDeleteValue(UnplugKey, ClassName);
-    if (Error != ERROR_SUCCESS) {
-        SetLastError(Error);
-        goto fail2;
-    }
-
-    RegCloseKey(UnplugKey);
-
-    Log("<====");
-
-    return TRUE;
-
-fail2:
-    Log("fail2");
-
-    RegCloseKey(UnplugKey);
-
-fail1:
-    Error = GetLastError();
-
-    {
-        PTCHAR  Message;
-
-        Message = GetErrorMessage(Error);
-        Log("fail1 (%s)", Message);
-        LocalFree(Message);
-    }
-
-    return FALSE;
-}
-
-static BOOL
-MonitorDelete(
-    VOID
-    )
-{
-    SC_HANDLE           SCManager;
-    SC_HANDLE           Service;
-    BOOL                Success;
-    SERVICE_STATUS      Status;
-    HRESULT             Error;
-
-    Log("====>");
-
-    SCManager = OpenSCManager(NULL,
-                              NULL,
-                              SC_MANAGER_ALL_ACCESS);
-
-    if (SCManager == NULL)
-        goto fail1;
-
-    Service = OpenService(SCManager,
-                          MONITOR_NAME,
-                          SERVICE_ALL_ACCESS);
-
-    if (Service == NULL)
-        goto fail2;
-
-    Success = ControlService(Service,
-                             SERVICE_CONTROL_STOP,
-                             &Status);
-
-    if (!Success &&
-        GetLastError() != ERROR_SERVICE_NOT_ACTIVE)
-        goto fail3;
-
-    Success = DeleteService(Service);
-
-    if (!Success)
-        goto fail4;
-
-    CloseServiceHandle(Service);
-    CloseServiceHandle(SCManager);
-
-    Log("<====");
-
-    return TRUE;
-
-fail4:
-    Log("fail4");
-
-fail3:
-    Log("fail3");
-
-    CloseServiceHandle(Service);
-
-fail2:
-    Log("fail2");
-
-    CloseServiceHandle(SCManager);
-
-fail1:
-    Error = GetLastError();
-
-    {
-        PTCHAR  Message;
-        Message = GetErrorMessage(Error);
-        Log("fail1 (%s)", Message);
-        LocalFree(Message);
-    }
-
-    return FALSE;
-}
-
-static HRESULT
-DifInstallPreProcess(
-    IN  HDEVINFO                    DeviceInfoSet,
-    IN  PSP_DEVINFO_DATA            DeviceInfoData,
-    IN  PCOINSTALLER_CONTEXT_DATA   Context
-    )
-{
-    BOOLEAN                         Success;
-    HRESULT                         Error;
-    BOOLEAN                         Allow;
-    BOOLEAN                         NewBinding;
-
-    UNREFERENCED_PARAMETER(DeviceInfoSet);
-    UNREFERENCED_PARAMETER(DeviceInfoData);
-
-    Log("====>");
-
-    Success = AllowInstall(&Allow);
-    if (!Success)
-        goto fail1;
-
-    if (!Allow) {
-        SetLastError(ERROR_ACCESS_DENIED);
-        goto fail2;
-    }
-
-    Success = MatchExistingDriver();
-    if (!Success)
-        goto fail3;
-
-    NewBinding = FALSE;
-
-    Success = SupportChildDrivers(&NewBinding);
-    if (!Success)
-        goto fail4;
-
-    Context->PrivateData = (PVOID)(ULONG_PTR)NewBinding;
-
-    Log("<====");
-    
-    return NO_ERROR;
-
-fail4:
-    Log("fail4");
-
-fail3:
-    Log("fail3");
-
-fail2:
-    Log("fail2");
-
-fail1:
-    Error = GetLastError();
-
-    {
-        PTCHAR  Message;
-
-        Message = GetErrorMessage(Error);
-        Log("fail1 (%s)", Message);
-        LocalFree(Message);
-    }
-
-    return Error;
-}
-
-static HRESULT
-DifInstallPostProcess(
-    IN  HDEVINFO                    DeviceInfoSet,
-    IN  PSP_DEVINFO_DATA            DeviceInfoData,
-    IN  PCOINSTALLER_CONTEXT_DATA   Context
-    )
-{
-    BOOLEAN                         NewBinding;
-    BOOLEAN                         Active;
-    BOOLEAN                         VendorIsActive;
-
-    Log("====>");
-
-    NewBinding = (BOOLEAN)(ULONG_PTR)Context->PrivateData;
-
-    Active = TRUE;
-
-    (VOID) IsActiveDevice(DeviceInfoSet,
-                          DeviceInfoData,
-                          &Active,
-                          &VendorIsActive);
-
-    Log("Active = %s", Active ? "TRUE" : "FALSE");
-    Log("NewBinding = %s", NewBinding ? "TRUE" : "FALSE");
-
-    if ((Active && NewBinding) || !VendorIsActive) {
-        (VOID) ClearUnplugRequest("DISKS");
-        (VOID) ClearUnplugRequest("NICS");
-    }
-
-    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("====>");
-
-    (VOID) MonitorDelete();
-
-    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;
-    SP_DRVINFO_DATA                 DriverInfoData;
-    BOOLEAN                         DriverInfoAvailable;
-    BOOLEAN                         IsNullDriver;
-
-    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);
-    }
-
-    DriverInfoData.cbSize = sizeof(DriverInfoData);
-    DriverInfoAvailable = SetupDiGetSelectedDriver(DeviceInfoSet,
-                                                   DeviceInfoData,
-                                                   &DriverInfoData) ?
-                          TRUE :
-                          FALSE;
-    IsNullDriver = !(DriverInfoAvailable &&
-                    (DriverInfoData.DriverType == SPDIT_CLASSDRIVER ||
-                     DriverInfoData.DriverType == SPDIT_COMPATDRIVER));
-
-    switch (Function) {
-	case DIF_SELECTBESTCOMPATDRV: {
-        //
-        // If the NULL driver will be installed, treat this as we would a
-        // DIF_REMOVE to work around the fact that Windows 10 2004 doesn't
-        // call DIF_INSTALLDEVICE on uninstall.
-        // An InstallResult value of ERROR_NO_COMPAT_DRIVERS simply means
-        // that the NULL driver was selected, and so should not be treated
-        // as an error.
-        //
-        if (Context->PostProcessing &&
-            Context->InstallResult == ERROR_NO_COMPAT_DRIVERS)
-            Context->InstallResult = NO_ERROR;
-
-        Error = (IsNullDriver) ?
-                DifRemove(DeviceInfoSet, DeviceInfoData, Context) :
-                NO_ERROR;
-        break;
-    }
-    case DIF_INSTALLDEVICE: {
-        Error = (IsNullDriver) ?
-                NO_ERROR :
-                DifInstall(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 FORCEINLINE 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/xenbus_coinst.def b/src/coinst/xenbus_coinst.def
deleted file mode 100644
index 71d8f65..0000000
--- a/src/coinst/xenbus_coinst.def
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (c) Xen Project.
-; Copyright (c) Cloud Software Group, 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/coinst/xenbus_coinst.rc b/src/coinst/xenbus_coinst.rc
deleted file mode 100644
index 4d46edc..0000000
--- a/src/coinst/xenbus_coinst.rc
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Copyright (c) Xen Project.
- * Copyright (c) Cloud Software Group, 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.
- */
-
-#include <windows.h>
-#include <ntverp.h>
-
-
-#undef VER_COMPANYNAME_STR
-#undef VER_PRODUCTNAME_STR
-#undef VER_PRODUCTVERSION
-#undef VER_PRODUCTVERSION_STR
-
-#include <version.h>
-
-#define VER_COMPANYNAME_STR         VENDOR_NAME_STR
-#define VER_LEGALCOPYRIGHT_STR      COPYRIGHT_STR
-
-#define VER_PRODUCTNAME_STR         "XENBUS_COINST"
-#define VER_PRODUCTVERSION          \
                MAJOR_VERSION,MINOR_VERSION,MICRO_VERSION,BUILD_NUMBER
-#define VER_PRODUCTVERSION_STR      MAJOR_VERSION_STR "." MINOR_VERSION_STR "." \
                MICRO_VERSION_STR "." BUILD_NUMBER_STR
-
-#define VER_INTERNALNAME_STR        "XENBUS_COINST.DLL"
-#define VER_FILEDESCRIPTION_STR     "XENBUS_COINST"
-
-#define VER_FILETYPE                VFT_DRV
-#define VER_FILESUBTYPE             VFT2_DRV_SYSTEM
-
-#include <common.ver>
diff --git a/vs2015/package/package.vcxproj b/vs2015/package/package.vcxproj
index 2518c3f..e536109 100644
--- a/vs2015/package/package.vcxproj
+++ b/vs2015/package/package.vcxproj
@@ -42,9 +42,6 @@
     <ProjectReference Include="..\xenfilt\xenfilt.vcxproj">
       <Project>{d7411b2c-2c43-434d-9f56-e10a3d2f5bad}</Project>
     </ProjectReference>
-    <ProjectReference Include="..\xenbus_coinst\xenbus_coinst.vcxproj">
-      <Project>{4bf41378-c01b-4002-8581-563c5f703362}</Project>
-    </ProjectReference>
     <ProjectReference Include="..\xenbus\xenbus.vcxproj">
       <Project>{14c16c29-77c9-475b-a618-1b01e67cf985}</Project>
     </ProjectReference>
diff --git a/vs2015/xenbus.sln b/vs2015/xenbus.sln
index ecb3540..552d43d 100644
--- a/vs2015/xenbus.sln
+++ b/vs2015/xenbus.sln
@@ -4,11 +4,6 @@ VisualStudioVersion = 14.0.25420.1
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "version", \
"version\version.vcxproj", "{65FA97EA-A569-4FC1-BFE7-D68E109143F7}"  EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenbus_coinst", \
                "xenbus_coinst\xenbus_coinst.vcxproj", \
                "{4BF41378-C01B-4002-8581-563C5F703362}"
-	ProjectSection(ProjectDependencies) = postProject
-		{65FA97EA-A569-4FC1-BFE7-D68E109143F7} = {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
-	EndProjectSection
-EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenbus_monitor", \
"xenbus_monitor\xenbus_monitor.vcxproj", "{2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}"  \
ProjectSection(ProjectDependencies) = postProject  \
{65FA97EA-A569-4FC1-BFE7-D68E109143F7} = {65FA97EA-A569-4FC1-BFE7-D68E109143F7} @@ \
-35,7 +30,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "package", \
"package\package.  ProjectSection(ProjectDependencies) = postProject
 		{65FA97EA-A569-4FC1-BFE7-D68E109143F7} = {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
 		{14C16C29-77C9-475B-A618-1B01E67CF985} = {14C16C29-77C9-475B-A618-1B01E67CF985}
-		{4BF41378-C01B-4002-8581-563C5F703362} = {4BF41378-C01B-4002-8581-563C5F703362}
 		{9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C} = {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}
 		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD} = {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}
 		{2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B} = {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}
@@ -69,22 +63,6 @@ Global
 		{65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 Release|Win32.Build.0 = Windows \
10 Release|Win32  {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 \
Release|x64.ActiveCfg = Windows 10 Release|x64  \
{65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 10 Release|x64.Build.0 = Windows 10 \
                Release|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 \
                Debug|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Debug|Win32.Build.0 = Windows 8 \
                Debug|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Debug|x64.ActiveCfg = Windows 8 \
                Debug|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Debug|x64.Build.0 = Windows 8 \
                Debug|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Release|Win32.ActiveCfg = Windows \
                8 Release|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Release|Win32.Build.0 = Windows 8 \
                Release|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Release|x64.ActiveCfg = Windows 8 \
                Release|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Release|x64.Build.0 = Windows 8 \
                Release|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Debug|Win32.ActiveCfg = Windows \
                10 Debug|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Debug|Win32.Build.0 = Windows 10 \
                Debug|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Debug|x64.ActiveCfg = Windows 10 \
                Debug|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Debug|x64.Build.0 = Windows 10 \
                Debug|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Release|Win32.ActiveCfg = \
                Windows 10 Release|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Release|Win32.Build.0 = Windows \
                10 Release|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Release|x64.ActiveCfg = Windows \
                10 Release|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Release|x64.Build.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|x64.ActiveCfg = Windows 8 \
                Debug|x64
diff --git a/vs2015/xenbus_coinst/xenbus_coinst.vcxproj \
b/vs2015/xenbus_coinst/xenbus_coinst.vcxproj deleted file mode 100644
index 1d51f96..0000000
--- a/vs2015/xenbus_coinst/xenbus_coinst.vcxproj
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.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>{4BF41378-C01B-4002-8581-563C5F703362}</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>PROJECT=$(ProjectName);%(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/xenbus_coinst.def</ModuleDefinitionFile>
                
-      <AdditionalDependencies>setupapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
                
-      <EnableCOMDATFolding>false</EnableCOMDATFolding>
-    </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\xenbus_coinst.def" />
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="..\..\src\coinst\xenbus_coinst.rc" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-</Project>
diff --git a/vs2015/xenbus_coinst/xenbus_coinst.vcxproj.user \
b/vs2015/xenbus_coinst/xenbus_coinst.vcxproj.user deleted file mode 100644
index db41a92..0000000
--- a/vs2015/xenbus_coinst/xenbus_coinst.vcxproj.user
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" \
                xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <SignMode>TestSign</SignMode>
-    <TestCertificate>..\..\src\xenbus.pfx</TestCertificate>
-    <TimeStampServer>http://timestamp.verisign.com/scripts/timstamp.dll</TimeStampServer>
                
-  </PropertyGroup>
-</Project>
diff --git a/vs2017/package/package.vcxproj b/vs2017/package/package.vcxproj
index 2a83c90..5edf0a7 100644
--- a/vs2017/package/package.vcxproj
+++ b/vs2017/package/package.vcxproj
@@ -42,9 +42,6 @@
     <ProjectReference Include="..\xenfilt\xenfilt.vcxproj">
       <Project>{d7411b2c-2c43-434d-9f56-e10a3d2f5bad}</Project>
     </ProjectReference>
-    <ProjectReference Include="..\xenbus_coinst\xenbus_coinst.vcxproj">
-      <Project>{4bf41378-c01b-4002-8581-563c5f703362}</Project>
-    </ProjectReference>
     <ProjectReference Include="..\xenbus\xenbus.vcxproj">
       <Project>{14c16c29-77c9-475b-a618-1b01e67cf985}</Project>
     </ProjectReference>
diff --git a/vs2017/xenbus.sln b/vs2017/xenbus.sln
index fc85d47..19fa290 100644
--- a/vs2017/xenbus.sln
+++ b/vs2017/xenbus.sln
@@ -4,11 +4,6 @@ VisualStudioVersion = 15.0.27703.2042
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "version", \
"version\version.vcxproj", "{65FA97EA-A569-4FC1-BFE7-D68E109143F7}"  EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenbus_coinst", \
                "xenbus_coinst\xenbus_coinst.vcxproj", \
                "{4BF41378-C01B-4002-8581-563C5F703362}"
-	ProjectSection(ProjectDependencies) = postProject
-		{65FA97EA-A569-4FC1-BFE7-D68E109143F7} = {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
-	EndProjectSection
-EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenbus_monitor", \
"xenbus_monitor\xenbus_monitor.vcxproj", "{2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}"  \
ProjectSection(ProjectDependencies) = postProject  \
{65FA97EA-A569-4FC1-BFE7-D68E109143F7} = {65FA97EA-A569-4FC1-BFE7-D68E109143F7} @@ \
-35,7 +30,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "package", \
"package\package.  ProjectSection(ProjectDependencies) = postProject
 		{65FA97EA-A569-4FC1-BFE7-D68E109143F7} = {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
 		{14C16C29-77C9-475B-A618-1B01E67CF985} = {14C16C29-77C9-475B-A618-1B01E67CF985}
-		{4BF41378-C01B-4002-8581-563C5F703362} = {4BF41378-C01B-4002-8581-563C5F703362}
 		{9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C} = {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}
 		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD} = {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}
 		{2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B} = {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}
@@ -69,22 +63,6 @@ Global
 		{65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 Release|Win32.Build.0 = Windows 8 \
Release|Win32  {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 Release|x64.ActiveCfg \
= Windows 8 Release|x64  {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 \
                Release|x64.Build.0 = Windows 8 Release|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Debug|Win32.ActiveCfg = Windows \
                10 Debug|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Debug|Win32.Build.0 = Windows 10 \
                Debug|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Debug|x64.ActiveCfg = Windows 10 \
                Debug|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Debug|x64.Build.0 = Windows 10 \
                Debug|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Release|Win32.ActiveCfg = \
                Windows 10 Release|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Release|Win32.Build.0 = Windows \
                10 Release|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Release|x64.ActiveCfg = Windows \
                10 Release|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Release|x64.Build.0 = Windows 10 \
                Release|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 \
                Debug|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Debug|Win32.Build.0 = Windows 8 \
                Debug|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Debug|x64.ActiveCfg = Windows 8 \
                Debug|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Debug|x64.Build.0 = Windows 8 \
                Debug|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Release|Win32.ActiveCfg = Windows \
                8 Release|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Release|Win32.Build.0 = Windows 8 \
                Release|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Release|x64.ActiveCfg = Windows 8 \
                Release|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Release|x64.Build.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|x64.ActiveCfg = Windows 10 \
                Debug|x64
diff --git a/vs2017/xenbus_coinst/xenbus_coinst.vcxproj \
b/vs2017/xenbus_coinst/xenbus_coinst.vcxproj deleted file mode 100644
index 7eeb228..0000000
--- a/vs2017/xenbus_coinst/xenbus_coinst.vcxproj
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.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>{4BF41378-C01B-4002-8581-563C5F703362}</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>PROJECT=$(ProjectName);%(PreprocessorDefinitions)</PreprocessorDefinitions>
                
-      <WarningLevel>EnableAllWarnings</WarningLevel>
-      <DisableSpecificWarnings>4127;4711;4548;4820;4668;4255;5045;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/xenbus_coinst.def</ModuleDefinitionFile>
                
-      <AdditionalDependencies>setupapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
                
-      <EnableCOMDATFolding>false</EnableCOMDATFolding>
-    </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\xenbus_coinst.def" />
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="..\..\src\coinst\xenbus_coinst.rc" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-</Project>
diff --git a/vs2017/xenbus_coinst/xenbus_coinst.vcxproj.user \
b/vs2017/xenbus_coinst/xenbus_coinst.vcxproj.user deleted file mode 100644
index db41a92..0000000
--- a/vs2017/xenbus_coinst/xenbus_coinst.vcxproj.user
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" \
                xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <SignMode>TestSign</SignMode>
-    <TestCertificate>..\..\src\xenbus.pfx</TestCertificate>
-    <TimeStampServer>http://timestamp.verisign.com/scripts/timstamp.dll</TimeStampServer>
                
-  </PropertyGroup>
-</Project>
diff --git a/vs2019/package/package.vcxproj b/vs2019/package/package.vcxproj
index 4d03e23..839c047 100644
--- a/vs2019/package/package.vcxproj
+++ b/vs2019/package/package.vcxproj
@@ -47,9 +47,6 @@
     <ProjectReference Include="..\xenfilt\xenfilt.vcxproj">
       <Project>{d7411b2c-2c43-434d-9f56-e10a3d2f5bad}</Project>
     </ProjectReference>
-    <ProjectReference Include="..\xenbus_coinst\xenbus_coinst.vcxproj">
-      <Project>{4bf41378-c01b-4002-8581-563c5f703362}</Project>
-    </ProjectReference>
     <ProjectReference Include="..\xenbus\xenbus.vcxproj">
       <Project>{14c16c29-77c9-475b-a618-1b01e67cf985}</Project>
     </ProjectReference>
diff --git a/vs2019/xenbus.sln b/vs2019/xenbus.sln
index 4ced8db..65867c9 100644
--- a/vs2019/xenbus.sln
+++ b/vs2019/xenbus.sln
@@ -4,11 +4,6 @@ VisualStudioVersion = 16.0
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "version", \
"version\version.vcxproj", "{65FA97EA-A569-4FC1-BFE7-D68E109143F7}"  EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenbus_coinst", \
                "xenbus_coinst\xenbus_coinst.vcxproj", \
                "{4BF41378-C01B-4002-8581-563C5F703362}"
-	ProjectSection(ProjectDependencies) = postProject
-		{65FA97EA-A569-4FC1-BFE7-D68E109143F7} = {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
-	EndProjectSection
-EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenbus_monitor", \
"xenbus_monitor\xenbus_monitor.vcxproj", "{2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}"  \
ProjectSection(ProjectDependencies) = postProject  \
{65FA97EA-A569-4FC1-BFE7-D68E109143F7} = {65FA97EA-A569-4FC1-BFE7-D68E109143F7} @@ \
-35,7 +30,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "package", \
"package\package.  ProjectSection(ProjectDependencies) = postProject
 		{65FA97EA-A569-4FC1-BFE7-D68E109143F7} = {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
 		{14C16C29-77C9-475B-A618-1B01E67CF985} = {14C16C29-77C9-475B-A618-1B01E67CF985}
-		{4BF41378-C01B-4002-8581-563C5F703362} = {4BF41378-C01B-4002-8581-563C5F703362}
 		{9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C} = {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}
 		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD} = {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}
 		{2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B} = {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}
@@ -69,22 +63,6 @@ Global
 		{65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 Release|Win32.Build.0 = Windows 8 \
Release|Win32  {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 Release|x64.ActiveCfg \
= Windows 8 Release|x64  {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 \
                Release|x64.Build.0 = Windows 8 Release|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Debug|Win32.ActiveCfg = Windows \
                10 Debug|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Debug|Win32.Build.0 = Windows 10 \
                Debug|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Debug|x64.ActiveCfg = Windows 10 \
                Debug|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Debug|x64.Build.0 = Windows 10 \
                Debug|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Release|Win32.ActiveCfg = \
                Windows 10 Release|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Release|Win32.Build.0 = Windows \
                10 Release|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Release|x64.ActiveCfg = Windows \
                10 Release|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Release|x64.Build.0 = Windows 10 \
                Release|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 \
                Debug|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Debug|Win32.Build.0 = Windows 8 \
                Debug|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Debug|x64.ActiveCfg = Windows 8 \
                Debug|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Debug|x64.Build.0 = Windows 8 \
                Debug|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Release|Win32.ActiveCfg = Windows \
                8 Release|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Release|Win32.Build.0 = Windows 8 \
                Release|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Release|x64.ActiveCfg = Windows 8 \
                Release|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Release|x64.Build.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|x64.ActiveCfg = Windows 10 \
                Debug|x64
diff --git a/vs2019/xenbus_coinst/xenbus_coinst.vcxproj \
b/vs2019/xenbus_coinst/xenbus_coinst.vcxproj deleted file mode 100644
index c4e47d0..0000000
--- a/vs2019/xenbus_coinst/xenbus_coinst.vcxproj
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.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>{4BF41378-C01B-4002-8581-563C5F703362}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="..\targets.props" />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <PropertyGroup>
-    <RunCodeAnalysis>true</RunCodeAnalysis>
-    <EnableInf2cat>false</EnableInf2cat>
-  </PropertyGroup>
-  <ItemDefinitionGroup>
-    <ClCompile>
-      <AdditionalOptions>/ZH:SHA_256 %(AdditionalOptions)</AdditionalOptions>
-      <SDLCheck>true</SDLCheck>
-      <AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
                
-      <PreprocessorDefinitions>PROJECT=$(ProjectName);%(PreprocessorDefinitions)</PreprocessorDefinitions>
                
-      <WarningLevel>EnableAllWarnings</WarningLevel>
-      <DisableSpecificWarnings>4127;4711;4548;4820;4668;4255;5045;6001;6054;26052;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/xenbus_coinst.def</ModuleDefinitionFile>
                
-      <AdditionalDependencies>setupapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
                
-      <EnableCOMDATFolding>false</EnableCOMDATFolding>
-      <CETCompat>true</CETCompat>
-    </Link>
-    <ResourceCompile>
-      <AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
                
-    </ResourceCompile>
-    <DriverSign>
-      <FileDigestAlgorithm>sha256</FileDigestAlgorithm>
-    </DriverSign>
-  </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\xenbus_coinst.def" />
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="..\..\src\coinst\xenbus_coinst.rc" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-</Project>
diff --git a/vs2019/xenbus_coinst/xenbus_coinst.vcxproj.user \
b/vs2019/xenbus_coinst/xenbus_coinst.vcxproj.user deleted file mode 100644
index db41a92..0000000
--- a/vs2019/xenbus_coinst/xenbus_coinst.vcxproj.user
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" \
                xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <SignMode>TestSign</SignMode>
-    <TestCertificate>..\..\src\xenbus.pfx</TestCertificate>
-    <TimeStampServer>http://timestamp.verisign.com/scripts/timstamp.dll</TimeStampServer>
                
-  </PropertyGroup>
-</Project>
diff --git a/vs2022/package/package.vcxproj b/vs2022/package/package.vcxproj
index 885ce5a..e9f7a52 100644
--- a/vs2022/package/package.vcxproj
+++ b/vs2022/package/package.vcxproj
@@ -47,9 +47,6 @@
     <ProjectReference Include="..\xenfilt\xenfilt.vcxproj">
       <Project>{d7411b2c-2c43-434d-9f56-e10a3d2f5bad}</Project>
     </ProjectReference>
-    <ProjectReference Include="..\xenbus_coinst\xenbus_coinst.vcxproj">
-      <Project>{4bf41378-c01b-4002-8581-563c5f703362}</Project>
-    </ProjectReference>
     <ProjectReference Include="..\xenbus\xenbus.vcxproj">
       <Project>{14c16c29-77c9-475b-a618-1b01e67cf985}</Project>
     </ProjectReference>
diff --git a/vs2022/xenbus.sln b/vs2022/xenbus.sln
index 4ced8db..65867c9 100644
--- a/vs2022/xenbus.sln
+++ b/vs2022/xenbus.sln
@@ -4,11 +4,6 @@ VisualStudioVersion = 16.0
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "version", \
"version\version.vcxproj", "{65FA97EA-A569-4FC1-BFE7-D68E109143F7}"  EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenbus_coinst", \
                "xenbus_coinst\xenbus_coinst.vcxproj", \
                "{4BF41378-C01B-4002-8581-563C5F703362}"
-	ProjectSection(ProjectDependencies) = postProject
-		{65FA97EA-A569-4FC1-BFE7-D68E109143F7} = {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
-	EndProjectSection
-EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xenbus_monitor", \
"xenbus_monitor\xenbus_monitor.vcxproj", "{2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}"  \
ProjectSection(ProjectDependencies) = postProject  \
{65FA97EA-A569-4FC1-BFE7-D68E109143F7} = {65FA97EA-A569-4FC1-BFE7-D68E109143F7} @@ \
-35,7 +30,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "package", \
"package\package.  ProjectSection(ProjectDependencies) = postProject
 		{65FA97EA-A569-4FC1-BFE7-D68E109143F7} = {65FA97EA-A569-4FC1-BFE7-D68E109143F7}
 		{14C16C29-77C9-475B-A618-1B01E67CF985} = {14C16C29-77C9-475B-A618-1B01E67CF985}
-		{4BF41378-C01B-4002-8581-563C5F703362} = {4BF41378-C01B-4002-8581-563C5F703362}
 		{9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C} = {9C6A5D48-A331-4B1F-A004-7BB67BA5BE1C}
 		{D7411B2C-2C43-434D-9F56-E10A3D2F5BAD} = {D7411B2C-2C43-434D-9F56-E10A3D2F5BAD}
 		{2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B} = {2E61D2CC-865E-442C-8C83-B8DAFD7BBD3B}
@@ -69,22 +63,6 @@ Global
 		{65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 Release|Win32.Build.0 = Windows 8 \
Release|Win32  {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 Release|x64.ActiveCfg \
= Windows 8 Release|x64  {65FA97EA-A569-4FC1-BFE7-D68E109143F7}.Windows 8 \
                Release|x64.Build.0 = Windows 8 Release|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Debug|Win32.ActiveCfg = Windows \
                10 Debug|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Debug|Win32.Build.0 = Windows 10 \
                Debug|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Debug|x64.ActiveCfg = Windows 10 \
                Debug|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Debug|x64.Build.0 = Windows 10 \
                Debug|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Release|Win32.ActiveCfg = \
                Windows 10 Release|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Release|Win32.Build.0 = Windows \
                10 Release|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Release|x64.ActiveCfg = Windows \
                10 Release|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 10 Release|x64.Build.0 = Windows 10 \
                Release|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Debug|Win32.ActiveCfg = Windows 8 \
                Debug|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Debug|Win32.Build.0 = Windows 8 \
                Debug|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Debug|x64.ActiveCfg = Windows 8 \
                Debug|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Debug|x64.Build.0 = Windows 8 \
                Debug|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Release|Win32.ActiveCfg = Windows \
                8 Release|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Release|Win32.Build.0 = Windows 8 \
                Release|Win32
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Release|x64.ActiveCfg = Windows 8 \
                Release|x64
-		{4BF41378-C01B-4002-8581-563C5F703362}.Windows 8 Release|x64.Build.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|x64.ActiveCfg = Windows 10 \
                Debug|x64
diff --git a/vs2022/xenbus_coinst/xenbus_coinst.vcxproj \
b/vs2022/xenbus_coinst/xenbus_coinst.vcxproj deleted file mode 100644
index c4e47d0..0000000
--- a/vs2022/xenbus_coinst/xenbus_coinst.vcxproj
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.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>{4BF41378-C01B-4002-8581-563C5F703362}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="..\targets.props" />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <PropertyGroup>
-    <RunCodeAnalysis>true</RunCodeAnalysis>
-    <EnableInf2cat>false</EnableInf2cat>
-  </PropertyGroup>
-  <ItemDefinitionGroup>
-    <ClCompile>
-      <AdditionalOptions>/ZH:SHA_256 %(AdditionalOptions)</AdditionalOptions>
-      <SDLCheck>true</SDLCheck>
-      <AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
                
-      <PreprocessorDefinitions>PROJECT=$(ProjectName);%(PreprocessorDefinitions)</PreprocessorDefinitions>
                
-      <WarningLevel>EnableAllWarnings</WarningLevel>
-      <DisableSpecificWarnings>4127;4711;4548;4820;4668;4255;5045;6001;6054;26052;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/xenbus_coinst.def</ModuleDefinitionFile>
                
-      <AdditionalDependencies>setupapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
                
-      <EnableCOMDATFolding>false</EnableCOMDATFolding>
-      <CETCompat>true</CETCompat>
-    </Link>
-    <ResourceCompile>
-      <AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
                
-    </ResourceCompile>
-    <DriverSign>
-      <FileDigestAlgorithm>sha256</FileDigestAlgorithm>
-    </DriverSign>
-  </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\xenbus_coinst.def" />
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="..\..\src\coinst\xenbus_coinst.rc" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-</Project>
diff --git a/vs2022/xenbus_coinst/xenbus_coinst.vcxproj.user \
b/vs2022/xenbus_coinst/xenbus_coinst.vcxproj.user deleted file mode 100644
index db41a92..0000000
--- a/vs2022/xenbus_coinst/xenbus_coinst.vcxproj.user
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" \
                xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <SignMode>TestSign</SignMode>
-    <TestCertificate>..\..\src\xenbus.pfx</TestCertificate>
-    <TimeStampServer>http://timestamp.verisign.com/scripts/timstamp.dll</TimeStampServer>
                
-  </PropertyGroup>
-</Project>
-- 
2.41.0.windows.3


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic