Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Эксперт С++
2075 / 1817 / 270
Регистрация: 03.05.2011
Сообщений: 4,208
Записей в блоге: 13
1

Работа с SATA портами средствами библиотеки PortIO32.dll

19.01.2012, 23:35. Показов 1902. Ответов 3
Метки нет (Все метки)

во-первых хочу отметить, что поиск в интернете толковой информации по данному вопросу не увенчались успехом (везде только про COM порт), поэтому необходима ваша помощь. Требуется написать программу для работы с устройствами через SATA порт для чтения/записи байтов, например с CD/DVD приводом - снятие дампа прошивки. Набросал то, что смог понять
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
private IntPtr hExe;
 
        [DllImport("kernel32")]
        private static extern IntPtr LoadLibrary(string lpFileName);
 
        [DllImport("kernel32")]
        private static extern IntPtr GetProcAddress(IntPtr hModule, string ProcName);
 
        [UnmanagedFunctionPointer(CallingConvention.StdCall)]
        private unsafe delegate bool InByteType(ushort Port, int* Data);
 
        [UnmanagedFunctionPointer(CallingConvention.StdCall)]
        private delegate bool OutByteType(ushort Port, int Data);
 
        private void Form1_Load(object sender, EventArgs e)
        {
            hExe = LoadLibrary("PortIO32");
            if (hExe == IntPtr.Zero)
            {
                MessageBox.Show("Can`t load PortIO32.dll", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Close();
            }
        }
 
        public unsafe int InByte(ushort port, int* data)
        {
            int empty = 0;
            InByteType delegateForFunctionPointer = (InByteType)Marshal.GetDelegateForFunctionPointer(GetProcAddress(hExe, "InByte"),
                typeof(InByteType));
            delegateForFunctionPointer(port, data);
            return empty; // не уверен что именно нужно возвращать?
        }
 
        public int OutByte(ushort port, int data)
        {
            int empty = 0;
            OutByteType delegateForFunctionPointer = (OutByteType)Marshal.GetDelegateForFunctionPointer(GetProcAddress(hExe, "OutByte"),
               typeof(OutByteType));
            delegateForFunctionPointer(port, data);
            return empty; // аналогично
        }
документацию о функциях библиотеки брал здесь http://www.winfordeng.com/products/portio32/
нашёл ещё вот такую статью с кодом, но не смог до конца разобраться http://wiki.osdev.org/ATAPI
не могу понять как вывести имена SATA портов и собственно чтение/запись
если есть у кого-то предложения по использованию других библиотек (например WinIO32.dll, inpout32.dll) буду рад выслушать.
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.01.2012, 23:35
Ответы с готовыми решениями:

Написание dll - библиотеки и ее открытие средствами Delphi
Есть некоторая dll-библиотека, которая вычисляет площадь и периметр n-угольника. Лабораторная была...

Работа со звуком средствами библиотеки мультимедиа Windows
Здравствуйте,есть программа которая снимает звук с микрофона. Она работает не полностью корректно....

Подключение dll библиотеки и работа с ней
вот взял dll-ку вот отсюда dll-ка приведите плз пример как работать с этой dll-кой... Спасибо...

CDialogEx + dll, После завершения модального диалога (CDialogEx) из длл-библиотеки работа длл-библиотеки прерывается
Добрый день, подскажите, пожалуйста, новичку с++/mfc. Работаю в VS 2010. Есть необходимость...

3
80 / 78 / 10
Регистрация: 29.12.2011
Сообщений: 183
21.01.2012, 02:09 2
Цитата Сообщение от _lunar_ Посмотреть сообщение
Работа с SATA портами
заинтересовало. По возможности дополните тему известной вам информацией, ссылками и вашими изысканиями.
0
Эксперт С++
2075 / 1817 / 270
Регистрация: 03.05.2011
Сообщений: 4,208
Записей в блоге: 13
21.01.2012, 11:58  [ТС] 3
ibmpc есть у меня ещё несколько проектов, в частности на WinIo32.dll (в прикреплённых) - декомпилировал одну программу и переписал без лишнего мусора от reflector'а. Документацию о функциях по WinIo32.dll можно найти в идущем вместе с библиотекой примере.
по поводу Inpout32.dll можно почитать здесь http://logix4u.net/parallel-po... 982000ntxp но насколько я понял данная библиотека работает с параллельными портами, примеры для неё написаны на C++ и visual basic.
а вообще, есть программа которая работает с устройствами на SATA портах и использует PortIO32.dll - JungleFlasher. Все кроме первой версии (JungleFlasher 0.0.26) обфусцированы и декомпилировать их не представляется возможным.
1
Вложения
Тип файла: rar project.rar (185.1 Кб, 62 просмотров)
sau
21.01.2012, 14:03     Работа с SATA портами средствами библиотеки PortIO32.dll
  #4

Не по теме:

обфусцированы и декомпилировать их не представляется возможным.
- даже если там протектор навешан, так или иначе создается временный файл с которым может работать CLR, так что IL всегда можно получить, да и с устройствами полюбому работа на уровне драйвера, разве что можно глянуть какие функции вызывать и с какими параметрами.

1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2012, 14:03
Привет! Вот еще темы с ответами:

Работа с COM портом с использованием библиотеки TrComPort.dll (TrComPort_BCB.lib)
Скачивал отсюда: ссылки на форумы запрещены В Project1.cpp подключаем: #pragma comment (lib,...

Совместная работа SATA II и SATA III
Скажите, пожалуйста, будут ли дружно работать два ЖД (500 гб + 1 Тб), из которых первый SATA II, а...

Создание dll библиотеки в C#. Вызов классов этой библиотеки
мне нужно как то создать динамическую библиотеку класов в си шарп, основой этой библиотеки должен...

Как использовать методы библиотеки DLL, и игнорировать их, когда DLL нету?
Как использовать методы библиотеки DLL , и игнорировать их когда DLL нету Что нужно , мне нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.