Работа в Golang / среде Ubuntu
Проблемы в этих областях
func exec_ioctl(hdr *SgIoHdr) error {
f, err := os.Open("dev/sg1") //The Status returned by err is always 3
if err != nil {
return err
}
if err := Ioctl(uintptr(f.Fd()), SG_IO, uintptr(unsafe.Pointer(hdr)));
err != nil {
return err
}
Какая команда должна открывать диск? **
2. // Read16
sendCMD := []byte {0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00}
cmdBuf := make([]byte, 16)
senseBuf := make([]byte, 512)
ioHdr := SgIoHdr{
InterfaceID: int32('S'),
DxferDirection: SG_DXFER_FROM_DEV,
CmdLen: uint16(len(sendCMD )),
MxSbLen: SENSE_BUF_LEN,
DxferLen: uint32(len(cmdBuf )),
Dxferp: &cmdBuf [0],
SCmd: sendCMD [0],
Sbp: &senseBuf[0],
Timeout: 60000,
}
err := exec_ioctl(&ioHdr)
if err != nil {
return err
}
func Ioctl(fd, cmd, ptr uintptr) error {
_, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, cmd, ptr)
}
При попытке чтения данных, возвращаемых приводом, он всегда возвращает 00
Даже если на диск был отправлен неправильный код операции, err всегда возвращает 0 ie SCSI_STATUS В НОРМЕ
Есть ли проблемы с командой Read16?
3. Как отправить команду WRITEATOMI C на привод, например, Read16?