Создание драйвера
Знаю, что для прямого доступа к портам компьютера из Windows надо писать специальный драйвер. Как это сделать? Имеется в наличии Visual Studio .NET.
Тут одной студией не обойдешся, качай или найдти диск с Windows DDK
void outportb(unsigned int portadr,char data)
{
_AL=data;
_DX=portadr;
asm out dx,al;
}
Ежели такая возможность существует, подскажите пожалуйста как это делается.
Спасибо.
А неужели действительно нельзя присвоить своей программе (в WinXP например) привелегию достаточную что бы выполнить такой код:
void outportb(unsigned int portadr,char data)
{
_AL=data;
_DX=portadr;
asm out dx,al;
}
Ежели такая возможность существует, подскажите пожалуйста как это делается.
Спасибо.
посмотри сюда:
http://www.beyondlogic.org/porttalk/porttalk.htm
если сам не хочешь мучаться, скачиваешь готовый драйвер и работаешь с портами как в 98 винде
посмотри сюда:
http://www.beyondlogic.org/porttalk/porttalk.htm
если сам не хочешь мучаться, скачиваешь готовый драйвер и работаешь с портами как в 98 винде
после запуска утилитки с сайта, в программе я пользую io.dll - в инете ее без труда найдешь:
HINSTANCE hDLLIO; // Handle to DLLs
//les types pour IO
typedef void(CALLBACK *tPortOut)(int, char);
typedef char(CALLBACK *tPortIn)(int);
tPortOut m_PortOut;
tPortIn m_PortIn;
hDLLIO = ::LoadLibrary(IO_DLL);
if (hDLLIO != NULL) {
// Get pointers to the functions in the DLL
m_PortOut = (tPortOut)::GetProcAddress(hDLLIO, "PortOut");
m_PortIn = (tPortIn)::GetProcAddress(hDLLIO, "PortIn");
if (!m_PortOut || !m_PortIn) {
// Couldn't find the functions, so exit
le=4;
FreeLibrary(hDLLIO);
MessageBox(NULL, "Fonctions pour son ne sont pas trouvées","Erreur",MB_OK);
};
}else{...}
//активировать контроллер спикера (через 66 порт)
m_PortOut(66, (char)(divisor%256));
m_PortOut (66, (char)(divisor/256));
//чтение порта
portVal = m_PortIn(0x61);
Запустил io.dll, отлично работает.
Спасибо.
Запустил io.dll, отлично работает.
действительно, один io.dll достаточно - утилитку, про которую я выше говорил я пользовал когда под хр запускали досовскую программу, с доступом к портам!!! т.е. там низзя было ни код переписать, ничего другого сделать.
действительно, один io.dll достаточно...
А можно поподробнее: как io.dll "запускать" ?? У меня прога приёма информации с COM-портов на асме написана. Под Win32 я её переделаю - не вопрос, но как быть с обращениями к портам? Опишите, plz, подробнее...