Condividi tramite


Dichiarazione di funzioni asincrone

Per dichiarare una funzione RPC come asincrona, dichiarare prima di tutto la funzione come parte di una definizione di interfaccia in un file IDL (Interface Definition Language). L'uso di funzioni RPC asincrone non richiede alcuna modifica speciale al file IDL. L'esempio seguente mostra un file IDL per un'applicazione che usa una funzione asincrona.

[ 
    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);
}

Per tutte le funzioni RPC asincrone usate dall'applicazione, è necessario modificare la dichiarazione delle funzioni asincrone all'interno del file ACF dell'applicazione. Applicare l'attributo [async] a ogni nome di funzione asincrona, come illustrato nell'esempio seguente:

interface AsyncRPC
{
    [async] AsyncFunc();
}

Quando si applica l'attributo [async] nel file ACF, il compilatore MIDL genera automaticamente un parametro handle asincrono aggiuntivo nel codice stub.