共用方式為


宣告非同步函式

若要將 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 編譯器會自動在存根程式碼中產生額外的非同步控制碼參數。