Lua Alien - Win32 API WaitForSingleObject 函数中定义的变量

MrH*_*hma 4 winapi lua lua-alien

我使用Alien for Lua来引用WaitForSingleObject 函数Windows Kernel32.dll 中。

我对 Windows 编程很陌生,所以我的问题是关于WaitForSingleObject 文档引用的以下#define d 变量:

如果 dwMilliseconds 是INFINITE,则该函数将仅在对象收到信号时返回。

什么是无限值?我自然会假设它是-1,但我找不到在任何地方记录的。

此外,在下表中,它提到了十六进制的返回值,但我很困惑为什么它们L在最后一位数字后面有一个字符。这会像将其转换为 Long 一样简单吗?

图表

我问的原因是因为 Lua 使用Number 数据类型,所以我不确定是否应该通过十六进制数字 (0-F) 或十进制数字 (0-9) 检查这个返回值?

MrH*_*hma 5

我想到只是打开一个 C++ 应用程序并打印出这些值,所以我就这样做了:

#include <windows.h>
#include <process.h>
#include <iostream>

int main()
{
    std::cout << INFINITE;
    std::cout << WAIT_OBJECT_0;
    std::cout << WAIT_ABANDONED;
    std::cout << WAIT_TIMEOUT;
    std::cout << WAIT_FAILED;
    system("pause");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

根据我的发现,最终的 Lua 结果是:

local INFINITE = 4294967295
local WAIT_OBJECT_0 = 0
local WAIT_ABANDONED = 128
local WAIT_TIMEOUT = 258
local WAIT_FAILED = 4294967295
Run Code Online (Sandbox Code Playgroud)

  • `INFINTIE` 使用无符号整数类型。当解释为有符号整数类型时,`4294967295` 与 `-1` 相同。 (4认同)