c++ - 在作为函数参数的句柄上调用 CloseHandle?

标签 c++ winapi

如果句柄被创建为函数参数,它会在函数结束时自行关闭吗?

例如:

int readMem(HANDLE processHandle, int address)
{
    int memValue = 0;

    bool success = ReadProcessMemory(processHandle, (LPVOID)address, &memValue, sizeToReadBytes, NULL);
    if (!success)
        std::wcout << "Memory read failed on address: " << std::hex << address << "\n";

    return memValue;
}

我是否需要在 return 语句之前显式关闭它,还是最好尽可能将它们作为引用传递?

或者我只是误解了所有的句柄?我对 winapi 很陌生。

最佳答案

HANDLE 只是一个 typedefvoid *

Microsoft 明确规定,当您使用完句柄后,请务必使用 CloseHandle 将其关闭。

您的 readMem 函数没有创建句柄,因此在那里关闭它没有意义。

关于c++ - 在作为函数参数的句柄上调用 CloseHandle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35817833/

相关文章:

c++ - 使用流读取复杂结构

c++ - win32下如何设置RichEdit的回调机制

c - 赋值从整数生成指针而不进行强制转换

windows - SetCurrentDirectoryW 中的错误 206

python - 在 GDB、C++ 中调试 OpenCV 矩阵

c++ - C++ 二进制文件如何替换自身?

c++ - 这些哪个更快?

c++ - 测试低带宽网络

c++ - 如何将击键发送到其他进程(例如记事本)?

c - 仅使用 Win32 将 HBITMAP 保存为 *.bmp 文件