草庐IT

asio_handler_invoke

全部标签

c# - P/Invoke [In, Out] 属性对于编码(marshal)处理数组是可选的吗?

假设有一个具有纯C接口(interface)的native函数,如下所示,从nativeDLL导出://NativeDll.cppextern"C"void__stdcallFillArray(intfillValue,intcount,int*data){//AssumeparametersareOK...//Fillthearrayfor(inti=0;i以下P/Invoke工作正常(使用VS2010SP1测试):[DllImport("NativeDll.dll",CallingConvention=CallingConvention.StdCall)]publicstatice

c++ - Boost::asio、共享内存和进程间通信

我有一个应用程序专门使用boost::asio作为输入数据源,因为我们的大多数对象都是基于网络通信的。由于某些特定要求,我们现在还需要能够使用共享内存作为输入法。我已经编写了共享内存组件,它运行得相当好。问题是如何处理从共享内存进程到消费应用程序的数据可以读取的通知——我们需要处理现有输入线程中的数据(使用boost::asio),我们还需要不阻塞等待数据的输入线程。我通过引入一个中间线程来实现这一点,该线程等待共享内存提供程序进程发出的事件信号,然后将完成处理程序发布到输入线程以处理数据读取。这现在也可以工作,但是中间线程的引入意味着在大量情况下,我们在读取数据之前有一个额外的上下文

c++ - 提升在多个线程上运行的 asio strand 和 io_service

我不确定与strands相关的一个细节。假设以下情况:两个独立的对象,每个对象都有自己的链。每条链都与一个通用的io_service相关。每个对象都使用他的strand来发布和包装异步操作。如果我在多个线程上有这个(唯一的)io_service.run()'ing,我不确定是否会发生以下情况:由其中一个对象发布和异步包装的所有操作将非同时执行。因此,与其中一个对象相关的所有操作都将串行执行(发布的操作将按照与发布的顺序相同的顺序执行。包装的异步操作将以未指定的顺序执行,因为它们是异步的但仍在串行执行)。源自不同对象的两个操作(因此从与同一io_service相关的不同链对象发布或包装)

c++ - 使用 boost::asio 发送 Protobuf 消息

我正在尝试使用Google的ProtocolBuffers和boost::asio在C++中破解一个客户端。我的问题是我不知道如何将protobuf消息提供给asio。我所拥有的是://setup*sock-worksPlayerInfoinfo;info.set_name(name);//otherstuff现在我知道以下内容是错误的,但我还是会发布:size_trequest_length=info.ByteSize();boost::asio::write(*sock,boost::asio::buffer(info,request_length));据我所知,我必须将我的消息以

c++ - boost asio deadline_timer

我希望下面的代码打印Hello,world!每5秒,但发生的情况是程序暂停5秒,然后一遍又一遍地打印消息,没有后续暂停。我错过了什么?#include#include#includeusingnamespaceboost::asio;usingnamespacestd;io_serviceio;voidprint(constboost::system::error_code&/*e*/){cout编辑以在下面添加工作代码。谢谢大家。#include#include#include#include#includeusingnamespaceboost::asio;usingnamespa

windows - 设置 mailto : protocol handler programmatically in Windows 8

在Windows8之前,添加mailto:协议(protocol)处理程序的方法很简单(如此处所述RegisterWindowsprogramwiththemailtoprotocolprogrammatically)从Windows8开始,旧方法不再有效。Win8似乎强制执行以下键:HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\URLAssociations\‌MAILTO\UserChoice。所选应用的ProgID似乎也经过哈希处理,无法伪造,至少我无法判断。有没有人对此有可行的方法,或者可以指出一

c++ - Boost asio async_accept 在 Windows 下工作,但在 FreeBSD 下失败。怎么了?

编辑:看起来这不是我的代码而是构建环境。这既好又坏,因为现在我知道代码没问题,但不知道如何调试环境。这里有什么建议吗?请记住,我没有这台计算机的管理员权限。我一直在尝试让简单的代码在FreeBSD下工作。这是从Boost1.64asio调用async_accept不正常的。相同的代码在Windows下工作正常,但在FreeBSD下它接受客户端连接(客户端的连接调用成功)但从不调用它的处理程序。甚至不知道如何处理这个问题。(请注意,与我调用io_service.run()的其他相关问题不同)请帮忙。显示问题的自包含代码:#include#include#includenamespacea

c# - DirectoryEntry.Invoke ("groups",null) 未检索所有组?

我创建了一个WCFWeb服务来从ActiveDirectory返回用户和组信息。它适用于大多数组和用户。我使用directoryEntry.Invoke("groups",null)返回指定用户所属的组。这将返回MOST组。奇怪的是我可以找到任何组并枚举其成员,即使它是我在其成员之一上使用调用查询时丢失的组之一。大多数表现出这种行为的组都启用了Exchange。大多数有问题的用户帐户都是针对联合域中的用户,他们使用我查询的域中的Exchange服务器。我不是要查询联合域中的对象。到目前为止我的理论:某些安全限制不允许通过invoke()枚举所有组,即使我可以查询缺失的组并枚举其成员。i

c++ - 取消后无错误地调用 boost::asio 异步处理程序

我的代码在单个线程中使用boost::asio和io_service来执行各种套接字操作。所有操作都是异步的,每个处理程序都依赖于boost::system::error_code(特别是boost::asio::error::operation_aborted)来确定操作。在我更改逻辑以建立多个并发连接并选择最快的连接之​​前,它一直运行良好。也就是说,当第一个async_read_some处理程序触发时,我取消其他套接字(关闭、关闭-一切)并继续当前的套接字。在95%的情况下,调用其他套接字的读取处理程序时会出现operation_aborted错误。然而有时,这些读取处理程序被调

c++ - ConnectNamedPipe 和 asio overlapped ptr

我命名了使用boostasio编写的管道服务器。服务器创建命名管道并调用ConnectNamedPipe将asiooverlappedptr传递给它。问题是传递给重叠的asio的完成处理程序从未被调用,即在客户端调用CreateFile不会触发传递给ConnectNamedPipe的完成处理程序。我做错了什么?这里是客户端和服务器的完整列表:#define_WIN32_WINNT0x0501#include#include#include#include#include#include#include#include#includestaticconstuint32_tPIPE_OUT