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

标签 c++ winapi api

我经常遇到一些具有 cbSize 成员的 Win32API 结构(但不限于此)的定义,如下例所示。

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

然后我们像这样使用它:

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

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

我最初的猜测是这可能用于版本控制。像这样接收结构指针的 DLL 可以检查 cbSize 成员是否具有用于编译 DLL 的预期值。或者检查是否为结构完成了正确的包装。但我想听听您的意见。

在 Win32API 的一些 C++ 结构中,cbSize 成员的用途是什么?

最佳答案

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

关于c++ - Win32API 结构中 cbSize 成员的用途是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/189622/

相关文章:

c# - 如何禁用向上/向下键滚动 Visual Studio 中的方法重载?

c++ - 如何停止qt中的分离进程?

c - 如何为 BITMAP 设置像素数据存储

javascript - 带有用户输入的 API 查询

api - 如何在Golang中从服务器发送Websocket

c++ - 可以单独声明和初始化智能指针吗?

c++ - 这在技术上是 O(n) 算法吗?

c++ - 在 win32/Opengl 中捕获鼠标移动

c# - 如何用 winapi 获取监视器的友好名称?

api - swagger 究竟是什么?为什么在线编辑器不运行请求?