www.pudn.com > WinIoForVB.rar > WinIoTest.cpp


#include  
#include  
#include "winio.h" 
 
void main() 
{ 
  DWORD dwPortVal; 
  DWORD dwMemVal; 
  bool bResult; 
  HANDLE hPhysicalMemory; 
  PBYTE pbLinAddr; 
 
  // Call InitializeWinIo to initialize the WinIo library. 
 
  bResult = InitializeWinIo(); 
 
  if (bResult) 
  { 
    // Under Windows NT/2000/XP, after calling InitializeWinIo, 
    // you can call _inp/_outp instead of using GetPortVal/SetPortVal 
 
    GetPortVal(0x378, &dwPortVal, 4); 
 
    SetPortVal(0x378, 10, 4); 
 
    // Map physical addresses 0xA0000 - 0xAFFFF into the linear address space 
    // of the application. The value returned from the call to MapPhysToLin is 
    // a linear address corresponding to physical address 0xA0000. In case of 
    // an error, the return value is NULL. 
 
    pbLinAddr = MapPhysToLin((PBYTE)0xA0000, 65536, &hPhysicalMemory); 
 
    if (pbLinAddr) 
    { 
      // Now we can use pbLinAddr to access physical address 0xA0000 
 
      *pbLinAddr = 10; 
 
      // When you're done with pbLinAddr, call UnmapPhysicalMemory 
 
      UnmapPhysicalMemory(hPhysicalMemory, pbLinAddr); 
    } 
 
    // Instead of using MapPhysToLin, we can use GetPhysLong/SetPhysLong 
 
    GetPhysLong((PBYTE)0xA0000, &dwMemVal); 
 
    SetPhysLong((PBYTE)0xA0000, 10); 
 
    // When you're done using WinIo, call ShutdownWinIo 
 
    ShutdownWinIo(); 
  } 
  else 
  { 
    printf("Error during initialization of WinIo.\n"); 
    exit(1); 
  } 
}