试图了解 Windows API 中的结构大小

Trying to understand structure sizes in the Windows API

我正在寻找使用 Windows API 构建应用程序的方法。 我正在使用 Go,它可以用来与 Windows API 交互(通过使用 syscall 包),但是,这对于这个问题并不重要。

我正在查看 API 以注册一个新的同步根,这是使用函数 CfRegisterSyncRoot 完成的。

根据这个方法的签名,它接受一个 CF_SYNC_REGISTRATION 但在这里我发现了一些让我感到困惑的信息。

根据定义,此函数有一个名为 StructSize 的字段,表示结构的大小,但我没有找到有关此的更多信息。 我应该在这里传递什么?

您链接到的文档说 StructSize 成员是“结构的大小”。这意味着它是用于在内存中存储结构的字节数。您可以通过在 C 编译器中评估 sizeof(CF_SYNC_REGISTRATION) 来获得正确的值,并且您应该在将此值传递给 Windows API 函数之前将其写入 StructSize 成员。

这种事情在WindowsAPI中很常见。我认为这是一种允许 Windows 偶尔向其结构添加新成员的机制,而不会破坏与不知道新成员的旧代码的兼容性。