0

对于使用 IO 完成端口的异步 IO,我有自己的重叠结构。

现在我收到读/写完成的通知。我可以将 CALLBACK 函数作为重叠结构中的参数传递吗?

这将允许我根据我传递的重叠结构的类型指定各种回调函数

有人对此有任何运气吗?

4

1 回答 1

4

创建你自己的结构派生自OVERLAPPED

struct MyOverlapped : OVERLAPPED
{
  CALLBACK MyCallback;
};

现在改用这个:

MyOverlapped *o=new MyOverlapped;
o->MyCallback=CallbackHandler;

WriteFile(..,..,MyOverlapped);

然后,当您OVERLAPPED返回时,您可以将其转换为派生版本:

MyOverlapped *o=static_cast<MyOverlapped*>(overlapped);

现在您可以访问回调。我猜你正在OVERLAPPED从调用中获取实例,返回GetQueuedCompletionStatus的指针实际上将指向你的派生结构。

于 2013-11-22T10:52:28.820 回答