返回值类型的规范

参照 Windows 对程序错误的处理中,函数常用返回值的设置,作为C++开发,也应该参照这一标准。

当调用一个 Windows 函数时,它首先要检验传递给它的的各个参数的有效性,然后再设法

执行任务。如果传递了一个无效参数,或者由于某种原因无法执行这项操作,那么操作系统就

会返回一个值,指明该函数在某种程度上运行失败了。表 1 - 1列出了大多数 Windows 函数使用

的返回值的数据类型

Windows 函数常用的返回值类型
数据类型 表示失败的值
void 该函数的运行不可能失败。Windows 函数的返回值类型很少是 void
bool 如果函数运行失败,那么返回值是0,否则返回的是非0值。最好对返回值进行测试,以确定它是0还是非0。不要测试返回值是否为TRUE
HANDLE 如果函数运行失败,则返回值通常是 NULL,否则返回值为 HANDLE,用于标识你可以操作的一个对象。注意,有些函数会返回一个句柄值 INVALID_ HANDLE_VALUE,它被定义为 -1。函数的Platform SDK 文档将会清楚地说明该函数运行失败时返回的是 NULL 还是 INVALID_HANDLE_VALID
PVOID 如果函数运行失败,则返回值是 NULL,否则返回PVOID,以标识数据块的内存地址
LONG/DWORD 这是个难以处理的值。返回数量的函数通常返回LONG或DWORD。如果由于某种原因,函数无法对想要进行计数的对象进行计数,那么该函数通常返回 0或-1(根据函数而定)。如果调用的函数反悔了LONG/DWORD,那么需要阅读相应的函数说明,以确保能正确检查潜在的错误。

一个 Windows 函数返回的错误代码对了解该函数为什么会运行失败尝尝很有用。

从系统内部来讲,当一个Windows函数检测到一个错误时,它会使用一个称为线程本地存储器(thread-local storage)的机制,将相应的错误代码号码与调用的线程关联起来。这将使线程能够互相独立运行,而不会影响各自的错误代码。当函数返回时,它的返回值就能指明一个错误已经发生。若要确定这是个什么错误,则需要调用 GetLastError 函数:

1
DWORD GetLastError

返回值类型的规范
https://hodlyounger.github.io/D_立志博览群书/《Windows核心编程》/《Windows核心编程》1-1-返回值类型的规范/
作者
mingming
发布于
2023年10月27日
许可协议