当前位置:  开发笔记 > 编程语言 > 正文

Win32API结构中cbSize成员的用途是什么

如何解决《Win32API结构中cbSize成员的用途是什么》经验,为你挑选了2个好方法。

我经常遇到Win32API结构的一些定义(但不限于它),它们具有cbSize以下示例中的成员.

typedef struct _TEST {
    int cbSize;
    // other members follow
} TEST, *PTEST;

然后我们像这样使用它:

TEST t = { sizeof(TEST) };
...

要么

TEST t;
t.cbSize = sizeof(TEST);
...

我最初的猜测是,这可能会用于版本控制.接收类似于此结构的指针的DLL可以检查该cbSize成员是否具有用于编译DLL的预期值.或者检查是否对结构进行了正确的包装.但是我想在这里.

cbSizeWin32API上某些C++结构中成员的目的是什么?



1> Rob Walker..:

它用于版本控制.一个很好的例子是GetVersionEx调用.您可以传入OSVERSIONINFO或OSVERSIONINFOEX.OSVERSIONINFOEX是OSVERSIONINFO的超集,操作系统知道您传入的唯一方法是dwOSVersionInfoSize成员.



2> Michael Burr..:

我最初的猜测是,这可能会用于版本控制.

这是一个原因.我认为这是比较常见的一个.

另一种是具有可变长度数据的结构.

我不认为在调用者中检查正确的打包或错误是其背后的特殊原因,但它会产生这种效果.

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有