Newsgroup: it.comp.lang.visual-basic
Titolo: CreateFile e USB.

Ciao,
ho comprato una periferica di memoria USB che sfrutta un particolare driver
( 
http://www.thesycon.de/eng/index.htm
 ) che non č quello utilizzato di
solito dai dispositivi come PenDrive o hard disk USB.
Secondo la documentazione non si puň accedere con windows agli oggetti in
modo diretto (ad es con oggetti come DirListBox FileListBox non si puň
accedere alla periferica) ma con API come la CreateFile (che tra l'altro
nemmeno conoscevo!!).
Mi sono documentato un po' con google e riesco a ricevere l'handle.
Vi spiego quello che vorrei fare io : leggere e scrivere sopra questa
periferica .
Come posso fare con la CreateFile o comunque grazie ad essa funzione?
So che posso aprire dei file ( io ad esempio ora le passo una stringa simile
a questa \\?\usb#vid_040b&pid_6520#5&2a2498a&0&1PathName ->
\\?\usb#vid_040b&pid_6520#5&2a2498a&0&1#{325ddf96-938c-11d3-9e34-0080c82727f
4}PathName ->
\\?\usb#vid_040b&pid_6520#5&2a2498a&0&1#{325ddf96-938c-11d3-9e34-0080c82727f
4} ) che mi passa la libreria USBIOCOMLib.USBIOInterface2 con DevicePathName
.
Quindi con la CreateFile accedo ad un percorso.
Ma se io voglio la lista dei file di quel percorso e poi li voglio
"scaricare" sul computer?
E viceversa, voglio scriverci tot file sopra?
ho provato a documentarmi su 
www.allapi.net
 o con google , ma vedo che con
questa funzione ci si fa veramente tutto (accedono anche alle com1).
Grazie a tutti!
MarLaw
Ps Incollo il codice che uso :)
Option Explicit
Dim WithEvents Device0 As USBIOCOMLib.USBIOInterface2
Dim MyState            As Long
Dim MyDev              As Long
Private Const GENERIC_WRITE = &H40000000
Private Const OPEN_EXISTING = 3
Private Const FILE_SHARE_READ = &H1
Private Const FILE_SHARE_WRITE = &H2
Private Const INVALID_HANDLE_VALUE = -1
Private Declare Function CreateFile Lib "Kernel32" Alias "CreateFileA"
(ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal
dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal
dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal
hTemplateFile As Long) As Long
Private Sub CmdClear_Click()
LstX.Clear
End Sub
Private Sub CmdConnect_Click()
'On Error Resume Next
Set Device0 = New USBIOCOMLib.USBIOInterface2
'On Error Resume Next
'Rem enumerate all MyDev
Device0.EnumerateDevices "{325ddf96-938c-11d3-9e34-0080c82727f4}", MyDev
'Rem open the first USB device connected to the USBIO device driver
Device0.OpenDevice 0, MyState
LstX.AddItem "Connected at -> " & Time
End Sub
Private Sub CmdPath_Click()
Dim MyPath As String
MyPath = Device0.DevicePathName
Debug.Print "PathName -> " & MyPath
LstX.AddItem "PathName -> " & MyPath
'LstX.AddItem Dir(MyPath)
'Name File.Path & "\" & File.FileName As App.Path & "\" & File.FileName
'Name File.Path & "\" & File.FileName As MyPath & "\" & File.FileName
'Debug.Print "OK"
Dim RetVal
RetVal = CreateFile(MyPath, GENERIC_WRITE, FILE_SHARE_READ Or
FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
'LstX.AddItem "File Moved -> " & File.FileName
LstX.AddItem RetVal
LstX.AddItem Dir(RetVal)
'RetVal = CreateFile(MyPath, GENERIC_WRITE, 0, Null, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, Null)
'LstX.AddItem Device0.ReadData(
End Sub
'Come vedete ho provato ad usare gli oggetti comuni o funzioni comuni ma non
funzionano e quindi ho commentato tutto.

"MarLaw"
[Snip]
 ( io ad esempio ora le passo una stringa simile
[/Snip]
Avevo incollato male...le passo solo questa.
\\?\usb#vid_040b&pid_6520#5&2a2498a&0&1#{325ddf96-938c-11d3-9e34-0080c82727f
:)