我有一个 64 位 Enterprice SuSE 11 我有一个应用程序,它打开一个 HIDRAW 设备并在其上运行 ioctl 函数以从该设备获取原始信息,如下所示:
struct hidraw_devinfo devinfo;
int fd = open("/dev/hidraw0", 0);
int ret = ioctl(fd, HIDIOCGRAWINFO, &devinfo);
...
如果我在 64 位模式下编译这个程序,没有错误也没有问题,当我执行应用程序时,ioctl 函数可以正常工作。
g++ main.cpp
如果我在 32 位模式下编译这个程序也没有错误也没有问题。但是当我执行应用程序时,ioctl 函数返回 EINVAL 错误(errno = 22,无效参数)
g++ -m32 main.cpp
有什么问题?
笔记:
struct hidraw_devinfo
{
__u32 bustype;
__s16 vendor;
__s16 product;
}