Nim lang 中的 PTR DWORD

PTR DWORD in nim lang

这段代码有什么问题:

import winim


let CurrentProcessID = GetCurrentProcessId()
var SessionID :DWORD
let result1 = ProcessIdToSessionId(CurrentProcessID,cast [ptr DWORD](SessionID))
echo SessionID

编译命令:

nim c -d=danger -d=mingw -d=strip --passc=-flto --passl=-flto --opt=size --app=console --cpu=amd64 --out=test.exe test.nim

输出输入 Windows10:

0

但正确答案是:

1

ProcessIdToSessionId 需要一个指向要写入的变量的指针,但是您将变量 本身 的值作为指针传递,这就是它失败的原因。

正确的代码应该是这样的(未经测试):

import winim

let CurrentProcessID = GetCurrentProcessId()
var SessionID: DWORD
let result1 = ProcessIdToSessionId(CurrentProcessID, addr SessionID)
echo SessionID