Nsis 这条线是什么意思?(系统:调用getfreediskex)
如果我是对的,r0:directoryname,free bytes,number of bytes,number of free bytes,但是r0,,,r1实际上是什么意思呢?Nsis 这条线是什么意思?(系统:调用getfreediskex),nsis,Nsis,如果我是对的,r0:directoryname,free bytes,number of bytes,number of free bytes,但是r0,,,r1实际上是什么意思呢? 谢谢你的帮助 鉴于$0。$9和$R0。$R9是,系统插件使用符号R0->R9(resp.R10。R19或R0。R9)来指定$0。使用系统API或其他dll函数调用注册为源和/或目标 如果不需要,源或目标之一也可以是点() 查找文档中的“调用函数”和“可用源和目标”部分。${…}是一个定义,因此当您想知道某些事情是如
谢谢你的帮助 鉴于
$0
。$9
和$R0
。$R9
是,系统插件使用符号R0
->R9
(resp.R10
。R19
或R0
。R9
)来指定$0
。使用系统API或其他dll函数调用注册为源和/或目标
如果不需要,源或目标之一也可以是点(
)
查找文档中的“调用函数”和“可用源和目标”部分。${…}是一个定义,因此当您想知道某些事情是如何工作的时,您应该做的第一件事是找出定义的作用:!错误“${sysGetDiskFreeSpaceEx}”
将打印!错误:kernel32::GetDiskFreeSpaceEx(t,*l,*l,*l)i
在中,您将发现此金块:
参数、返回和选项可以在一次Get/Call中重复多次
线路。当重复时,很多东西可以省略,而且只有你想要的
可以使用更改。类型、来源和/或目的地可以省略
每个参数,甚至返回值。可以添加或删除选项
远离的。这允许您定义函数原型并保存在
一些打字
因此${sysGetDiskFreeSpaceEx}是一个原型,它指定参数计数和类型,但不指定参数源和目标
参数语法是什么
参数列表用逗号分隔。每个参数都是组合的
共有三个值:类型、源和目标。类型可以是整数,
字符串等。作为参数值来源的源可以
是NSIS寄存器($0,$1,$INSTDIR)、NSIS堆栈、混凝土
值(5,“测试”等)或无值(空)。目的地,即
调用返回后参数值的目标可以是
NSIS寄存器、NSIS堆栈或无,这意味着没有输出
必修的。源或目标之一也可以是点(`.')
如果不需要的话
我们现在可以展开整个调用!错误“System::Call“${sysGetDiskFreeSpaceEx}(r0,,.r1)”
这给了我们!错误:System::Call'kernel32::GetDiskFreeSpaceEx(t,*l,*l,*l)i(r0,,.r1)
如果我们合并重复的参数定义,就会得到kernel32::GetDiskFreeSpaceEx(tr0,*l,*l,*l.r1)i
因此,参数1是一个字符串(MSDN上的LPTSTR),源代码为r0(NSIS寄存器$0)
参数2和3没有源和目标,只有参数2使用了一个。(dot)但最终结果相同;没有输入也没有输出。这里唯一重要的部分是*l,因此系统插件知道参数有多大
最后一个参数是指向64位数字(l)的指针(*),没有输入(.),我们请求将输出存储在$1(r1)中
系统插件调用本机Windows API,因此查看MSDN以了解您调用的内容通常很有用
System::Call '${sysGetDiskFreeSpaceEx}(r0,.,,.r1)'