声明异步函数

若要将 RPC 函数声明为异步函数,请先在接口定义语言 (IDL) 文件中将该函数声明为接口定义的一部分。 使用异步 RPC 函数不需要对 IDL 文件进行任何特殊更改。 以下示例演示使用一个异步函数的应用程序的 IDL 文件。

[ 
    uuid (7f6c4340-eb67-11d1-b9d7-00c04fad9a3b),
    version(1.0),
    pointer_default(unique)
]
interface AsyncRPC
{
    const long DEFAULT_ASYNC_DELAY        = 10000;
    const short APP_ERROR                 = -1;
    const char* DEFAULT_PROTOCOL_SEQUENCE = "ncacn_ip_tcp";
    const char* DEFAULT_ENDPOINT          = "8765";
 
    void NonAsyncFunc(handle_t hBinding,
                      [in, string] unsigned char * pszMessage);
 
    void AsyncFunc(handle_t hBinding,
                   [in] unsigned long nAsychDelay);
 
    void Shutdown(handle_t hBinding);
}

对于应用程序使用的所有异步 RPC 函数,需要在应用程序的 ACF 文件中修改异步函数的声明。 将 [async] 属性应用于每个异步函数名称,如以下示例所示:

interface AsyncRPC
{
    [async] AsyncFunc();
}

在 ACF 文件中应用 [async] 属性时,MIDL 编译器会在存根代码中自动生成其他异步句柄参数。