1

我目前正在用 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 中执行此操作,如果有人可以帮助我或告诉我必须使用哪些功能来完成此操作,我将非常高兴。

4

2 回答 2

4

您可以使用 windows同步功能

基本上你所要做的就是:
* CreateEvent - 创建一个事件
* WaitForSingleObject - 等待这个事件发出信号
* SetEvent - 发出事件信号

于 2009-09-14T11:20:45.793 回答
0

像这样的东西,我希望:

//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;
}

您应该了解回调是在另一个线程中运行,还是在同一个线程中异步运行,或者库是否需要其他方式来允许回调运行。

于 2009-09-14T10:59:03.130 回答