www.pudn.com > voltage_monitor.rar > myport.cpp


#include "stdafx.h" 
#include "conio.h" 
#include "windows.h" 
#include  
#include "myport.h" 
 
 
HANDLE PortTalk_Handle = NULL;        /* Handle for PortTalk Driver */ 
unsigned char OpenPortTalk() 
{ 
	PortTalk_Handle = CreateFile("\\\\.\\MPNP1",  
		GENERIC_READ | GENERIC_WRITE,  
		0,  
		NULL, 
		OPEN_EXISTING,  
		FILE_ATTRIBUTE_NORMAL,  
		NULL); 
	if(PortTalk_Handle == INVALID_HANDLE_VALUE) 
	{ 
		return -1; 
	} 
	return 0; 
} 
 
void ClosePortTalk() 
{ 
	CloseHandle(PortTalk_Handle); 
} 
 
void outportb(unsigned short PortAddress, unsigned char byte) 
{ 
 
	DWORD       dwError = 0; 
	 
    unsigned int error; 
    DWORD BytesReturned;         
    unsigned char Buffer[2]; 
    unsigned char * pBuffer; 
    pBuffer = (unsigned char *)&Buffer[0]; 
	*pBuffer = (unsigned char)PortAddress&0x0f; 
	//	*pBuffer = (unsigned char)PortAddress; 
    Buffer[2] = byte; 
	 
    error = DeviceIoControl(PortTalk_Handle, 
		IOCTL_WRITE_PORT_UCHAR, 
		&Buffer, 
		3, 
		NULL, 
		0, 
		&BytesReturned, 
		NULL); 
	 
    //if (!error) printf("Error occured during outportb while talking to PortTalk driver %d\n",GetLastError()); 
} 
 
 
unsigned char inportb(unsigned short PortAddress) 
{ 
    unsigned int error; 
    DWORD BytesReturned; 
    unsigned char Buffer[3]; 
    unsigned short * pBuffer; 
    pBuffer = (unsigned short *)&Buffer[0]; 
    *pBuffer = (unsigned char)PortAddress&0x0f; 
	//*pBuffer = (unsigned char)PortAddress;  
	 
	error = DeviceIoControl(PortTalk_Handle, 
		IOCTL_READ_PORT_UCHAR, 
		&Buffer, 
		2, 
		&Buffer, 
		1, 
		&BytesReturned, 
		NULL); 
	 
    //if (!error) printf("Error occured during inportb while talking to PortTalk driver %d\n",GetLastError()); 
    return(Buffer[0]); 
	 
}