Nsis FileFunc.nsh中的${GetDrives}是否清除从回调中创建的堆栈值?

Nsis FileFunc.nsh中的${GetDrives}是否清除从回调中创建的堆栈值?,nsis,Nsis,为什么当${GetDrives}调用stack\u test函数时,堆栈不保留“Hello”,但当使用调用stack\u test时,堆栈上有“Hello” 我希望看到: $0 = Hello $0 = Hello $0 = Goodbye $0 = Hello 但我看到的是: $0 = Hello $0 = Hello $0 = Goodbye $0 = Hello 下面是我正在使用的测试用例: !include FileFunc.nsh Name stack_test OutFil

为什么当
${GetDrives}
调用
stack\u test
函数时,堆栈不保留“Hello”,但当使用
调用stack\u test
时,堆栈上有“Hello”

我希望看到:

$0 = Hello
$0 = Hello
$0 = Goodbye
$0 = Hello
但我看到的是:

$0 = Hello
$0 = Hello
$0 = Goodbye
$0 = Hello
下面是我正在使用的测试用例:

!include FileFunc.nsh

Name stack_test
OutFile stack_test.exe
ShowInstDetails show

Page instfiles


Function stack_test
    Push "Hello"
FunctionEnd

Section section1
    Push "Goodbye"
    ${GetDrives} "HDD" stack_test
    Pop $0
    DetailPrint "$$0 = $0"

    Push "Goodbye"
    Call stack_test
    Pop $0
    DetailPrint "$$0 = $0"
SectionEnd

GetDrive需要回调函数将某些内容推送到堆栈中,并在回调返回后弹出。如果按下“StopGetDrives”,则驱动器枚举将中止,否则,如果有更多驱动器,它将继续

如果堆栈更改位于这样的回调函数中,则不应期望它们继续存在,在这种情况下,推送的数量取决于最终用户有多少驱动器