本文介绍了VirtualChannelsInit Stuck的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 您好! 我正在为虚拟频道创建客户端dll。我开始陷入困境。 HANDLE ClientHandle = NULL; CHANNEL_DEF pChannel [1]; CHANNEL_ENTRY_POINTS SavedEntryPoints; PCHANNEL_INIT_EVENT_FN pChannelInitEventProc; BOOL VCAPITYPE VirtualChannelEntry(PCHANNEL_ENTRY_POINTS pEntryPoints) { ofstream myfile; myfile.open(" D:\\Projects\\bench_cli \\ConsoleApplication1 \\Release \\ example.txt"); myfile<< "将其写入文件。\ n"; UINT retval1 = 0; ZeroMemory(& pChannel [0],sizeof(CHANNEL_DEF)); strcpy(pChannel [0] .name," Bench"); pChannel [0] .options = CHANNEL_OPTION_ENCRYPT_RDP | CHANNEL_OPTION_COMPRESS_RDP; pChannelInitEventProc = VirtualChannelInitEvent; memcpy(& SavedEntryPoints,pEntryPoints,sizeof(CHANNEL_ENTRY_POINTS)); myfile<< "复制" << ENDL; //使用中的函数指针调用VirtualChannelInit // PCHANNEL_ENTRY_POINTS myfile<< " INITING" << ENDL; retval1 = pEntryPoints-> pVirtualChannelInit(& ClientHandle, pChannel,1,VIRTUAL_CHANNEL_VERSION_WIN2000, pChannelInitEventProc); myfile<< " INIT" << ENDL; myfile.close(); 返回TRUE; } VOID VCAPITYPE VirtualChannelInitEvent(LPVOID pInitHandle,UINT事件,LPVOID pData,UINT dataLength) { ... } on  pEntryPoints-> pVirtualChannelInit dll stucks ,它不会返回任何错误代码,所以我永远不会得到字符串"init"打印。 调试器显示pEntryPoints中的地址是这样的: pVirtualChannelInit -   0x00000004 pVirtualChannelOpen   -   0x0000ffff pVirtualChannelClose -   0x000000b8 pVirtualChannelWrite -   0x00000000 此后RDP会话有效。我做错了什么? 解决方案 Hello!I'm creating client dll for virtual channel. And I got stuck in the beginning.HANDLE ClientHandle = NULL;CHANNEL_DEF pChannel[1];CHANNEL_ENTRY_POINTS SavedEntryPoints;PCHANNEL_INIT_EVENT_FN pChannelInitEventProc;BOOL VCAPITYPE VirtualChannelEntry(PCHANNEL_ENTRY_POINTS pEntryPoints){ofstream myfile;myfile.open ("D:\\Projects\\bench_cli\\ConsoleApplication1\\Release\\example.txt");myfile << "Writing this to a file.\n";UINT retval1 = 0;ZeroMemory(&pChannel[0], sizeof(CHANNEL_DEF));strcpy(pChannel[0].name, "Bench");pChannel[0].options = CHANNEL_OPTION_ENCRYPT_RDP | CHANNEL_OPTION_COMPRESS_RDP;pChannelInitEventProc = VirtualChannelInitEvent;memcpy(&SavedEntryPoints, pEntryPoints, sizeof(CHANNEL_ENTRY_POINTS));myfile << " copied" << endl;// call VirtualChannelInit using the function pointer in// PCHANNEL_ENTRY_POINTSmyfile << "Initing" << endl;retval1 = pEntryPoints->pVirtualChannelInit (&ClientHandle,pChannel, 1, VIRTUAL_CHANNEL_VERSION_WIN2000,pChannelInitEventProc);myfile << " init" << endl; myfile.close(); return TRUE;}VOID VCAPITYPE VirtualChannelInitEvent( LPVOID pInitHandle, UINT event, LPVOID pData, UINT dataLength){...}On pEntryPoints->pVirtualChannelInit dll stucks, it doesn't return any error code, so I never get string "init" printed.Debugger show that addresses in pEntryPoints are like that:pVirtualChannelInit - 0x00000004pVirtualChannelOpen  - 0x0000ffff pVirtualChannelClose - 0x000000b8pVirtualChannelWrite - 0x00000000RDP session works after this. What am I doing wrong? 解决方案 这篇关于VirtualChannelsInit Stuck的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
10-19 22:42