AUDIOFORMAT(WAVEFORMATEX)结构的大小

问题描述 投票:-1回答:1

有结构:

[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返回size = 16 444

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

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

222

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

c# winapi marshalling
1个回答
1
投票

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

“Win32 SendMessage func返回大小= 16”

SendMessage的返回值指定消息处理的结果,具体取决于发送的消息,但不是它发送的大小。

© www.soinside.com 2019 - 2024. All rights reserved.