我的目标是读/写usb。
首先必须打开并阅读usb低级别,如'program'
我在winAPI中使用了visual c ++
下面是我的测试代码
char path[64];
sprintf(path,"\\\\.\\%c:",volume);//
/////MOST case, user's input is F or G ......
HANDLE usb;
usb=CreateFile(TEXT(path),
GENERIC_ALL,//
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, //serail I/O
NULL);
if(usb==INVALID_HANDLE_VALUE) cout<<"fail to createfile()"<<endl;
cout<<usb<<endl;
char buf[128];
DWORD dwBytesRead=0;
ReadFile(usb,buf,sizeof(buf),&dwBytesRead,NULL);
cout<<buf<<endl;
cout<<GetLastError()<<endl;
CloseHandle(usb);
我想知道CreateFile是否正确和ReadFile
ReadFile()的GetLastError()为87表示无效输入...
有什么不对?
我多次引用MSDN ......但是任何页面都无法解决这个问题....
我应该知道什么?解决它?
答案 0 :(得分:2)
缓冲区的大小必须等于N *(驱动器的扇区大小),其中N是DWORD值。可以使用DeviceIoControl(Handle,IOCTL_DISK_GET_DRIVE_GEOMETRY,...,DISK_GEOMETRY,...)接收扇区大小。