“ SetupOpenInfFile”的在Delphi2010中获取访问冲突错误

在Delphi 2010中使用以下行代码时,出现“访问冲突”错误,但相同的代码在VC ++中正常工作。 Delphi 2010代码是
var
  hMyInf : HINF;
begin
hMyInf := SetupOpenInfFile('.\DIGIMHID.INF','Mouse', INF_STYLE_WIN4,Nil);
VC ++代码是
hMyInf = SetupOpenInfFile(".\DigimHID.inf", "Mouse", INF_STYLE_WIN4, NULL);
请帮我解决这个问题。 谢谢大家。     
已邀请:
在使用
SetupAPI.pas
中的任何方法之前,请先调用
LoadSetupAPI
编辑,提供一些背景:正如David在他的回答和我的评论中同时写的那样,错误可能是由调用未初始化的方法指针引起的。对我来说,第一个提示是错误消息,一个访问冲突:如果相当于访问冲突来自Windows本身,它将被称为
Runtime Error 216
。代码非常简单,只使用常量和方法调用。常量不能生成AV,因此错误必须来自方法本身,或来自调用方法。 由于提供的Delphi声明显示“函数类型”,我怀疑
SetupOpenInfFile
实际上是方法指针,而不是
import
方法。那些指针需要以某种方式初始化。搜索
SetupAPI.pas
(感谢谷歌提供链接,因为我不使用JEDI库)我很快发现它是从
LoadSetupAPI
分配的。我的第一个想法是:不是
LoadSetupAPI
initialization
部分打来的?它不是,因此需要从代码中调用它。问题解决了。     
您的文件名在Delphi版本中是错误的。你不会在Delphi中逃脱,只有一个人会这样做。但这不会导致访问违规。 我的猜测是你的GetProcAddress调用失败了。但这是猜测。我想看到更多代码和完整的错误消息。 编辑 看来我们走在了正确的轨道上。 Cosmin的答案将为您解决问题。另一种方法是通过删除
SetupApi.pas
中条件
SETUPAPI_LINKONREQUEST
的定义来切换到隐式链接。     

要回复问题请先登录注册