AUDIOFORMAT (WAVEFORMATEX) 结构的大小

Size of the AUDIOFORMAT (WAVEFORMATEX) structure

有结构:

[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct WAVEFORMATEX
{
    public ushort wFormatTag;
    public ushort nChannels;
    public uint nSamplesPerSec;
    public uint nAvgBytesPerSec;
    public ushort nBlockAlign;
    public ushort wBitsPerSample;
    public ushort cbSize;
};

Marshal.SizeOf(WAVEFORMATEX) 说是 = 18

Win32 SendMessage func returns size = 16

实际大小是 13,我可以假设它以 4 的大小对齐,所以 16 看起来是正确的。

为什么 Marshal.SizeOf(WAVEFORMATEX) 说 18?

或者,如果 18 是正确的,那么为什么 SendMessage returns 16?

正如评论所指出的,大小值 18 是正确的,因为 ushort 的大小是 2 而不是 1。

"Win32 SendMessage 函数 returns 大小 = 16"

SendMessage 的 return 值指定消息处理的结果,取决于发送的消息,而不是发送的消息的大小。