我正在尝试使用Windows API的RegSetKeySecurity()
功能,但pSecurityDescriptor
参数是指针。 Inno Setup中的“指针”(PVOID
)数据类型等价是什么?
答案 0 :(得分:2)
有点迟到了。的xD 要解决此问题,必须使用关键字“var”将函数参数声明为变量。这是Pascal函数参数中变量的声明指针的标准方法。
哈,我会把思想带到逻辑的结局。首先,在32位的所有情况下InnoSetup的执行过程,也就是说,没有人阻止声明新类型(“PVOID”或“Pointer”)相应的维度(类型PVOID = Cardinal; Pointer = Integer;等等)而且只是为了方便感知。其次,在外部API函数的公告中,通过变量(通过关键字“var”)替换索引的情况绰绰有余。第三,由于Pascal脚本中特定的内存组织,一些API函数无法解决这些变量,那么你无人阻止声明内存工作函数的外部函数(GetMemory,FreeMemory,FillMemory +来自Kernel32.dll的GetMemory = AllocMemory。 GetMemory只返回内存站点上的索引。在第四个中,为了从带有索引的块中提取数据,没有人阻止使用来自同一Kernel32.dll的CopyMemory,StringCchCopyA,lstrcpynA等复制函数,其中输出参数将是必要维度的变量(var),并且入口,块上的索引,偏移到必要的值。答案 1 :(得分:0)
Inno Setup中使用的Pascal Scripting似乎根本不支持指针。也许您可以传递cardinal
(如果是32位),或者您可以在外部DLL中编写代码并从Inno安装程序安装程序中调用它。