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”
就是说 你根本没打开一个有效的文件 ,试问 你怎么写啊 ?