Inno setup “什么是”呢;指针;Inno设置中的(PVOID)数据类型等效

Inno setup “什么是”呢;指针;Inno设置中的(PVOID)数据类型等效,inno-setup,pascalscript,Inno Setup,Pascalscript,我试图使用Windows API的函数,但是pSecurityDescriptor参数是指针。Inno安装程序中的“指针”(PVOID)数据类型等效性是什么?Inno安装程序中使用的Pascal脚本似乎根本不支持指针。也许你可以传递一个基数(如果是32位的话),或者你可以在一个外部DLL中编写你的代码,然后从Inno安装程序中调用它。Little迟到了。除息的 要解决此问题,必须使用关键字“var”将函数参数作为变量宣布。这是Pascal函数参数中变量声明指针的标准方法 哈,我会把思想带到逻辑的

我试图使用Windows API的函数,但是
pSecurityDescriptor
参数是指针。Inno安装程序中的“指针”(
PVOID
)数据类型等效性是什么?

Inno安装程序中使用的Pascal脚本似乎根本不支持指针。也许你可以传递一个基数(如果是32位的话),或者你可以在一个外部DLL中编写你的代码,然后从Inno安装程序中调用它。

Little迟到了。除息的 要解决此问题,必须使用关键字“var”将函数参数作为变量宣布。这是Pascal函数参数中变量声明指针的标准方法


哈,我会把思想带到逻辑的尽头。首先,InnoSetup的执行过程在所有情况下都是32位的,也就是说,没有人阻止您声明新类型(“PVOID”或“指针”)对应的维度(类型PVOID=基数;指针=整数;等等),更重要的是,这只是为了便于理解。其次,在宣布外部API函数时,用变量(通过关键字“var”)替换索引已经足够了。在第三种情况下,由于Pascal脚本中内存的特定组织,一些API函数将无法处理此类变量,因此您无法阻止从Kernel32.dll声明使用内存工作函数(GetMemory、FreeMemory、FillMemory+GetMemory=AllocMemory)的外部函数。GetMemory只返回内存站点上的索引。在第四种情况下,为了从具有索引的块中提取数据,没有人阻止使用复制功能,如CopyMemory、StringCchCopyA、lstrcpynA,这些功能来自同一个Kernel32.dll,其中输出参数将是必要维度的变量(var),入口是块上偏移到必要值的索引。

对不起,我可能看起来不太得体,但我可能回应了之前的评论。(我的答案已更正并扩展)