Well, this ended up being way too simple. Here's what I'm using:
vb Code:
Private Sub SetMyFilePointer(hDevice As Long, dblPos As Currency)
Dim tmpPos As Long, tmpPos2 As Long
Dim MyPos As Currency
MyPos = 0
tmpPos = 2147483646
If dblPos <= tmpPos Then
' it's less than or equal to 2gb so no need to loop
Call SetFilePointer(hDevice, dblPos, ByVal 0&, FILE_BEGIN)
Else
Do While dblPos > MyPos
If dblPos - MyPos <= tmpPos Then
tmpPos2 = dblPos - MyPos
' there's less than or equal to 2gb left so make one last call
Call SetFilePointer(hDevice, tmpPos2, 0, FILE_CURRENT)
Exit Sub
Else
' there's more than 2gb left so read another 2gb and loop
Call SetFilePointer(hDevice, tmpPos, 0, FILE_CURRENT)
MyPos = MyPos + tmpPos
End If
Loop
End If
End Sub