使用重叠结构进行回调
Using overlapped structure for callback?
我有自己的重叠结构,用于使用 IO 完成端口的异步 IO。
现在我收到读/写完成的通知。我可以将 CALLBACK 函数作为重叠结构中的参数传递吗?
这将允许我根据我传递的重叠结构的类型指定各种回调函数
有人
创建从OVERLAPPED
派生的自己的结构:
struct MyOverlapped : OVERLAPPED
{
CALLBACK MyCallback;
};
现在改用这个:
MyOverlapped *o=new MyOverlapped;
o->MyCallback=CallbackHandler;
WriteFile(..,..,MyOverlapped);
然后,当您取回OVERLAPPED
时,可以将其强制转换为派生版本:
MyOverlapped *o=static_cast<MyOverlapped*>(overlapped);
现在您可以访问回调。我猜你正在从对GetQueuedCompletionStatus
的调用中获取OVERLAPPED
实例,你得到的指针实际上将指向你的派生结构。
相关文章:
- 架构决策:返回std::future还是提供回调
- 正在为Xtensa simcall函数编写回调函数
- 在通过 P/Invoke 获取的 C++ 结构上设置 C# 回调
- 共享指针和回调注册的结构.由于我之外的原因调用回调时,原始指针值发生了变化
- 如何使用传递给 C# 代码回调的 C/C++本机结构
- 如何在 c++ 结构中的 void* 变量中调用存储函数(回调)
- 由值传递的结构,在 C -> C++ 回调函数期间损坏 (gcc 4.1)
- 我可以在SERVICE_TABLE_ENTRYA结构中使用成员函数作为回调吗
- 如何在C++中向epoll_event结构传递回调函数指针
- 托管函数在非托管结构(C++、C#)中作为回调函数传递的问题
- 如何使用 boost::bind 将类/结构实例作为参数传递给回调
- 使用重叠结构进行回调
- 将libuv与函数结构一起使用,而不是函数回调
- 继承层次结构中的特定类作为boost::signal2回调中的类型
- 将类回调函数分配给结构
- 发送回调函数从c#到C结构中的dll
- c++到c#回调结构的编组
- 使用x86/x64 C API的c# AnyCPU库-打包结构,调用和回调
- 创建一个回调结构传递给LuaJIT FFI
- c++中实现回调矩阵的数据结构