当前位置: 代码迷 >> 驱动开发 >> 怎么实现简单的 读/写 操作 (附代码)
  详细解决方案

怎么实现简单的 读/写 操作 (附代码)

热度:397   发布时间:2016-04-28 11:11:21.0
求助:如何实现简单的 读/写 操作 (附代码)
void   doWrite(int   n)
{
char *buf,*f;
ULONG nWritten;
int i;
int j;

buf   =   (char   *)   malloc(n);

if   (buf   ==   NULL)
{
printf( "Failed   to   allocate   buffer   for   write ");
Exit(1);
}

for   (i=0;i <32;i++)
{
buf[i]   =   i;
}
//   Write   data   to   driver
printf( "Writing   to   device   -   ");
WriteFile(hDevice,   buf,   n,   &nWritten,   NULL);
                  printf( "%d   bytes   written   to   device   (%d   attempted).\n ",   nWritten,   n);

f=buf;
for(i=0;i <2;i++)
{
for(j=0;j <16;j++)
{
fprintf(stderr, "%02x     ",*f++);
}
printf( "\n ");
}

free(buf);
}
为什么每次操作后   nWritten=0   这是为什么啊,应该是nWritten=32才对啊
那位高手,知道我什么地方错了吗?请指点小弟一下,我先拜谢了!

LONG   nRead;
同样还有一个ReadFile(hDevice,   buf,   n,   &nRead,   NULL);
他的nRead是那里来得啊?(在这两条语句中间没有任何关于nRead的代码信息!)

------解决方案--------------------
你先确定,你调用doWrite();的时候是给了32进去吗?

另一个,看看硬件上有没有问题,WriteFile()可能没执行成功


------解决方案--------------------
writefile 函数是你自己实现的吧!这个具体的没有代码,大家可能都不好理解把
------解决方案--------------------
在向文件中写入数据前 你要先打开这个文件 。使用createfile。
打开后 再判断一下返回的句柄 就是那个(hDevice 判断他是否有效。

哇塞 ,刚看到你的这句“尤其是 hDevice 这个参数!
我目前定义的hDevice为:HANDLE hDevice=INVALID_HANDLE_VALUE”
就是说 你根本没打开一个有效的文件 ,试问 你怎么写啊 ?
  相关解决方案