对于使用 IO 完成端口的异步 IO,我有自己的重叠结构。
现在我收到读/写完成的通知。我可以将 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);
现在您可以访问回调。我猜你正在OVERLAPPED
从调用中获取实例,返回GetQueuedCompletionStatus
的指针实际上将指向你的派生结构。