www.pudn.com > WinIoForVB.rar > Port32.cpp
// ---------------------------------------------------- // // WinIo v2.0 // // Direct Hardware Access Under Windows 9x/NT/2000/XP // // Copyright 1998-2002 Yariv Kaplan // // http://www.internals.com // // ---------------------------------------------------- // #include#include #include #include "port32.h" #include "..\drv\nt\winio_nt.h" #include "..\drv\9x\winio_9x.h" #include "winio.h" bool _stdcall GetPortVal(WORD wPortAddr, PDWORD pdwPortVal, BYTE bSize) { tagPort32Struct Port32Struct; DWORD dwBytesReturned; if (!IsWinIoInitialized) return false; if (IsNT) { switch (bSize) { case 1: *pdwPortVal = _inp(wPortAddr); break; case 2: *pdwPortVal = _inpw(wPortAddr); break; case 4: *pdwPortVal = _inpd(wPortAddr); break; } } else { Port32Struct.bSize = bSize; Port32Struct.wPortAddr = wPortAddr; return DeviceIoControl(hDriver, WINIO_READPORT, &Port32Struct, sizeof(Port32Struct), pdwPortVal, sizeof(DWORD), &dwBytesReturned, NULL); } return true; } bool _stdcall SetPortVal(WORD wPortAddr, DWORD dwPortVal, BYTE bSize) { tagPort32Struct Port32Struct; DWORD dwBytesReturned; if (!IsWinIoInitialized) return false; if (IsNT) { switch (bSize) { case 1: _outp(wPortAddr, dwPortVal); break; case 2: _outpw(wPortAddr, (WORD)dwPortVal); break; case 4: _outpd(wPortAddr, dwPortVal); break; } } else { Port32Struct.bSize = bSize; Port32Struct.dwPortVal = dwPortVal; Port32Struct.wPortAddr = wPortAddr; return DeviceIoControl(hDriver, WINIO_WRITEPORT, &Port32Struct, sizeof(Port32Struct), NULL, 0, &dwBytesReturned, NULL); } return true; }