WINIO的使用方法?(100分)

  • 主题发起人 主题发起人 dy0618
  • 开始时间 开始时间
D

dy0618

Unregistered / Unconfirmed
GUEST, unregistred user!
winio中有二个函数:
PBYTE __fastcall MapPhysToLin(PBYTE pbPhysAddr, DWORD dwPhysSize, HANDLE *pPhysicalMemoryHandle)

bool __fastcall UnmapPhysicalMemory(HANDLE PhysicalMemoryHandle, PBYTE pbLinAddr)

是用来做什么的?
怎样用?
用了它们有什么好处?
(它们对并口读写速度有没有影响?)
 
PBYTE MapPhysToLin(PBYTE pbPhysAddr, DWORD dwPhysSize, HANDLE *pPhysicalMemoryHandle)
将一块物理空间映射到一个32位应用程序的线性地址空间。
举例如下:
PBYTE pbLinAddr;
HANDLE PhysicalMemoryHandle;
pbLinAddr = MapPhysToLin(0xA0000, 65536, &PhysicalMemoryHandle);
这段代码将0XA0000-0XAFFFF地址空间映射到应用程序的线性地址空间。返回值是对应物理地址空间的线性地址。如果失败则返回NULL。
参数:
pbPhysAddr - 指向物理地址的指针
dwPhysSize - 映射的内存大小,以字节位单位
pPhysicalMemoryHandle - 指向一个接收物理地址段的句柄,成功则返回句柄,这个句柄在调用UnmapPhysicalMemory函数时用作第一个参数

----------------------------------------------------------------------------

bool UnmapPhysicalMemory(HANDLE PhysicalMemoryHandle, PBYTE pbLinAddr)

取消地址映射

Windows 9x 应用程序不需要调用这个函数

参数:
PhysicalMemoryHandle - 物理地址空间句柄
pbLinAddr - 线性地址
----------------------------------------------------------------------------

bool GetPhysLong(PBYTE pbPhysAddr, PDWORD pdwPhysVal);

从给定的内存地址得到一个双字数据

参数:
pbPhysAddr - 指向给定的物理内存地址
pdwPhysVal - 指向一个从给定物理地址获取双字数据的变量

成功返回非0.
失败则返回0.

----------------------------------------------------------------------------

bool SetPhysLong(PBYTE pbPhysAddr, DWORD dwPhysVal);

将一个双字数据写到规定的物理地址。

参数:

pbPhysAddr - 指向物理地址的指针
dwPhysVal - 要写到物理地址的数据

成功返回非0.
失败返回0.

----------------------------------------------------------------------------
用户注意
----------------------------------------------------------------------------

一般情况下,对于I/O操作不需调用下述函数。
PBYTE MapPhysToLin(PBYTE pbPhysAddr, DWORD dwPhysSize, HANDLE *pPhysicalMemoryHandle);
bool UnmapPhysicalMemory(HANDLE PhysicalMemoryHandle, PBYTE pbLinAddr);
bool GetPhysLong(PBYTE pbPhysAddr, PDWORD pdwPhysVal);
bool SetPhysLong(PBYTE pbPhysAddr, DWORD dwPhysVal);

----------------------------------------------------------------------------

----------------------------------------------------------------------------
C++用户注意
----------------------------------------------------------------------------

为了在一个32位的C++应用程序中使用winio.dll动态连接库,请参照下述两步:

1. 将winio.lib、winio.dll和winio.sys拷贝到你的执行程序所在的目录下。

2. 将winio.h头文件加入到工程中。

3. 将winio.lib库文件加入到工程中。
 
你好,很高兴得到你的帮助,winio操作并口的速度很慢.
我用Ntport和winio分别写了一个pm39lv512的烧录软件.
用ntport的烧录软件一共用了8秒完成.
而winio呢用了100秒才完成.
请问大侠有没有办法使winio的速度变快一点?
 
后退
顶部