c# - AUDIOFORMAT (WAVEFORMATEX) 结构的大小
问题描述
有结构:
[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
Win32SendMessage
函数返回 size = 16
实际大小是 13,我可以假设它以 4 的大小对齐,所以 16 看起来是正确的。
为什么Marshal.SizeOf(WAVEFORMATEX)
说18?
或者,如果 18 是正确的,那么为什么 SendMessage 返回 16?
解决方案
正如评论指出的那样,大小值 18 是正确的,因为大小ushort
是 2 而不是 1。
" Win32 SendMessage 函数返回 size = 16 "
SendMessage的返回值指定了消息处理的结果,取决于发送的消息,而不是它发送的大小。
推荐阅读
- julia - 如何更改代码以便解决模型?
- ios - 为什么 SceneKit CPU 使用率这么高?
- javascript - 我的 useReducer 钩子不会只更新一种调度类型的状态
- sql - SQL Partition By 计算净值
- c# - 如何在不使用内联映射或多个 .ForMember 的情况下在 automapper 中映射嵌套对象?
- jquery - 如何在我的动态表单中增加属性“for”?
- python - Python 打不开 JSON 文件,报 JSONDecodeError
- c - 我收到有关返回类型不兼容的警告
- reactjs - Reactjs 无法直接导航到 url(Springboot 后端)
- python - 在 jupyter notebook 中导入 sklearn 时出现操作系统错误