问题描述
我需要将可变大小的配置传递给字符设备/驱动程序,我想知道处理它的最佳方法是什么。目前,我使用与此类似的固定数组大小的结构:
#define ARRAY_SIZE1 4
#define ARRAY_SIZE2 4
#define ARRAY_SIZE3 32
#define ARRAY_SIZE4 8
#define ARRAY_SIZE5 8
typedef struct
{
union
{
struct
{
uint64_t item1 : 4;
uint64_t item2 : 4;
uint64_t item3 : 8;
uint64_t item4 : 48;
};
uint64_t combined;
};
union
{
uint64 array1[ARRAY_SIZE4];
uint64 array2[ARRAY_SIZE5];
uint64 array3[ARRAY_SIZE4];
};
} B;
typedef struct
{
uint64 element1;
uint64 element2[ARRAY_SIZE1];
B element3[ARRAY_SIZE2];
uint64 element4[ARRAY_SIZE3];
} A;
#define IOCTL_XYZ _IOWR(MAJOR_NUMBER,10,A)
但我不想受到数组大小的限制(特别是对于元素 3)。 我应该为结构 A 的每个元素将其分解为多个 ioctl 吗?但这会导致多次 ioctl 调用。或者用大小和指针替换固定数组?我已经读过在结构元素中包含指针不是一个好习惯(如果有人能详细说明原因),那么这种情况的最佳实践是什么?
请记住,我需要此结构对 windows 和 linux 驱动程序通用。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)