Winapi 为什么WTSFreeMemoryExA在传递WTSTypeSessionInfoLevel1的WTStyPecClass时总是返回错误\u无效\u参数?
根据,Winapi 为什么WTSFreeMemoryExA在传递WTSTypeSessionInfoLevel1的WTStyPecClass时总是返回错误\u无效\u参数?,winapi,remote-desktop,wtsapi32,Winapi,Remote Desktop,Wtsapi32,根据,WTSFreeMemoryExA可以通过传递wtstypesioninfolevel1的值来释放结构。但是,任何尝试都会失败,错误代码为87(error\u INVALID\u PARAMETER,“参数不正确”) 如何使WTSFreeMemoryExA正常工作?这似乎是Windows中的一个错误(至少在Windows 10 2004版中是如此)。与文档相反,WTSFreeMemoryExA函数不接受wtstypesioninfolevel1,而WTSFreeMemoryExW则接受。这意
WTSFreeMemoryExA
可以通过传递wtstypesioninfolevel1
的值来释放结构。但是,任何尝试都会失败,错误代码为87(error\u INVALID\u PARAMETER
,“参数不正确”
)
如何使WTSFreeMemoryExA正常工作?这似乎是Windows中的一个错误(至少在Windows 10 2004版中是如此)。与文档相反,
WTSFreeMemoryExA
函数不接受wtstypesioninfolevel1
,而WTSFreeMemoryExW
则接受。这意味着,您需要使用返回结构的函数,而不是使用返回结构的函数
此错误有效地使WTSEnumerateSessionsExA
无法使用,除非您不关心由于无法释放其结果而导致的内存泄漏。这个bug应该已经被了解了一段时间了。(希望有一天微软能解决这个问题。)
声称即使使用
wtsenumeratesessionexw
和WTSFreeMemoryExW
也会泄漏内存,这意味着wtsenumeratessions
与WTSQuerySessionInformation
结合使用可能会导致内存泄漏。然而,我本人无法再现这一问题。我怀疑这在某一点上是一个真正的问题,但是微软在最近的Windows版本中已经解决了。这似乎是Windows中的一个错误(至少在Windows 10版本2004中)。与文档相反,WTSFreeMemoryExA
函数不接受wtstypesioninfolevel1
,而WTSFreeMemoryExW
则接受。这意味着,您需要使用返回结构的函数,而不是使用返回结构的函数
此错误有效地使WTSEnumerateSessionsExA
无法使用,除非您不关心由于无法释放其结果而导致的内存泄漏。这个bug应该已经被了解了一段时间了。(希望有一天微软能解决这个问题。)
声称即使使用
wtsenumeratesessionexw
和WTSFreeMemoryExW
也会泄漏内存,这意味着wtsenumeratessions
与WTSQuerySessionInformation
结合使用可能会导致内存泄漏。然而,我本人无法再现这一问题。我怀疑这在某一点上是一个真正的问题,但是微软在最近的Windows版本中已经解决了这个问题。谢谢你提出这个问题
我们检查了相关的源代码,找到了与WTSFreeMemoryA
相关的源代码。它接受第一个参数WTSTypeClass
作为WTSTypeProcessInfoLevel0
或WTSTypeProcessInfoLevel1
,但不接受值wtstypepsessioninfolevel1
,因此在此调用中返回错误\u无效\u参数
错误
这与文件中的描述不同,我们将提交此问题。您可以尝试使用
WTSFreeMemoryW
来避免此问题。谢谢您提出此问题
我们检查了相关的源代码,找到了与WTSFreeMemoryA
相关的源代码。它接受第一个参数WTSTypeClass
作为WTSTypeProcessInfoLevel0
或WTSTypeProcessInfoLevel1
,但不接受值wtstypepsessioninfolevel1
,因此在此调用中返回错误\u无效\u参数
错误
这与文件中的描述不同,我们将提交此问题。您可以尝试使用
WTSFreeMemoryW
来避免此问题。您好,我现在可以重现此问题。我会和内部工程师确认,如果有任何更新,我会在这里回复。感谢您的理解。使用WTS_SESSION_INFO_1A可能是用户代码中的一个错误,因为您不需要我解释为什么首选Unicode API。因此,修复这个缺陷并不是一个高优先级的问题。@DavidHeffernan从历史上看,您所说的是正确的,但随着W-over-a偏好的引入,可以说不再适用,所以这个bug的优先级将比以前更高。使用API而不是W的UTF-8代码页应用程序不是bug。使用UTF-8代码页,现在API也是Unicode的。(W=UTF-16,A=UTF-8)。@Simon这是一个公平的观点嗨,我现在可以复制这个问题了。我会和内部工程师确认,如果有任何更新,我会在这里回复。感谢您的理解。使用WTS_SESSION_INFO_1A可能是用户代码中的一个错误,因为您不需要我解释为什么首选Unicode API。因此,修复这个缺陷并不是一个高优先级的问题。@DavidHeffernan从历史上看,您所说的是正确的,但随着W-over-a偏好的引入,可以说不再适用,所以这个bug的优先级将比以前更高。使用API而不是W的UTF-8代码页应用程序不是bug。使用UTF-8代码页,现在API也是Unicode的。(W=UTF-16,A=UTF-8)。@Simon说得对,谢谢你的回答。当你说WTSFreeMemoryA
时,你的意思是WTSFreeMemoryExA
,对吗?(同样适用于WTSFreeMemoryW
)另外,我知道您是Microsoft员工?在你的回答中澄清这一点可能是好的。(否则人们会想知道你是如何检查Windows源代码的。)谢谢你的回复。当你说WTSFreeMemoryA
时,你的意思是WTSFreeMemoryExA
,对吗?(同样适用于WTSFreeMemoryW
)另外,我知道您是Microsoft员工?在你的回答中澄清这一点可能是好的。(否则人们会想知道您是如何检查Windows源代码的。)