为什么writefile失败?

annkie 2003-08-20 09:37:19
//打开设备
HANDLE hUSB = CreateFile("\\\\.\\Geneusb0,
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL, //Ignored; set to NULL
OPEN_EXISTING,//Specifies which action to take on files that exist
FILE_FLAG_OVERLAPPED,
NULL);
if(hUSB == INVALID_HANDLE_VALUE)
{
::MessageBox(0,"打开USB设备失败!","Error",MB_OK|MB_ICONERROR);
}


//send SendData to usb

DWORD nBytesWritten;
DWORD nBytesToWrite = 8;
BOOL bResult = false;

const char *pData = "SendData";
//send GetData
// strcpy(pszBuffer,"SendData");
// pszBuffer[8] = '\0';

bResult = ::WriteFile((HANDLE)hUSB,
pData,//(LPCVOID)pszBuffer,
(DWORD)nBytesToWrite,
(LPDWORD)&nBytesWritten,
(LPOVERLAPPED)NULL);

ShowSystemErr();
ShowMessage(nBytesWritten);
if(bResult)
{
ShowMessage("write ok");
}
else
{//为什么总是写不进去啊,hUSB返回成功的啊。
ShowMessage("write fail");
}
...全文
538 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyq22 2003-09-02
  • 打赏
  • 举报
回复
如果使用FILE_FLAG_OVERLAPPED打开端口,必须清楚WriteFile和ReadFile是不等待而立刻返回的大量数据读写时,第一次的返回值大多不成功.应该作一个等待循环体.
你可以参考MSDN里的Overlap sample (Winsock TCP AcceptEx overlapped IO)例程.
color918 2003-09-01
  • 打赏
  • 举报
回复
我这几天也碰到这问题,正愁呢!!!!
hansin 2003-08-22
  • 打赏
  • 举报
回复
关注高手解答.............
annkie 2003-08-21
  • 打赏
  • 举报
回复
有的,偶尔会正常,大部分时间是不行了。
说起来麻烦,我写的一个程序却是可以,从一个文件读数据送到usb,再从usb读出来保存到文件,使用同样的代码却不行。
hansin 2003-08-21
  • 打赏
  • 举报
回复
(HANDLE)hUSB里有东西吗?
annkie 2003-08-20
  • 打赏
  • 举报
回复
同步的会提示参数不对.

bResult = ::WriteFile((HANDLE)hUSB,
pData,//(LPCVOID)pszBuffer,
(DWORD)nBytesToWrite,
(LPDWORD)&nBytesWritten,//改为NULL
(LPOVERLAPPED)NULL);//改为(LPOVERLAPPED)&ov

这样又会死掉!
我该怎么办?

21,595

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧