Как читать байты с устройства с помощью c/c++ в windows

Итак, вот предыстория:

У меня есть это устройство SCSI с носителем, на котором есть необработанные данные (для простоты предположим, что он содержит abc123). Это устройство находится на компьютере с Windows. Я хотел бы использовать C/C++ для инициализации устройства, открыть его, отправить команду чтения SCSI на устройство и, в конечном итоге, «прочитать» байты.

Я искал похожие темы, но постоянно получаю руководства по Linux/Unix или Visual C++ (к которым у меня нет доступа).

Кто-нибудь знает хороший способ начать это? Может быть, какой-то пример кода или, может быть, у кого-то есть учебник ;-)

Заранее спасибо!

EDIT: я использую Cygwin.


person redhotspike    schedule 30.03.2012    source источник
comment
Во-первых, cygwin - это не компилятор, в лучшем случае это эмулятор для *nix-сред. Во-вторых, вы должны начать с чтения Windows API, поскольку вы явно работаете в Windows. Но если вы хотите использовать Windows API, я бы не стал этого делать под cygwin, это добавляет еще один уровень сложности, который вам явно не нужен. Попробуйте использовать бесплатный компилятор Windows (например, Mingw). В качестве альтернативы вы можете загрузить/установить Visual C++ (или Studio) Express, который является бесплатным.   -  person Attila    schedule 30.03.2012
comment
Я понимаю, что cygwin не является компилятором, но я использую среду cygwin для компиляции. У меня нет доступа к компилятору Mingw по той же причине, по которой у меня нет доступа к Visual C++. Спасибо.   -  person redhotspike    schedule 30.03.2012
comment
Тогда удачи вам. Вы в ней надолго...   -  person Attila    schedule 30.03.2012
comment
Лол уже был в долгом пути. Но если разберусь - респект!   -  person redhotspike    schedule 30.03.2012
comment
@redhotspike: я предлагаю вам задать еще один вопрос: как мне вызвать Win32 API из программы Cygwin?   -  person Harry Johnston    schedule 31.03.2012


Ответы (2)


Если вам абсолютно необходимо перейти на аппаратный уровень, а что касается Linux, вам придется использовать команды IOCTL, например: http://sg.danny.cz/sg/sg_io.html

person A_A    schedule 30.03.2012
comment
Я ценю этот лакомый кусочек, однако, как указано в моем описании, я использую Windows. - person redhotspike; 30.03.2012

ОБНОВЛЕНИЕ: После того, как я довольно долго билась головой о стену, а также умоляла и умоляла, мне удалось уговорить своего супервайзера разрешить мне установить Visual Studio 2003!

Всем, кто ищет дополнительную информацию по этой теме, я полностью согласен с приведенными выше комментариями: практически невозможно выполнить это на компьютере с Windows и не использовать Visual C++.

Мое единственное другое предложение - сделать замечательный переход в мир * nix (если вы можете)!

person redhotspike    schedule 01.05.2012
comment
Вам не нужен был, в частности, Visual C++, вам просто нужен был компилятор Windows. Mingw был бы вполне подходящим для заявленной цели. - person Harry Johnston; 02.05.2012
comment
(И я сильно подозреваю, что попытка выполнить аналогичную задачу в Linux, но настаивая на использовании Wine, а не нативного кода, окажется столь же сложной!) - person Harry Johnston; 02.05.2012