【发布时间】:2014-06-16 10:27:03
【问题描述】:
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 失败了
【问题讨论】:
-
device是什么,你从哪里得到的?您的代码看起来不够相关和干净。 -
设备来自 main() 请假设 HANDLE 参数有效。我已经用 ReadFile() 检查了这个值
-
是的,我的设备是usb
-
顺便说一句,不要声明函数
HANDLE GetDeviceHandle(char *path)。这迫使你投到LPCSTR。而是声明参数const char *path。
标签: winapi