Размер структуры AUDIOFORMAT (WAVEFORMATEX) - PullRequest
0 голосов
/ 12 марта 2019

Есть структура:

[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 возвращает размер = 16 444

Фактический размер равен 13, и я могу предположить, что он выровнен по размеру 4, поэтому 16 выглядит правильно.

Почему Marshal.SizeOf(WAVEFORMATEX) говорит 18?

222

Или, если 18 правильно, то почему SendMessage возвращает 16?

1 Ответ

1 голос
/ 13 марта 2019

Как отмечается в комментариях, значение размера 18 является правильным, поскольку размер ushort равен 2, а не 1.

" Функция Win32 SendMessage возвращает размер = 16 "

Возвращаемое значение SendMessage указывает результат обработки сообщения в зависимости от отправленного сообщения, но не от размера отправленного.

...