mycookie
驱动小牛
驱动小牛
  • 注册日期2002-12-09
  • 最后登录2010-08-11
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1547回复:8

调用DLL的问题(大侠援助,答对给分)

楼主#
更多 发布于:2004-11-19 10:29
我在应用程序中使用winscard.dll,发现不能调用.
我把winscard.dll拷贝到模拟器的根目录下和\windows下
1)用显示连接的时候,发现loadliberary返回为0
2)用隐式连接的时候,编译正确,在运行的时候,(程序中调用这个dll中的函数)程序报错,can not launch the remote executable
error:unknown error
error:unknown error
win32 error code 1150(我查了一下说版本问题)
please check the remote executable path and filename from project setting (我看了许久但看不出问题)
如果我把这个函数注掉,就没有这个问题;
苦闷中......  

[编辑 -  11/19/04 by  mycookie]
tangtang
驱动牛犊
驱动牛犊
  • 注册日期2004-09-17
  • 最后登录2005-04-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-11-19 16:49
虽然驱动是一个dll文件,但是不能用普通的调用dll的方法去用,当然会有问题的。而应该根据你写的驱动的不同构成用不同的方法调用
1。比如鼠标之类的有标准的接口的。
2。驱动中自己定义了向外的接口函数的,这个如何调用,我还不明白,不过,我想你的驱动应该不会是这种样子的
3。实现了标准的流接口的。这就可以用ReadFile和WriteFile直接调用了,当然之前还要CreateFile。不过你应该在调用前,看一下你的注册表中是不是已经表明你的驱动已经加载完成了(加载完后,注册表中会有相关项的)。
祝好运!
g_hGenFile2=CreateFile(L"UCM1:",
               GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
flag=ReadFile(g_hGenFile,pBuffer,dwSizeWant,&dwSizeRead,NULL);
有时间,我再详细说明。
其实我也只是在慢慢的学,大家一起努力:)
mycookie
驱动小牛
驱动小牛
  • 注册日期2002-12-09
  • 最后登录2010-08-11
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-11-22 09:56
楼上老大:
winscard.dll不是驱动,而是系统的DLL,smartcard库函数
我调用scardestablishcontext.
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-11-22 15:16
你试过不同版本的dll文件格式一样吗?比如用vc编译出来的dll和ce的编译器编译出来的?会不会是不通用?

你说的那个显示连接和隐式连接是什么啊:)你怎么使用dll里面的函数的?
根据地的兄弟们,团结就是力量
mycookie
驱动小牛
驱动小牛
  • 注册日期2002-12-09
  • 最后登录2010-08-11
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-11-23 16:03
如果我用模拟器中windows目录的dll如pm.dll和coredll.dll,loadliberary都能返回handle.我把winscard.dll用remote file view 传到模拟器上,就不能使用--loadliberary返回0.请问
是不是我用的方法有问题?
mycookie
驱动小牛
驱动小牛
  • 注册日期2002-12-09
  • 最后登录2010-08-11
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-11-29 14:57
我用的evc 是4.0版本的;(我用模拟器调试的)
wince是4.2版本的
我查了一下错误返回的值是1150意识是说windows版本太旧;
请问我的版本怎么会旧?
我用evc中的工具remote file reviewer把winscard.dll传输到模拟器中,并且在project的设置的additional dll中设置了这个dll,请问有什么问题?
我试过我硬盘上的所有winscard.dll了,都不行?

[编辑 -  11/29/04 by  mycookie]
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-11-29 16:41
那你就试试把你要用的文件直接连接到os image里面然后使用吧,你不是说是系统dll吗,怎么会让你单独传过去用
根据地的兄弟们,团结就是力量
mycookie
驱动小牛
驱动小牛
  • 注册日期2002-12-09
  • 最后登录2010-08-11
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-11-30 10:47
我也正怀疑这个问题:很奇怪为什么模拟器中没有这个文件,该如何把这个文件加到模拟器或者CEPC中,是不是我在用PB建立环境的时候把SMARTCARD feature加入编译环境中(现在没有加)?还有如何把文件加入到OS IMAGE(不好意思,菜鸟问题了)?OS IMAGE是不是就是NK.BIN?


还有evc 用的环境如模拟器,是不是就是pb编译好的环境还是自己带的环境?
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-11-30 14:05
http://www.driverdevelop.com/forum/viewthread.php?tid=82066

如果你使用ide环境,手动改了文件然后考过去后在菜单里面选make image

evc用的环境可以选
根据地的兄弟们,团结就是力量
游客

返回顶部