BOOL SetDeviceID(HANDLE device,char *id){//
char data[2];
data[0]=0x02;
data[1]=0x27;
DWORD dwPtr=SetFilePointer(device,0x33,//distance
NULL,//
FILE_BEGIN);
if(dwPtr==INVALID_SET_FILE_POINTER) cout<<GetLastError()<<endl;
BOOL result=WriteFile(device,data,2,NULL,NULL);
//cout<<GetLastError()<<endl;
if(result==false)cout<<"Fail WRITE "<<endl;
return TRUE;
}
HANDLE GetDeviceHandle(char *path){
HANDLE handle= CreateFile(LPCSTR(path),
GENERIC_ALL,//
0,
NULL,
OPEN_EXISTING,
NULL,
NULL);
if(handle==INVALID_HANDLE_VALUE){
cout<<"fail to createfile()"<<endl;
exit(1);
}
else return handle;
}
这是我作品的一些代码。
我要直接读/写设备(usb)
在ReadFile()案例中,它成功了。
但是,我试图调用SetFilePointer
但是GetLastError返回87.这意味着输入无效
有什么问题?在我的代码上
很快,CreateFile,ReadFile没问题,但SetFilePointer和WriteFile失败
答案 0 :(得分:0)
当您直接访问磁盘设备时,您无法在扇区中间寻找位置。该位置必须始终是扇区长度的倍数。并且0x33
不是您所在行业的多长。
您需要做的是阅读整个部门。修改需要修改的字节。最后回写整个部门。