在我的理解中,DeviceIOControl 和 ioctl 是相同的功能。它们都向硬件发送控制代码并返回响应。为了重用代码,我正在尝试创建一个以跨平台方式工作的函数。因此,我决定使用 DeviceIOControl api,因为它是固定且特定的。问题是:我如何将 ioctl 映射到那个?
我目前有:
int DeviceIoControl_issueCommand(DeviceHandle handle, int command, void *input, ssize_t sizeof_input, void *output, ssize_t sizeof_output, uint32_t *bytes_written){
#if SYSTEMINFORMATION_ISWINDOWS
int result = DeviceIoControl(handle,command,input,sizeof_input,output,sizeof_output,bytes_written,0);
if (result == 0){
result = -1; //-1 is the new error return
}
return result;
#else
int result = ioctl(handle, command, input); //this doesnt work!
return result;
#endif
}
任何帮助是极大的赞赏!