All of lore.kernel.org
 help / color / mirror / Atom feed
* WinPv driver 64bit patch
@ 2008-07-08  5:10 Wayne Gong
  2008-07-08  5:13 ` James Harper
  2008-07-09  0:44 ` James Harper
  0 siblings, 2 replies; 5+ messages in thread
From: Wayne Gong @ 2008-07-08  5:10 UTC (permalink / raw)
  To: xen-devel@lists.xensource.com, James Harper


[-- Attachment #1.1: Type: text/plain, Size: 118 bytes --]

Hi James,

This patch can help WinPv driver work fine on Windows 2003 x64 version.
Please review.

Best regards
Wayne

[-- Attachment #1.2: Type: text/html, Size: 325 bytes --]

[-- Attachment #2: 64bit.patch --]
[-- Type: text/plain, Size: 2103 bytes --]

# HG changeset patch
# User Wayne Gong <wayne.gong@oracle.com>
# Date 1215493632 -28800
# Node ID dbaf8f156f3f4cd6f6acc5a10cdf1d282809d1ff
# Parent  bfc6e1f99b4fcbd4a5d20b1392d28be66fd310fc
Let winpv work for win2k3_x64.

diff -r bfc6e1f99b4f -r dbaf8f156f3f xenhide/xenhide.c
--- a/xenhide/xenhide.c	Tue Jul 08 13:04:41 2008 +0800
+++ b/xenhide/xenhide.c	Tue Jul 08 13:07:12 2008 +0800
@@ -171,12 +171,12 @@
 XenHide_IdSuffixMatches(PDEVICE_OBJECT pdo, PWCHAR matching_id)
 {
   NTSTATUS status;
-  ULONG remaining;
-  ULONG string_length;
+  ULONG cmpLen = 0;
   WCHAR ids[512];
   PWCHAR ptr;
   ULONG ids_length;
   int i;
+  size_t j = 0;
   
   for (i = 0; i < 2; i++)
   {
@@ -190,20 +190,29 @@
       //KdPrint((__DRIVER_NAME "     i = %d, status = %x, ids_length = %d\n", i, status, ids_length));
       continue;
     }
-    
-    remaining = ids_length / 2;
-    for (ptr = ids; *ptr != 0; ptr += string_length + 1)
+    ptr = ids;
+    for (j = 0; j < 512 - 3; j++)
     {
-      RtlStringCchLengthW(ptr, remaining, (size_t *)&string_length);
-      remaining -= string_length - 1;
-      if (string_length >= wcslen(matching_id))
+      if (ids[j] == L'V' && ids[j+1] == L'E' && ids[j+2] == L'N')
+      {  
+        ptr = ids + j;
+        cmpLen = 17; // "VEN_10EC&DEV_8139"
+        break;
+      }
+      if (ids[j] == L'P' && ids[j+1] == L'N' && ids[j+2] == L'P')
       {
-        ptr += string_length - wcslen(matching_id);
-        string_length -= (ULONG)wcslen(matching_id);
+        ptr = ids + j;
+        cmpLen = 7; // "PNP0A03"
+        break;
       }
-      //KdPrint((__DRIVER_NAME "     Comparing '%S' and '%S'\n", ptr, matching_id));
-      if (wcscmp(ptr, matching_id) == 0)
-       return TRUE;
+    }
+    if (j == 512 - 3)
+      break;
+    //KdPrint((__DRIVER_NAME "     Comparing '%S' and '%S'\n", ptr, matching_id));
+    if (wcsncmp(ptr, matching_id, cmpLen) == 0)
+    {
+      //KdPrint((__DRIVER_NAME "     Matched\n"));
+      return TRUE;
     }
   }
   //KdPrint((__DRIVER_NAME "     No match\n"));  

[-- Attachment #3: Type: text/plain, Size: 138 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2008-07-09  1:14 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-07-08  5:10 WinPv driver 64bit patch Wayne Gong
2008-07-08  5:13 ` James Harper
2008-07-08  5:22   ` Wayne Gong
2008-07-09  0:44 ` James Harper
2008-07-09  1:14   ` James Harper

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.