私の理解では、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
}
どんな助けでも大歓迎です!