首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将线程函数的地址作为回调传递给winapi?

将线程函数的地址作为回调传递给WinAPI,需要确保线程函数的签名与WinAPI期望的回调函数签名相匹配。以下是一个简单的示例,展示了如何将线程函数的地址作为回调传递给WinAPI:

代码语言:cpp
复制
#include<windows.h>
#include<iostream>

DWORD WINAPI ThreadFunction(LPVOID lpParam) {
    std::cout << "线程函数正在运行..."<< std::endl;
    return 0;
}

int main() {
    DWORD threadId;
    HANDLE hThread = CreateThread(
        NULL,                   // 默认安全属性
        0,                      // 默认堆栈大小
        ThreadFunction,          // 线程函数的地址
        NULL,                   // 传递给线程函数的参数
        0,                      // 使用默认创建标志
        &threadId);             // 接收线程ID的变量地址

    if (hThread == NULL) {
        std::cerr << "创建线程失败,错误代码:"<< GetLastError()<< std::endl;
        return 1;
    }

    // 等待线程完成
    WaitForSingleObject(hThread, INFINITE);

    // 关闭线程句柄
    CloseHandle(hThread);

    return 0;
}

在这个示例中,我们定义了一个名为ThreadFunction的线程函数,并将其地址作为参数传递给CreateThread函数。CreateThread函数会创建一个新的线程,并在该线程中运行ThreadFunction函数。

注意,线程函数的签名必须与WinAPI期望的回调函数签名相匹配。在本例中,线程函数的签名为DWORD WINAPI ThreadFunction(LPVOID lpParam),这与WinAPI期望的回调函数签名相匹配。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券