Fix WAVEFORMATEX struct size (#5356)

* fix WAVEFORMATEX struct size
* fix size test for WAVEFORMATEX
* pack WAVEFORMATEXTENSIBLE
This commit is contained in:
David Holland
2025-06-18 20:25:09 +10:00
committed by GitHub
parent 12bd926f18
commit 0a45d4de0c
3 changed files with 9 additions and 4 deletions

View File

@@ -589,7 +589,7 @@ WAVE_FORMAT_FLAC :: 0xF1AC /* flac.sourceforge.net */
WAVE_FORMAT_EXTENSIBLE :: 0xFFFE /* Microsoft */
WAVEFORMATEX :: struct {
WAVEFORMATEX :: struct #packed {
wFormatTag: WORD,
nChannels: WORD,
nSamplesPerSec: DWORD,
@@ -603,7 +603,7 @@ LPCWAVEFORMATEX :: ^WAVEFORMATEX
// New wave format development should be based on the WAVEFORMATEXTENSIBLE structure.
// WAVEFORMATEXTENSIBLE allows you to avoid having to register a new format tag with Microsoft.
// Simply define a new GUID value for the WAVEFORMATEXTENSIBLE.SubFormat field and use WAVE_FORMAT_EXTENSIBLE in the WAVEFORMATEXTENSIBLE.Format.wFormatTag field.
WAVEFORMATEXTENSIBLE :: struct {
WAVEFORMATEXTENSIBLE :: struct #packed {
using Format: WAVEFORMATEX,
Samples: struct #raw_union {
wValidBitsPerSample: WORD, /* bits of precision */

View File

@@ -527,8 +527,10 @@ verify_winmm :: proc(t: ^testing.T) {
// mmsyscom.h
expect_size(t, win32.MMVERSION, 4)
expect_size(t, win32.MMTIME, 12)
// mmreg.h
expect_size(t, win32.WAVEFORMATEX, 18)
expect_size(t, win32.WAVEFORMATEXTENSIBLE, 40)
// mmeapi.h
expect_size(t, win32.WAVEFORMATEX, 20)
expect_size(t, win32.WAVEHDR, 48)
expect_size(t, win32.WAVEINCAPSW, 80)
expect_size(t, win32.WAVEOUTCAPSW, 84)

View File

@@ -1,6 +1,7 @@
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#include <windows.h>
#include <timeapi.h>
#include <mmreg.h>
#include <mmeapi.h>
#include <windns.h>
#include <commdlg.h>
@@ -702,8 +703,10 @@ static void verify_winmm(ofstream& out) {
test_proc_comment("mmsyscom.h");
expect_size(MMVERSION);
expect_size(MMTIME);
test_proc_comment("mmeapi.h");
test_proc_comment("mmreg.h");
expect_size(WAVEFORMATEX);
expect_size(WAVEFORMATEXTENSIBLE);
test_proc_comment("mmeapi.h");
expect_size(WAVEHDR);
expect_size(WAVEINCAPSW);
expect_size(WAVEOUTCAPSW);