【发布时间】:2011-04-01 19:54:58
【问题描述】:
我正在考虑在服务器中使用WSAAsyncSelect。但是我需要一个窗口来接收消息。
在没有 GUI 的服务器应用程序中是否可以接受这样的(隐藏的)窗口?会不会导致意想不到的问题?
【问题讨论】:
-
您也可以考虑将您的套接字代码移至单独的线程。
标签: c++ winapi user-interface
我正在考虑在服务器中使用WSAAsyncSelect。但是我需要一个窗口来接收消息。
在没有 GUI 的服务器应用程序中是否可以接受这样的(隐藏的)窗口?会不会导致意想不到的问题?
【问题讨论】:
标签: c++ winapi user-interface
使用隐藏窗口可能没问题,甚至更好,使用message only window。
你有什么理由不能使用WSAEventSelect 和事件来代替吗?
【讨论】:
它可能导致问题,如果您对某些可以广播(或恶意直接发送)的消息做出反应。正确的方法是在这种情况下忽略它们。显然,“流氓”进程可能会在隐藏状态下将内容发送到您的窗口。我说这可能是一个问题的原因,因为这正是几年前shatter attacks 所允许的。较高权限的进程接受来自较低权限进程的消息。
在较新的 Windows 版本中,完整性级别和ChangeWindowMessageFilterEx 函数(等)有助于降低风险。
就个人而言,我认为您没有提供足够的数据来以您可能期望的确定性评估情况。我只是想确保您了解,是的,即使对于隐藏的窗口也存在风险,您应该采取预防措施来减轻风险。但我同意安德斯,为什么不使用WSAEventSelect 并放弃窗口?
【讨论】: