虚拟通道句柄不能忘记填值,否则服务端收到数据后用一个非法的句柄将报错

 UINT __stdcall CQQCDlg::SendFileThread(LPVOID pimsg)
{
HANDLE file_handle;
char szFileName[128];
TYPE_PACKET *pfilemsg;
TYPE_PACKET filemsg;
ULONG byteWriten;

pfilemsg = (TYPE_PACKET *)pimsg;
strcpy(szFileName,pfilemsg->packet_ctcfa.fullname);

// 打开要发送的文件
file_handle = CreateFile(szFileName, GENERIC_READ, NULL, NULL, OPEN_EXISTING, NULL, NULL);
//开始发送文件,直到文件发送完毕// 打开文件失败没有出错处理
while( ReadFile(file_handle, filemsg.packet_ctcf.buffer, sizeof(filemsg.packet_ctcf.buffer)
 , &filemsg.packet_ctcf.buffer_length, NULL) != 0 )
{
if ( 0 == filemsg.packet_ctcf.buffer_length )
{
// 文件已经读到末尾了
break;
}
if ( filemsg.packet_ctcf.buffer_length < sizeof(filemsg.packet_ctcf.buffer) )
{
            filemsg.cmd_type = WF_CLIENT_TO_CLIENT_COMPLETE;
}
else
{
            filemsg.cmd_type = WF_CLIENT_TO_CLIENT_NORMAL;
}
filemsg.packet_ctcf.rfileHandle = pfilemsg->packet_ctcfa.rfileHandle;
// 虚拟通道句柄不能忘记填值,否则服务端收到数据后用一个非法的句柄将报错
filemsg.packet_ctcf.rhvirChanl = pfilemsg->packet_ctcfa.rhvirChanl;

if ( 0 == WriteFile(hpipe_write, &filemsg, sizeof(TYPE_PACKET), &byteWriten, NULL) )
{
if ( hpipe_write )
{
DisconnectNamedPipe(hpipe_write);
CloseHandle(hpipe_write);
hpipe_write = NULL;
}
}
}
// 发送完毕,关闭句柄
CloseHandle(file_handle);

return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值