[G1 Android Development] aziwoqpd:
adb_fixed just includes this patch: http://www.telesphoreo.org/pipermail/g1-hackers/2008-December/000191.html

I've attached a diff of the changes I made to the driver. Basically the only difference is that a pointer used for communication between the 32bit DLL and the 64bit driver needs to be explicitly defined as a 32bit pointer so that it's only 4 bytes wide. I also changed the version of Microsoft's WDF library to 1.7 since that's what I already had installed.

You'll also need the driver development kit (the WDK) from Microsoft to compile and link the thing. It's a (big!) free download, though. Just google for "WDK". It includes a command line utility called "build" that's not unlike make for userland code (you can try to use Google's Visual Studio files, but you'll have to hack them to work with x64 and they just end up calling build.exe anyway). For Vista you'll also have to test-sign the driver with a dummy certificate (the WDK help files have a walkthrough somewhere covering this). Or you could pay $300 a year to globalsign for a key! What a deal....

Hmm, it's not letting me attach the file. I'll just paste it:

diff -U4 -r ./common/android_usb_common_defines.h /mnt/sukiyaki/dev/andusb/common/android_usb_common_defines.h
--- ./common/android_usb_common_defines.h	2008-10-31 17:43:13.000000000 -0700
+++ /mnt/sukiyaki/dev/andusb/common/android_usb_common_defines.h	2008-11-14 14:18:51.439171200 -0800
@@ -132,8 +132,8 @@
ULONG transfer_size;

/// Pointer to the actual buffer for ADB_CTL_BULK_WRITE request. This field
/// is not used in ADB_CTL_BULK_READ request.
- void* write_buffer;
+ void* POINTER_32 write_buffer;
};

#endif // ANDROID_USB_COMMON_DEFINES_H__
diff -U4 -r ./driver/android_usb.inf /mnt/sukiyaki/dev/andusb/driver/android_usb.inf
--- ./driver/android_usb.inf	2008-10-31 17:43:13.000000000 -0700
+++ /mnt/sukiyaki/dev/andusb/driver/android_usb.inf	2008-11-14 15:54:04.556495700 -0800
@@ -10,9 +10,9 @@
Class=USB
ClassGuid={F72FE0D4-CBCB-407d-8814-9ED673D0DD6B}
Provider=%GOOG%
DriverVer=date,1.0.0009.00000
-CatalogFile=androidusb.cat
+;CatalogFile=androidusb.cat

; ================= Class section =====================

[ClassInstall32]
@@ -27,9 +27,9 @@

; ================= Device section =====================

[Manufacturer]
-%MfgName%=Google,NTx86
+%MfgName%=Google,NTamd64

; For Win2K
[Google]
; For loopback testing
@@ -38,9 +38,9 @@
%USB\VID_0BB4&PID_0C01.DeviceDescRelease%=androidusb.Dev, USB\VID_0BB4&PID_0C01
%USB\VID_0BB4&PID_0C02&MI_01.DeviceDescRelease%=androidusb.Dev, USB\VID_0BB4&PID_0C02&MI_01

; For XP and later
-[Google.NTx86]
+[Google.NTamd64]
; For loopback testing
%USB\VID_18D1&PID_DDDD.DeviceDescTest%=androidusb.Dev, USB\VID_18D1&PID_DDDD
; HTC Dream
%USB\VID_0BB4&PID_0C01.DeviceDescRelease%=androidusb.Dev, USB\VID_0BB4&PID_0C01
@@ -85,21 +85,21 @@
AddReg=CoInstaller_AddReg
CopyFiles=CoInstaller_CopyFiles

[CoInstaller_CopyFiles]
-wdfcoinstaller01005.dll
+wdfcoinstaller01007.dll

[SourceDisksFiles]
-wdfcoinstaller01005.dll=1 ; make sure the number matches with SourceDisksNames
+wdfcoinstaller01007.dll=1 ; make sure the number matches with SourceDisksNames

[CoInstaller_AddReg]
-HKR,,CoInstallers32,0x00010000, "wdfcoinstaller01005.dll,WdfCoInstaller"
+HKR,,CoInstallers32,0x00010000, "wdfcoinstaller01007.dll,WdfCoInstaller"

[androidusb.Dev.NT.Wdf]
KmdfService = androidusb, androidusb_wdfsect

[androidusb_wdfsect]
-KmdfLibraryVersion = 1.5
+KmdfLibraryVersion = 1.7

;---------------------------------------------------------------;

[Strings]