WinIoTest.cpp
资源名称:winio源码.zip [点击查看]
上传用户:ason123
上传日期:2010-03-31
资源大小:177k
文件大小:1k
源码类别:
并口编程
开发平台:
C++ Builder
- #include <windows.h>
- #include <stdio.h>
- #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);
- }
- }