我目前正在用C/C++为windows mobile编写一个包装器库。我必须实现并导出以下函数:
void start_scanning();
int wait_for_scanning_result();
void stop_scanning();调用start_scanning()来启动扫描过程。wait_for_scanning_result()将等待结果可用并返回结果,而stop_scanning将中止该过程。
我正在使用的库有一个回调函数,该函数在结果可用时执行。
void on_scanning_result(int result)
{
/* My code goes here */
}不幸的是,我必须实现上面的函数,所以我的计划是这样解决它:
void on_scanning_result(int result)
{
scan_result_available = 1;
scan_result = result;
}
int wait_for_scanning_result()
{
/* ... wait until scan_result_available == 1 */
return scan_result;
}我不知道如何在windows/C中做到这一点,如果有人能帮助我或告诉我必须使用哪些函数来完成这项工作,我将非常高兴。
发布于 2009-09-14 11:20:46
您可以使用windows Synchronization Functions。
基本上你要做的就是:
* CreateEvent -创建事件
* WaitForSingleObject -等待此事件发出信号
* SetEvent -发出事件信号
发布于 2009-09-14 10:59:03
我希望是这样的:
//declare as volatile to inform C that another thread
//may change the value
volatile int scan_result_available;
int wait_for_scanning_result()
{
while(scan_result_available == 0) {
//do nothing
}
return scan_result;
}您应该找出回调是在另一个线程中运行,还是在同一线程中异步运行,或者库是否需要一些其他方法才能允许回调运行。
https://stackoverflow.com/questions/1420825
复制相似问题