1.請問IOCTL控制碼該怎麼射設定?為何不用 #define 而是用CTL_CODE()?
2.CTL_CODE( DeviceType, Function, Method, Access )中的DeviceType,Function (假設是ide介面)怎麼定意?http://topic.csdn.net/t/20041026/14/3492286.html // IOCTL控制碼
// #define DFP_SEND_DRIVE_COMMAND 0x0007c084
#define DFP_SEND_DRIVE_COMMAND CTL_CODE(IOCTL_DISK_BASE, 0x0021, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
// #define DFP_RECEIVE_DRIVE_DATA 0x0007c088
#define DFP_RECEIVE_DRIVE_DATA CTL_CODE(IOCTL_DISK_BASE, 0x0022, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define FILE_DEVICE_SCSI 0x0000001b
#define IOCTL_SCSI_MINIPORT_IDENTIFY ((FILE_DEVICE_SCSI << 16) + 0x0501)
#define IOCTL_SCSI_MINIPORT 0x0004D008 // see NTDDSCSI.H for definition
2.CTL_CODE( DeviceType, Function, Method, Access )中的DeviceType,Function (假設是ide介面)怎麼定意?http://topic.csdn.net/t/20041026/14/3492286.html // IOCTL控制碼
// #define DFP_SEND_DRIVE_COMMAND 0x0007c084
#define DFP_SEND_DRIVE_COMMAND CTL_CODE(IOCTL_DISK_BASE, 0x0021, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
// #define DFP_RECEIVE_DRIVE_DATA 0x0007c088
#define DFP_RECEIVE_DRIVE_DATA CTL_CODE(IOCTL_DISK_BASE, 0x0022, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define FILE_DEVICE_SCSI 0x0000001b
#define IOCTL_SCSI_MINIPORT_IDENTIFY ((FILE_DEVICE_SCSI << 16) + 0x0501)
#define IOCTL_SCSI_MINIPORT 0x0004D008 // see NTDDSCSI.H for definition
2、DeviceType是设备类型,作业系统定义了一些设备类型,驱动程式创建设备的时候需要指定创建的是哪种类型的设备,不是按介面来分的。硬碟是FILE_DEVICE_DISK类型(7),CD光碟机是FILE_DEVICE_CD_ROM类型(2),DVD光碟机是FILE_DEVICE_DVD(0x33)。Function是功能代号,是作业系统或者驱动程式定义的。
1.我用DeviceIoControl 發命令給IDE時,怎麼知道它命令是送給IDE0 還是IDE1 呢?
2.用DeviceIoControl 發0xec 的命令後,我們所得的硬盤的詳細信息 是從哪裡得到的? BIOS or DISK?