为什么TH32CS_SNAPMODULE32不能单独工作?

我在WinAPI中尝试了一些东西。 我的操作系统是Win7 x64 P1 Ultimate。 当我试图列出进程的所有模块时,我发现我想要的模块是32位模块,所以我更换了

TH32CS_SNAPMODULE 

 TH32CS_SNAPMODULE32 

在此之后没有显示任何模块。 所以我决定尝试使用按位运算符,看起来像我发送这样的参数

 TH32CS_SNAPMODULE32 | TH32CS_SNAPMODULE 

它工作得非常好,列出了所有64位和32位模块。 所以我的问题是为什么它不能单独工作? 甚至文档都说它可以TH32CS_SNAPMODULE一起使用。

从MSDN引用

TH32CS_SNAPMODULE32

包括从64位进程调用时快照中th32ProcessID中指定的进程的所有32位模块。 该标志可与TH32CS_SNAPMODULE或TH32CS_SNAPALL组合使用。 如果函数失败并显示ERROR_BAD_LENGTH,请重试该函数,直到成功为止。

该文件无疑令人困惑。 这意味着TH32CS_SNAPMODULE32标志必须与另一个标志组合,但只能TH32CS_SNAPMODULETH32CS_SNAPALL结合使用。

在这个官方答案TH32CS_SNAPMODULE与TH32CS_SNAPMODULE32中只有稍微好一点的措辞 – 请注意“ 额外 ”:

根据开发团队的反馈,TH32CS_SNAPMODULE将为您提供本机模块。 您可以在TH32CS_SNAPMODULE32上使用TH32CS_SNAPMODULE在64位盒子上获得32位模块。 存在表示您需要额外的 32位模块状态。