症状:没法初始化虚拟通道,返回错误码6,在Cchannel.h中找到答案,
#define CHANNEL_RC_BAD_CHANNEL 6
原因:
The
pChannel parameter is incorrect or one of the channel names is syntactically incorrect.
这里顺便插入初始化虚拟通道的函数,因为要解释其中的一个参数 pChannel
typedef UINT ( VCAPITYPE *VirtualChannelInit )( LPVOID* ppInitHandle , PCHANNEL_DEF pChannel , INT channelCount , ULONG versionRequested , PCHANNEL_INIT_EVENT_FN pChannelInitEventProc );
PCHANNEL_DEF pChannel ,
再来看pChannel 的定义
typedef struct tagCHANNEL_DEF {
char name[CHANNEL_NAME_LEN + 1];
ULONG options; } CHANNEL_DEF,
*PCHANNEL_DEF,
**PPCHANNEL_DEF;
找到name这个参数,这里有个最大长度CHANNEL_NAME_LEN 找到这个值看看,基本上问题就解决了。
在Pchannel.h文件中找到了它的定义
而我定义的虚拟通道名字是
#define CHANNELNAME "VIRCHANEL"
一个九个字符超过了最大长度7
经过跟踪调试,发现变量值为
cd.name 0x010afdac "VIRCHANEL" char [8]
[7]
69 'E'
char
丢失了一个字符