win-pvdrivers

changeset 372:649b05070ede

Fixed hang bug in xenhide on x64.
Reordered driver installation in installer to try and reduce the number of popups on install.
author James Harper <james.harper@bendigoit.com.au>
date Wed Jul 09 20:16:36 2008 +1000 (2008-07-09)
parents 2ff96a909c28
children 6b1c00d218e9
files common.inc installer.nsi xenhide/xenhide.c
line diff
     1.1 --- a/common.inc	Mon Jul 07 22:46:08 2008 +1000
     1.2 +++ b/common.inc	Wed Jul 09 20:16:36 2008 +1000
     1.3 @@ -1,4 +1,4 @@
     1.4 -VERSION=0.9.10.5
     1.5 +VERSION=0.9.10.7
     1.6  TARGETPATH=..\Target\$(DDK_TARGET_OS)
     1.7  MSC_WARNING_LEVEL=/W4
     1.8  INCLUDES = ..\common\include;..\common\include\public
     2.1 --- a/installer.nsi	Mon Jul 07 22:46:08 2008 +1000
     2.2 +++ b/installer.nsi	Wed Jul 09 20:16:36 2008 +1000
     2.3 @@ -3,7 +3,7 @@
     2.4  
     2.5  !define AppName "Xen PV Drivers"
     2.6  !define StartMenu "$SMPROGRAMS\${AppName}"
     2.7 -!define Version "0.9.11-pre5"
     2.8 +!define Version "0.9.11-pre6"
     2.9  #!define Version "$%VERSION%"
    2.10  Name "${AppName}"
    2.11  InstallDir "$PROGRAMFILES\${AppName}"
    2.12 @@ -176,11 +176,6 @@ SectionEnd
    2.13  
    2.14  Section "Install Drivers" installdrivers
    2.15    Push "$INSTDIR\drivers"
    2.16 -  Push "$INSTDIR\drivers\xenpci.inf"
    2.17 -  Push "PCI\VEN_5853&DEV_0001"
    2.18 -  Call InstallUpgradeDriver
    2.19 -
    2.20 -  Push "$INSTDIR\drivers"
    2.21    Push "$INSTDIR\drivers\xennet.inf"
    2.22    Push "XEN\VIF"
    2.23    Call InstallUpgradeDriver
    2.24 @@ -209,6 +204,11 @@ Section "Install Drivers" installdrivers
    2.25    Push "$INSTDIR\drivers\xenstub.inf"
    2.26    Push "XEN\VKBD"
    2.27    Call InstallUpgradeDriver
    2.28 +
    2.29 +  Push "$INSTDIR\drivers"
    2.30 +  Push "$INSTDIR\drivers\xenpci.inf"
    2.31 +  Push "PCI\VEN_5853&DEV_0001"
    2.32 +  Call InstallUpgradeDriver
    2.33  SectionEnd
    2.34  
    2.35  Var arch
     3.1 --- a/xenhide/xenhide.c	Mon Jul 07 22:46:08 2008 +1000
     3.2 +++ b/xenhide/xenhide.c	Wed Jul 09 20:16:36 2008 +1000
     3.3 @@ -172,12 +172,13 @@ XenHide_IdSuffixMatches(PDEVICE_OBJECT p
     3.4  {
     3.5    NTSTATUS status;
     3.6    ULONG remaining;
     3.7 -  ULONG string_length;
     3.8 +  size_t string_length;
     3.9    WCHAR ids[512];
    3.10    PWCHAR ptr;
    3.11    ULONG ids_length;
    3.12    int i;
    3.13    
    3.14 +//  KdPrint((__DRIVER_NAME " --> " __FUNCTION__ "\n"));
    3.15    for (i = 0; i < 2; i++)
    3.16    {
    3.17      if (i == 0)
    3.18 @@ -187,26 +188,29 @@ XenHide_IdSuffixMatches(PDEVICE_OBJECT p
    3.19        
    3.20      if (!NT_SUCCESS(status))
    3.21      {
    3.22 -      //KdPrint((__DRIVER_NAME "     i = %d, status = %x, ids_length = %d\n", i, status, ids_length));
    3.23 +//      KdPrint((__DRIVER_NAME "     i = %d, status = %x, ids_length = %d\n", i, status, ids_length));
    3.24        continue;
    3.25      }
    3.26      
    3.27      remaining = ids_length / 2;
    3.28      for (ptr = ids; *ptr != 0; ptr += string_length + 1)
    3.29      {
    3.30 -      RtlStringCchLengthW(ptr, remaining, (size_t *)&string_length);
    3.31 -      remaining -= string_length - 1;
    3.32 +      RtlStringCchLengthW(ptr, remaining, &string_length);
    3.33 +      remaining -= (ULONG)string_length + 1;
    3.34        if (string_length >= wcslen(matching_id))
    3.35        {
    3.36          ptr += string_length - wcslen(matching_id);
    3.37 -        string_length -= (ULONG)wcslen(matching_id);
    3.38 +        string_length = (ULONG)wcslen(matching_id);
    3.39        }
    3.40 -      //KdPrint((__DRIVER_NAME "     Comparing '%S' and '%S'\n", ptr, matching_id));
    3.41 +//      KdPrint((__DRIVER_NAME "     Comparing '%S' and '%S'\n", ptr, matching_id));
    3.42        if (wcscmp(ptr, matching_id) == 0)
    3.43 -       return TRUE;
    3.44 +      {
    3.45 +        KdPrint((__DRIVER_NAME " <-- " __FUNCTION__ " (Match)\n"));
    3.46 +        return TRUE;
    3.47 +      }
    3.48      }
    3.49    }
    3.50 -  //KdPrint((__DRIVER_NAME "     No match\n"));  
    3.51 +//  KdPrint((__DRIVER_NAME " <-- " __FUNCTION__ " (No match)\n"));
    3.52    return FALSE;
    3.53  }
    3.54