求助vc调用winio.dll和winio.sys

nobbycode 2011-06-20 08:58:07
我在winio的官网下的winio3.0 是个压缩包
打开Binaries文件夹有WinIo32.dll,WinIo32.sys,WinIo64.dll,WinIo64.sys
将它们放在工程DEBUG目录下
程序代码
#include <windows.h>
int WINAPI WinMain(
。。。。。。。
。。。。。){
InitializeWinIo(); //初使化WinIo
SetPortVal(0x64,0xd2,1);
SetPortVal(0x60,MapVirtualKey(VK_CONTROL,0),1);
ShutdownWinIo();
return 0;
}
编译报错找不到这几个函数,怎么办
G:\c\Jianfei\JF\j.cpp(41) : error C2065: 'InitializeWinIo' : undeclared identifier
G:\c\Jianfei\JF\j.cpp(42) : error C2065: 'SetPortVal' : undeclared identifier
G:\c\Jianfei\JF\j.cpp(65) : error C2065: 'ShutdownWinIo' : undeclared identifier
Error executing cl.exe.
...全文
877 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
玄黄儿 2013-12-27
  • 打赏
  • 举报
回复
16楼的正确,赞
zzyook 2013-05-16
  • 打赏
  • 举报
回复
学习了,呵呵
JustInsist 2011-10-19
  • 打赏
  • 举报
回复
http://hi.baidu.com/1037211560/blog/item/51e708b88257021118d81fdd.html
JustInsist 2011-10-19
  • 打赏
  • 举报
回复
除了那些文件 ,你的winio.h(winio示例程序的那个)要包括进来,而且要动态加载dll,再调用里面的函数,最后使用
#include <stdio.h>
#include <windows.h>
#include "..\WinIo\Source\Dll\winio.h"
typedef bool (_stdcall *bRet1)();
typedef bool (_stdcall *bRet2)(WORD wPortAddr,DWORD dwPortVal,BYTE bSize);
typedef void (_stdcall *bVoid)();

void main()
{
HMODULE h1 = LoadLibrary("WinIo32.dll");
if (h1 ==NULL)
{
return;
}
printf("导入dll成功\n");
bRet1 iz=(bRet1)GetProcAddress(h1,"InitializeWinIo");
if(!iz)
{
printf("fale in InitializeWinIo GetProcAddress\n");
return;
}
printf("InitializeWinIo成功\n");

bRet2 SPV=(bRet2)GetProcAddress(h1,"SetPortVal");
if (!SPV)
{
printf("fale in SetPortVal GetProcAddress\n");
return;
}
printf("SetPortVal成功\n");
bRet2 GPV=(bRet2)GetProcAddress(h1,"GetPortVal");
if (!SPV)
{
printf("fale in GetPortVal GetProcAddress\n");
return;
}
printf("GetPortVal成功\n");
  • 打赏
  • 举报
回复
把winio32.dll和winio32.sys放在c:\windows\system32下面。
winio32.sys不需要用inf文件安装,winio32.sys是NT式的驱动,不需要用inf安装,可以写程序安装。
nobbycode 2011-06-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 icelemon1314 的回复:]
WinIo32.dll // 这个是动态连接库,需要在工程中添加引用
WinIo32.sys // 这个是驱动文件,应该是需要放到system目录下的
[/Quote]
具体怎么使用呢
赵4老师 2011-06-21
  • 打赏
  • 举报
回复
提醒:光有.h,如果不是动态LoadLibrary的话,还需要.lib文件。
nobbycode 2011-06-21
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 zhao4zhong1 的回复:]
WinIo.h

C/C++ code

#ifndef WINIO_H
#define WINIO_H

#ifdef WINIO_DLL
#define WINIO_API _declspec(dllexport)
#else
#define WINIO_API _declspec(dllimport)
#endif

extern "C"
{
WINIO_A……
[/Quote]
先谢谢了,晚上回家试试
赵4老师 2011-06-21
  • 打赏
  • 举报
回复
WinIo.h
#ifndef WINIO_H
#define WINIO_H

#ifdef WINIO_DLL
#define WINIO_API _declspec(dllexport)
#else
#define WINIO_API _declspec(dllimport)
#endif

extern "C"
{
WINIO_API bool _stdcall InitializeWinIo();
WINIO_API void _stdcall ShutdownWinIo();
WINIO_API PBYTE _stdcall MapPhysToLin(PBYTE pbPhysAddr, DWORD dwPhysSize, HANDLE *pPhysicalMemoryHandle);
WINIO_API bool _stdcall UnmapPhysicalMemory(HANDLE PhysicalMemoryHandle, PBYTE pbLinAddr);
WINIO_API bool _stdcall GetPhysLong(PBYTE pbPhysAddr, PDWORD pdwPhysVal);
WINIO_API bool _stdcall SetPhysLong(PBYTE pbPhysAddr, DWORD dwPhysVal);
WINIO_API bool _stdcall GetPortVal(WORD wPortAddr, PDWORD pdwPortVal, BYTE bSize);
WINIO_API bool _stdcall SetPortVal(WORD wPortAddr, DWORD dwPortVal, BYTE bSize);
WINIO_API bool _stdcall InstallWinIoDriver(PSTR pszWinIoDriverPath, bool IsDemandLoaded = false);
WINIO_API bool _stdcall RemoveWinIoDriver();
}

extern bool IsNT;
extern HANDLE hDriver;
extern bool IsWinIoInitialized;

bool _stdcall StartWinIoDriver();
bool _stdcall StopWinIoDriver();

#endif
赵4老师 2011-06-21
  • 打赏
  • 举报
回复
nobbycode 2011-06-21
  • 打赏
  • 举报
回复
有没有人知道在哪可以下到带有winio.h的,我见过别人的代码里都有这个
nobbycode 2011-06-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zhao4zhong1 的回复:]
winio32.sys放在c:\windows\system32\drivers\目录下。重启系统后生效。
应该有winio.h和winio_vc.lib文件吧。
[/Quote]

http://www.internals.com/
里面只有两个dll,两个sys
还有两个是exe的,是官方做的应用,一个是访问物理内存的,一个是访问IO端口的
赵4老师 2011-06-21
  • 打赏
  • 举报
回复
winio32.sys放在c:\windows\system32\drivers\目录下。重启系统后生效。
应该有winio.h和winio_vc.lib文件吧。
CrySleeper 2011-06-21
  • 打赏
  • 举报
回复
你没有包含winio的头文件
nobbycode 2011-06-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wardensky 的回复:]
把winio32.dll和winio32.sys放在c:\windows\system32下面。
winio32.sys不需要用inf文件安装,winio32.sys是NT式的驱动,不需要用inf安装,可以写程序安装。
[/Quote]
能不能给出具体的代码。谢谢
Proteas 2011-06-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 icelemon1314 的回复:]

WinIo32.dll // 这个是动态连接库,需要在工程中添加引用
WinIo32.sys // 这个是驱动文件,应该是需要放到system目录下的
[/Quote]
驱动不是放在系统目录就可以,需要有对应的 inf 文件,才能安装。
icelemon1314 2011-06-20
  • 打赏
  • 举报
回复
WinIo32.dll // 这个是动态连接库,需要在工程中添加引用
WinIo32.sys // 这个是驱动文件,应该是需要放到system目录下的
Proteas 2011-06-20
  • 打赏
  • 举报
回复
WinIo32.sys 应该是驱动吧,应用是没有办法直接使用硬件端口的。
而驱动是需要安装的。
WinIo32.dll 应该是功能接口。

以上全是猜想。呵呵。
nobbycode 2011-06-20
  • 打赏
  • 举报
回复
。。还以为这个论坛人多

64,690

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧