打开一个磁带设备,用WriteFile向其写入一个4096大小的数据块,结果报参数错误(87),很是搞不懂错在哪里啊,请大侠指教!部分代码如下:
struct LabelArray
{
char CbArray[1024];
char VgArray[1024];
char VolArray[1024];
char ArcArray[1024];
};
struct Label
{
CommonBlock ComBlk; //结构体
VolumeGroup VgInfo;
Volume VolInfo;
Archive ArcInfo;
};
LabelArray vha;
Label vh;
---------
给vh赋值
--------DWORD WriteCount;memcpy(vha.CbArray,&vh.ComBlk,sizeof(CommonBlock));
memcpy(vha.VgArray,&vh.VgInfo,sizeof(VolumeGroup));
memcpy(vha.VolArray,&vh.VolInfo,sizeof(Volume));
memcpy(vha.ArcArray,&vh.ArcInfo,sizeof(Archive));
if(!WriteFile(hTape,&vha,4096,&WriteCount,NULL))
{
cout<<"Write header to tape failed !Errno: "<<GetLastError()<<endl;
return -1;
}
hTape 为一个确定打开了的句柄.
struct LabelArray
{
char CbArray[1024];
char VgArray[1024];
char VolArray[1024];
char ArcArray[1024];
};
struct Label
{
CommonBlock ComBlk; //结构体
VolumeGroup VgInfo;
Volume VolInfo;
Archive ArcInfo;
};
LabelArray vha;
Label vh;
---------
给vh赋值
--------DWORD WriteCount;memcpy(vha.CbArray,&vh.ComBlk,sizeof(CommonBlock));
memcpy(vha.VgArray,&vh.VgInfo,sizeof(VolumeGroup));
memcpy(vha.VolArray,&vh.VolInfo,sizeof(Volume));
memcpy(vha.ArcArray,&vh.ArcInfo,sizeof(Archive));
if(!WriteFile(hTape,&vha,4096,&WriteCount,NULL))
{
cout<<"Write header to tape failed !Errno: "<<GetLastError()<<endl;
return -1;
}
hTape 为一个确定打开了的句柄.
string str="it is a test,test tape "; HANDLE hDisk;
hDisk=CreateFile("c:\\temp.txt",
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING, // 打开已有的文件.
0,
NULL); if(hDisk==INVALID_HANDLE_VALUE)
{
cout<<"Can not open file "<<GetLastError()<<endl;
return -1;
} DWORD wc;
if(!WriteFile(hDisk,str.c_str(),str.length(),&wc,NULL))
{
cout<<"Can not Write file "<<GetLastError()<<endl;
return -1;
}
cout<<"Write finished !"<<endl;所以我觉得唯一可能出错的就是那个vha,可是我又实在找不出具体错在什么地方,请大侠们帮帮忙啊。非常感谢!