Well, this ended up being way too simple. Here's what I'm using:

vb Code:
  1. Private Sub SetMyFilePointer(hDevice As Long, dblPos As Currency)
  2.     Dim tmpPos As Long, tmpPos2 As Long
  3.     Dim MyPos As Currency
  4.    
  5.     MyPos = 0
  6.     tmpPos = 2147483646
  7.    
  8.     If dblPos <= tmpPos Then
  9.         ' it's less than or equal to 2gb so no need to loop
  10.         Call SetFilePointer(hDevice, dblPos, ByVal 0&, FILE_BEGIN)
  11.     Else
  12.         Do While dblPos > MyPos
  13.             If dblPos - MyPos <= tmpPos Then
  14.                 tmpPos2 = dblPos - MyPos
  15.                 ' there's less than or equal to 2gb left so make one last call
  16.                 Call SetFilePointer(hDevice, tmpPos2, 0, FILE_CURRENT)
  17.                 Exit Sub
  18.             Else
  19.                 ' there's more than 2gb left so read another 2gb and loop
  20.                 Call SetFilePointer(hDevice, tmpPos, 0, FILE_CURRENT)
  21.                 MyPos = MyPos + tmpPos
  22.             End If
  23.         Loop
  24.     End If
  25. End Sub