使用重叠结构进行回调

Using overlapped structure for callback?

本文关键字:回调 结构 重叠      更新时间:2023-10-16

我有自己的重叠结构,用于使用 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实例,你得到的指针实际上将指向你的派生结构。