📄 porttalk.cpp
字号:
// PortTalk.cpp: implementation of the CPortTalk class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "PortTalk.h"
#include <winioctl.h>
#include "Driver_IOCTL.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CPortTalk::CPortTalk(CString DriverLinkSymbol)
{
m_DriverLinkSymbol=DriverLinkSymbol;
}
CPortTalk::~CPortTalk()
{
}
//加载驱动程序 0:成功;-1:失败
int CPortTalk::OpenPortTalk(){
m_DriverHandle = CreateFile("\\\\.\\"+m_DriverLinkSymbol,
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(m_DriverHandle == INVALID_HANDLE_VALUE)
return -1;
return 0;
}
void CPortTalk::ClosePortTalk()
{
CloseHandle(m_DriverHandle);
}
//读端口
unsigned long CPortTalk::inportd(unsigned long PortAddress)
{
unsigned int error;
DWORD BytesReturned;
unsigned long inBuffer[1];
unsigned long outBuffer[1];
inBuffer[0] = PortAddress;
error = DeviceIoControl(m_DriverHandle,
IOCTL_READ_PORT_ULONG,
&inBuffer,
sizeof(ULONG),
&outBuffer,
sizeof(ULONG),
&BytesReturned,
NULL);
if (!error)
return -1;
return(outBuffer[0]);
}
//写端口
int CPortTalk::outportd(unsigned long PortAddress, unsigned long m_Word)
{
unsigned int error;
DWORD BytesReturned;
unsigned long Buffer[2];
Buffer[0]=PortAddress;
Buffer[1] = m_Word;
error = DeviceIoControl(m_DriverHandle,
IOCTL_WRITE_PORT_ULONG,
&Buffer,
2*sizeof(ULONG),
NULL,
0,
&BytesReturned,
NULL);
if (!error)
return -1;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -