⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 porttalk.cpp

📁 SD卡测试软件服务器端 SD卡测试软件服务器端 SD卡测试软件服务器端
💻 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 + -